[zh-cn] improve security/pod-security-policy.md
This commit is contained in:
		
							parent
							
								
									e6868ba8d3
								
							
						
					
					
						commit
						9c3cc2b00d
					
				|  | @ -50,11 +50,11 @@ administrator to control the following: | |||
| --> | ||||
| ## 什么是 Pod 安全策略?   {#what-is-a-pod-security-policy} | ||||
| 
 | ||||
| _Pod 安全策略(Pod Security Policy)_ 是集群级别的资源,它能够控制 Pod 规约 | ||||
| 中与安全性相关的各个方面。 | ||||
| [PodSecurityPolicy](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#podsecuritypolicy-v1beta1-policy) | ||||
| **Pod 安全策略(Pod Security Policy)**是集群级别的资源,它能够控制 Pod | ||||
| 规约中与安全性相关的各个方面。 | ||||
| [PodSecurityPolicy](/zh-cn/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#podsecuritypolicy-v1beta1-policy) | ||||
| 对象定义了一组 Pod 运行时必须遵循的条件及相关字段的默认值,只有 Pod 满足这些条件才会被系统接受。 | ||||
| Pod 安全策略允许管理员控制如下方面: | ||||
| Pod 安全策略允许管理员控制如下操作: | ||||
| 
 | ||||
| <!-- | ||||
| | Control Aspect                                      | Field Names                                 | | ||||
|  | @ -80,20 +80,20 @@ Pod 安全策略允许管理员控制如下方面: | |||
| | ----------------------------------- | --------------------------------- | | ||||
| | 运行特权容器                        | [`privileged`](#privileged) | | ||||
| | 使用宿主名字空间                    | [`hostPID`、`hostIPC`](#host-namespaces) | | ||||
| | 使用宿主的网络和端口                | [`hostNetwork`, `hostPorts`](#host-namespaces) | | ||||
| | 使用宿主的网络和端口                | [`hostNetwork`、`hostPorts`](#host-namespaces) | | ||||
| | 控制卷类型的使用                    | [`volumes`](#volumes-and-file-systems) | | ||||
| | 使用宿主文件系统                    | [`allowedHostPaths`](#volumes-and-file-systems) | | ||||
| | 允许使用特定的 FlexVolume 驱动      | [`allowedFlexVolumes`](#flexvolume-drivers) | | ||||
| | 分配拥有 Pod 卷的 FSGroup 账号      | [`fsGroup`](#volumes-and-file-systems)      | | ||||
| | 以只读方式访问根文件系统            | [`readOnlyRootFilesystem`](#volumes-and-file-systems) | | ||||
| | 设置容器的用户和组 ID               | [`runAsUser`, `runAsGroup`, `supplementalGroups`](#users-and-groups) | | ||||
| | 限制 root 账号特权级提升             | [`allowPrivilegeEscalation`, `defaultAllowPrivilegeEscalation`](#privilege-escalation) | | ||||
| | Linux 权能字(Capabilities)        | [`defaultAddCapabilities`, `requiredDropCapabilities`, `allowedCapabilities`](#capabilities) | | ||||
| | 设置容器的用户和组 ID               | [`runAsUser`、`runAsGroup`、`supplementalGroups`](#users-and-groups) | | ||||
| | 限制 root 账号特权级提升             | [`allowPrivilegeEscalation`、`defaultAllowPrivilegeEscalation`](#privilege-escalation) | | ||||
| | Linux 权能字(Capabilities)        | [`defaultAddCapabilities`、`requiredDropCapabilities`、`allowedCapabilities`](#capabilities) | | ||||
| | 设置容器的 SELinux 上下文           | [`seLinux`](#selinux)                       | | ||||
| | 指定容器可以挂载的 proc 类型        | [`allowedProcMountTypes`](#allowedprocmounttypes) | | ||||
| | 指定容器使用的 AppArmor 模版        | [annotations](#apparmor)                    | | ||||
| | 指定容器使用的 seccomp 模版         | [annotations](#seccomp)                     | | ||||
| | 指定容器使用的 sysctl 模版          | [`forbiddenSysctls`,`allowedUnsafeSysctls`](#sysctl)  |  | ||||
| | 指定容器使用的 AppArmor 模板        | [annotations](#apparmor)                    | | ||||
| | 指定容器使用的 seccomp 模板         | [annotations](#seccomp)                     | | ||||
| | 指定容器使用的 sysctl 模板          | [`forbiddenSysctls`、`allowedUnsafeSysctls`](#sysctl)  |  | ||||
| 
 | ||||
| <!-- | ||||
| ## Enabling Pod Security Policies | ||||
|  | @ -109,7 +109,7 @@ cluster. | |||
| 
 | ||||
| Pod 安全策略实现为一种可选的[准入控制器](/zh-cn/docs/reference/access-authn-authz/admission-controllers/#podsecuritypolicy)。 | ||||
| [启用了准入控制器](/zh-cn/docs/reference/access-authn-authz/admission-controllers/#how-do-i-turn-on-an-admission-control-plug-in)即可强制实施 | ||||
| Pod 安全策略,不过如果没有授权认可策略之前即启用准入控制器 **将导致集群中无法创建任何 Pod**。 | ||||
| Pod 安全策略,不过如果没有授权认可策略之前即启用准入控制器**将导致集群中无法创建任何 Pod**。 | ||||
| 
 | ||||
| <!-- | ||||
| Since the pod security policy API (`policy/v1beta1/podsecuritypolicy`) is | ||||
|  | @ -117,8 +117,8 @@ enabled independently of the admission controller, for existing clusters it is | |||
| recommended that policies are added and authorized before enabling the admission | ||||
| controller. | ||||
| --> | ||||
| 由于 Pod 安全策略 API(`policy/v1beta1/podsecuritypolicy`)是独立于准入控制器 | ||||
| 来启用的,对于现有集群而言,建议在启用准入控制器之前先添加策略并对其授权。 | ||||
| 由于 Pod 安全策略 API(`policy/v1beta1/podsecuritypolicy`)是独立于准入控制器来启用的, | ||||
| 对于现有集群而言,建议在启用准入控制器之前先添加策略并对其授权。 | ||||
| 
 | ||||
| <!-- | ||||
| ## Authorizing Policies | ||||
|  | @ -133,7 +133,7 @@ must be authorized to use the policy, by allowing the `use` verb on the policy. | |||
| PodSecurityPolicy 资源被创建时,并不执行任何操作。为了使用该资源, | ||||
| 需要对发出请求的用户或者目标 Pod | ||||
| 的[服务账号](/zh-cn/docs/tasks/configure-pod-container/configure-service-account/)授权, | ||||
| 通过允许其对策略执行 `use` 动词允许其使用该策略。 | ||||
| 通过允许其对策略执行 `use` 动作,以允许其使用该策略。 | ||||
| 
 | ||||
| <!-- | ||||
| Most Kubernetes pods are not created directly by users. Instead, they are | ||||
|  | @ -148,8 +148,8 @@ pod's service account (see [example](#run-another-pod)). | |||
| 大多数 Kubernetes Pod 不是由用户直接创建的。相反,这些 Pod 是由 | ||||
| [Deployment](/zh-cn/docs/concepts/workloads/controllers/deployment/)、 | ||||
| [ReplicaSet](/zh-cn/docs/concepts/workloads/controllers/replicaset/) | ||||
| 或者经由控制器管理器模版化的控制器创建。 | ||||
| 赋予控制器访问策略的权限意味着对应控制器所创建的 *所有* Pod 都可访问策略。 | ||||
| 或者经由控制器管理器模板化的控制器创建。 | ||||
| 赋予控制器访问策略的权限意味着对应控制器所创建的**所有** Pod 都可访问策略。 | ||||
| 因此,对策略进行授权的优先方案是为 Pod 的服务账号授予访问权限 | ||||
| (参见[示例](#run-another-pod))。 | ||||
| 
 | ||||
|  | @ -716,8 +716,7 @@ rolebinding "default:psp:unprivileged" created | |||
| Now if you give it a minute to retry, the replicaset-controller should | ||||
| eventually succeed in creating the pod: | ||||
| --> | ||||
| 现在如果你给 ReplicaSet 控制器一分钟的时间来重试,该控制器最终将能够 | ||||
| 成功地创建 Pod: | ||||
| 现在如果你给 ReplicaSet 控制器一分钟的时间来重试,该控制器最终将能够成功地创建 Pod: | ||||
| 
 | ||||
| ```shell | ||||
| kubectl-user get pods --watch | ||||
|  | @ -850,7 +849,7 @@ and `max`(inclusive). Defaults to no allowed host ports. | |||
| 此类授权将允许 Pod 访问本地回路(loopback)设备、在本地主机(localhost) | ||||
| 上监听的服务、还可能用来监听同一节点上其他 Pod 的网络活动。 | ||||
| 
 | ||||
| **HostPorts** -提供可以在宿主网络名字空间中可使用的端口范围列表。  | ||||
| **HostPorts** - 提供可以在宿主网络名字空间中可使用的端口范围列表。 | ||||
| 该属性定义为一组 `HostPortRange` 对象的列表,每个对象中包含 | ||||
| `min`(含)与 `max`(含)值的设置。 | ||||
| 默认不允许访问宿主端口。 | ||||
|  | @ -906,12 +905,12 @@ PodSecurityPolicy 并不限制可以被 `PersistentVolumeClaim` 所引用的 | |||
| --> | ||||
| **FSGroup** - 控制应用到某些卷上的附加用户组。 | ||||
| 
 | ||||
| - *MustRunAs* - 要求至少指定一个 `range`。 | ||||
| - **MustRunAs** - 要求至少指定一个 `range`。 | ||||
|   使用范围中的最小值作为默认值。所有 range 值都会被用来执行验证。 | ||||
| - *MayRunAs* - 要求至少指定一个 `range`。 | ||||
| - **MayRunAs** - 要求至少指定一个 `range`。 | ||||
|   允许不设置 `FSGroups`,且无默认值。 | ||||
|   如果 `FSGroup` 被设置,则所有 range 值都会被用来执行验证检查。 | ||||
| - *RunAsAny* - 不提供默认值。允许设置任意 `fsGroup` ID 值。 | ||||
| - **RunAsAny** - 不提供默认值。允许设置任意 `fsGroup` ID 值。 | ||||
| 
 | ||||
| <!-- | ||||
| **AllowedHostPaths** - This specifies a list of host paths that are allowed | ||||
|  | @ -1042,15 +1041,15 @@ spec: | |||
| 
 | ||||
| **RunAsUser** - 控制使用哪个用户 ID 来运行容器。 | ||||
| 
 | ||||
| - *MustRunAs* - 必须至少设置一个 `range`。使用该范围内的第一个值作为默认值。 | ||||
| - **MustRunAs** - 必须至少设置一个 `range`。使用该范围内的第一个值作为默认值。 | ||||
|   所有范围值都会被验证检查。 | ||||
| 
 | ||||
| - *MustRunAsNonRoot* - 要求提交的 Pod 具有非零 `runAsUser` 值,或在镜像中 | ||||
| - **MustRunAsNonRoot** - 要求提交的 Pod 具有非零 `runAsUser` 值,或在镜像中 | ||||
|   (使用 UID 数值)定义了 `USER` 环境变量。 | ||||
|   如果 Pod 既没有设置 `runAsNonRoot`,也没有设置 `runAsUser`,则该 Pod | ||||
|   会被修改以设置 `runAsNonRoot=true`,从而要求容器通过 `USER` 指令给出非零的数值形式的用户 ID。 | ||||
|   此配置没有默认值。采用此配置时,强烈建议设置 `allowPrivilegeEscalation=false`。 | ||||
| - *RunAsAny* - 没有提供默认值。允许指定任何 `runAsUser` 配置。 | ||||
| - **RunAsAny** - 没有提供默认值。允许指定任何 `runAsUser` 配置。 | ||||
| 
 | ||||
| <!-- | ||||
| **RunAsGroup** - Controls which primary group ID the containers are run with. | ||||
|  | @ -1063,11 +1062,11 @@ spec: | |||
| --> | ||||
| **RunAsGroup** - 控制运行容器时使用的主用户组 ID。 | ||||
| 
 | ||||
| - *MustRunAs* - 要求至少指定一个 `range` 值。第一个范围中的最小值作为默认值。 | ||||
| - **MustRunAs** - 要求至少指定一个 `range` 值。第一个范围中的最小值作为默认值。 | ||||
|   所有范围值都被用来执行验证检查。 | ||||
| - *MayRunAs* - 不要求设置 `RunAsGroup`。 | ||||
| - **MayRunAs** - 不要求设置 `RunAsGroup`。 | ||||
|   不过,如果指定了 `RunAsGroup` 被设置,所设置值必须处于所定义的范围内。 | ||||
| - *RunAsAny* - 未指定默认值。允许 `runAsGroup` 设置任何值。 | ||||
| - **RunAsAny** - 未指定默认值。允许 `runAsGroup` 设置任何值。 | ||||
| 
 | ||||
| <!-- | ||||
| **SupplementalGroups** - Controls which group IDs containers add. | ||||
|  | @ -1082,12 +1081,12 @@ spec: | |||
| --> | ||||
| **SupplementalGroups** - 控制容器可以添加的组 ID。 | ||||
| 
 | ||||
| - *MustRunAs* - 要求至少指定一个 `range` 值。第一个范围中的最小值用作默认值。 | ||||
| - **MustRunAs** - 要求至少指定一个 `range` 值。第一个范围中的最小值用作默认值。 | ||||
|   所有范围值都被用来执行验证检查。 | ||||
| - *MayRunAs* - 要求至少指定一个 `range` 值。 | ||||
| - **MayRunAs** - 要求至少指定一个 `range` 值。 | ||||
|   允许不指定 `supplementalGroups` 且不设置默认值。 | ||||
|   如果 `supplementalGroups` 被设置,则所有 range 值都被用来执行验证检查。 | ||||
| - *RunAsAny* - 未指定默认值。允许为 `supplementalGroups` 设置任何值。 | ||||
| - **RunAsAny** - 未指定默认值。允许为 `supplementalGroups` 设置任何值。 | ||||
| 
 | ||||
| <!-- | ||||
| ### Privilege Escalation | ||||
|  | @ -1194,9 +1193,9 @@ specified. | |||
| --> | ||||
| ### SELinux | ||||
| 
 | ||||
| - *MustRunAs* - 要求必须配置 `seLinuxOptions`。默认使用 `seLinuxOptions`。 | ||||
| - **MustRunAs** - 要求必须配置 `seLinuxOptions`。默认使用 `seLinuxOptions`。 | ||||
|   针对 `seLinuxOptions` 所给值执行验证检查。 | ||||
| - *RunAsAny* - 没有提供默认值。允许任意指定的 `seLinuxOptions` 选项。 | ||||
| - **RunAsAny** - 没有提供默认值。允许任意指定的 `seLinuxOptions` 选项。 | ||||
| 
 | ||||
| <!-- | ||||
| ### AllowedProcMountTypes | ||||
|  | @ -1238,7 +1237,6 @@ Controlled via annotations on the PodSecurityPolicy. Refer to the | |||
| 详情请参阅 | ||||
| [AppArmor 文档](/zh-cn/docs/tutorials/security/apparmor/#podsecuritypolicy-annotations)。 | ||||
| 
 | ||||
| 
 | ||||
| <!-- | ||||
| ### Seccomp | ||||
| 
 | ||||
|  | @ -1261,7 +1259,7 @@ are: | |||
| 相同的 PodSecurityPolicy 可以用于不同版本,进而控制如何应用对应的字段或注解。 | ||||
| 
 | ||||
| **seccomp.security.alpha.kubernetes.io/defaultProfileName** - | ||||
| 注解用来指定为容器配置默认的 seccomp 模版。可选值为: | ||||
| 注解用来指定为容器配置默认的 seccomp 模板。可选值为: | ||||
| 
 | ||||
| <!-- | ||||
| - `unconfined` - Seccomp is not applied to the container processes (this is the | ||||
|  | @ -1274,19 +1272,13 @@ are: | |||
|   `--seccomp-profile-root` flag on the Kubelet. If the `--seccomp-profile-root` | ||||
|   flag is not defined, the default path will be used, which is | ||||
|   `<root-dir>/seccomp` where `<root-dir>` is specified by the `--root-dir` flag. | ||||
| 
 | ||||
|   {{< note >}} | ||||
|   The `--seccomp-profile-root` flag is deprecated since Kubernetes | ||||
|   v1.19. Users are encouraged to use the default path. | ||||
|   {{< /note >}} | ||||
| 
 | ||||
| --> | ||||
| - `unconfined` - 如果没有指定其他替代方案,Seccomp 不会被应用到容器进程上 | ||||
|   (Kubernets 中的默认设置)。 | ||||
| - `runtime/default` - 使用默认的容器运行时模版。 | ||||
| - `docker/default` - 使用 Docker 的默认 seccomp 模版。自 1.11 版本废弃。 | ||||
| - `runtime/default` - 使用默认的容器运行时模板。 | ||||
| - `docker/default` - 使用 Docker 的默认 seccomp 模板。自 1.11 版本废弃。 | ||||
|   应改为使用 `runtime/default`。 | ||||
| - `localhost/<路径名>` - 指定节点上路径 `<seccomp_root>/<路径名>` 下的一个文件作为其模版。 | ||||
| - `localhost/<路径名>` - 指定节点上路径 `<seccomp_root>/<路径名>` 下的一个文件作为其模板。 | ||||
|   其中 `<seccomp_root>` 是通过 `kubelet` 的标志 `--seccomp-profile-root` 来指定的。 | ||||
|   如果未定义 `--seccomp-profile-root` 标志,则使用默认的路径 `<root-dir>/seccomp`, | ||||
|   其中 `<root-dir>` 是通过 `--root-dir` 标志来设置的。 | ||||
|  | @ -1309,8 +1301,8 @@ default cannot be changed. | |||
| --> | ||||
| **seccomp.security.alpha.kubernetes.io/allowedProfileNames** - 指定可以为 | ||||
| Pod seccomp 注解配置的值的注解。取值为一个可用值的列表。 | ||||
| 表中每项可以是上述各值之一,还可以是 `*`,用来表示允许所有的模版。 | ||||
| 如果没有设置此注解,意味着默认的 seccomp 模版是不可更改的。 | ||||
| 表中每项可以是上述各值之一,还可以是 `*`,用来表示允许所有的模板。 | ||||
| 如果没有设置此注解,意味着默认的 seccomp 模板是不可更改的。 | ||||
| 
 | ||||
| <!-- | ||||
| ### Sysctl | ||||
|  | @ -1357,6 +1349,5 @@ Refer to the [Sysctl documentation](/docs/tasks/administer-cluster/sysctl-cluste | |||
| 
 | ||||
| - 参阅 [Pod 安全标准](/zh-cn/docs/concepts/security/pod-security-standards/), | ||||
|   了解策略建议。 | ||||
| - 阅读 [PodSecurityPolicy 参考](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#podsecuritypolicy-v1beta1-policy), | ||||
| - 阅读 [PodSecurityPolicy 参考](/zh-cn/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#podsecuritypolicy-v1beta1-policy), | ||||
|   了解 API 细节。 | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue