PodSecurityPolicy(简称PSP)从Kubenetes 1.21版本开始被标记为弃用(deprecated)状态,为此云容器引擎提供了基于OPA策略和gatekeeper准入控制器,扩展了相应的策略治理状态统计和日志上报检索等能力,同时内置了种类丰富的策略治理规则库,在规则配置上也更加灵活简单,帮助企业安全运维管理人员更好的使用策略治理相关能力。

操作步骤
安装容器安全策略插件 cube-security
1、 选择指定容器集群,在菜单栏【安全管理】中选择【策略管理】。
2、 安装cube-security插件,插件安装成功后即可使用该功能。
查看集群当前策略治理状态
对于安装了策略治理相关组件的集群,您可根据以下操作查看集群当前策略治理状态。
1、选择指定容器集群,在菜单栏【安全管理】中选择【策略管理】。
2、选择【策略总览】Tab页即可查看集群当前策略治理状态,包括:策略开启总览、近7天拦截和告警结果统计。
创建策略实例
您可根据以下操作在指定集群中创建策略实例。
1、选择指定容器集群,在菜单栏【安全管理】中选择【策略管理】。
2、选择【我的策略】Tab页单击【创建策略实例】。
3、相关策略参数如下,配置完成后点击【确定】即可。
| 参数 | 说明 |
|---|---|
| 策略类型 | - Infra:基础设施层资源相关的策略类型。 - CIS-K8s:基于CIS等K8s合规规范定制的策略类型。 - PSP:替代Pod Security Policy(PSP)能力的策略类型。 - K8s-general:基于最佳安全实践对K8s资源配置进行安全加固约束的通用策略类型。 |
| 实施动作 | - 拦截:违反策略规则约束的指定资源部署会被拦截。 - 告警:违反策略规则约束的指定资源仍旧可以部署,只会产生对应违规审计的告警日志。 |
| 策略名称 | 根据选择的策略类型,在策略名称下拉列表中选择需要部署的策略模板名称。 |
| 参数配置 | - 如果参数配置输入框中默认为空,说明规则不需要进行参数配置。 - 如果输入框中包含需要配置的参数模板,则请参考策略参数说明按照指定格式配置参数。 |
查看策略列表和集群中已部署的策略实例
您可根据以下操作查看策略列表和集群中已部署的策略实例总数。
1、选择指定容器集群,在菜单栏【安全管理】中选择【策略管理】。
2、选择【我的策略】Tab页查看集群所有已部署的策略以及策略对应的策略实例个数。
修改策略实例
您可根据以下操作修改指定集群已经部署的策略实例。
1、选择指定容器集群,在菜单栏【安全管理】中选择【策略管理】。
2、在【我的策略】Tab页中选择目标策略,单击【编辑】在跳出的弹窗中修改相关配置即可。
删除策略实例
您可根据以下操作修改指定集群中的策略实例。
1、选择指定容器集群,在菜单栏【安全管理】中选择【策略管理】。
2、在【我的策略】Tab页中选择目标策略,单击【删除】即可删除该策略在集群中部署的所有实例。
策略参数说明
Category | Policy | Description | Severity |
|---|---|---|---|
| Category | CCSENoEnvVarSecrets | 限制Secret以secretKeyRef的形式挂载到应用Pod环境变量中。 | medium |
| CCSEPodsRequireSecurityContext | 限制Pod中所有容器必须配置securitycontext字段。 | low | |
| CCSERestrictNamespaces | 限制资源部署在集群指定的命名空间中。 | low | |
| CCSERestrictRoleBindings | 限制指定命名空间下的rolebinding使用指定范围内的Role或Clusterrole。 | medium | |
| Infra | CCSEBlockProcessNamespaceSharing | 限制在集群指定范围部署的应用中使用shareProcessNamespace。 | high |
| CCSEEmptyDirHasSizeLimit | 要求emptyDir类型的Volume必须指定sizelimit。 | low | |
| CCSELocalStorageRequireSafeToEvict | 限制部署在集群指定范围内的Pod必须具有 “cluster-autoscaler.kubernetes.io/safe-to-evict”: “true” 注释标签。默认情况下autoscaler在集群自动伸缩时不会驱逐使用HostPath或EmptyDir卷的Pod。为了允许驱逐这些Pod,必须在Pod上添加该注释标签。 | low | |
| CCSESASMaliciousImage | Requires container images is safe and scanned by SAS. | high | |
| CCSEOSSStorageLocationConstraint | Restricts location of oss storage in cluster. | low | |
| K8s-general | CCSEAllowedRepos | 限制在集群指定范围部署的应用Pod中拉取白名单列表外的镜像。 | high |
| CCSEBlockAutoinjectServiceEnv | 要求在应用中配置enableServiceLinks: false防止在Pod环境变量中透出服务IP。 | low | |
| CCSEBlockAutomountToken | 要求在应用中设置automountServiceAccountToken: false字段防止自动挂载serviceaccount。 | high | |
| CCSEBlockEphemeralContainer | 限制在集群指定范围的应用Pod中启动临时容器。 | medium | |
| CCSEBlockLoadBalancer | 限制在集群指定范围内部署LoadBalancer类型的Service。 | high | |
| CCSEBlockNodePort | 限制在集群指定范围内使用NodePort类型的Service。 | high | |
| CCSEContainerLimits | 要求集群指定范围的应用Pod配置资源limits。 | low | |
| CCSEExternalIPs | 限制在集群指定范围内的Services实例使用白名单范围之外的externalIPs。 | high | |
| CCSEImageDigests | 限制在集群指定范围内部署不符合digest格式的镜像。 | low | |
| CCSERequiredLabels | 限制在集群指定范围内部署没有指定范式label标签的应用。 | low | |
| CCSERequiredProbes | 限制在集群指定范围内部署的Pod配置指定类型的readinessProbe和livenessProbe。 | medium | |
| CCSECheckNginxPath | 限制在Ingress实例的spec.rules[].http.paths[].path字段中使用危险配置。Ingress-nginx 1.2.1以下版本建议开启该策略。 | high | |
| CCSECheckNginxAnnotation | 限制在Ingress实例的metadata.annotations字段中使用危险配置。Ingress-nginx 1.2.1以下版本建议开启该策略。 | high |