Skip to content

Commit 9c3cc2b

Browse files
committed
[zh-cn] improve security/pod-security-policy.md
1 parent e6868ba commit 9c3cc2b

File tree

1 file changed

+41
-50
lines changed

1 file changed

+41
-50
lines changed

content/zh-cn/docs/concepts/security/pod-security-policy.md

Lines changed: 41 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,11 @@ administrator to control the following:
5050
-->
5151
## 什么是 Pod 安全策略? {#what-is-a-pod-security-policy}
5252

53-
_Pod 安全策略(Pod Security Policy)_ 是集群级别的资源,它能够控制 Pod 规约
54-
中与安全性相关的各个方面
55-
[PodSecurityPolicy](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#podsecuritypolicy-v1beta1-policy)
53+
**Pod 安全策略(Pod Security Policy)**是集群级别的资源,它能够控制 Pod
54+
规约中与安全性相关的各个方面
55+
[PodSecurityPolicy](/zh-cn/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#podsecuritypolicy-v1beta1-policy)
5656
对象定义了一组 Pod 运行时必须遵循的条件及相关字段的默认值,只有 Pod 满足这些条件才会被系统接受。
57-
Pod 安全策略允许管理员控制如下方面
57+
Pod 安全策略允许管理员控制如下操作
5858

5959
<!--
6060
| Control Aspect | Field Names |
@@ -80,20 +80,20 @@ Pod 安全策略允许管理员控制如下方面:
8080
| ----------------------------------- | --------------------------------- |
8181
| 运行特权容器 | [`privileged`](#privileged) |
8282
| 使用宿主名字空间 | [`hostPID``hostIPC`](#host-namespaces) |
83-
| 使用宿主的网络和端口 | [`hostNetwork`, `hostPorts`](#host-namespaces) |
83+
| 使用宿主的网络和端口 | [`hostNetwork``hostPorts`](#host-namespaces) |
8484
| 控制卷类型的使用 | [`volumes`](#volumes-and-file-systems) |
8585
| 使用宿主文件系统 | [`allowedHostPaths`](#volumes-and-file-systems) |
8686
| 允许使用特定的 FlexVolume 驱动 | [`allowedFlexVolumes`](#flexvolume-drivers) |
8787
| 分配拥有 Pod 卷的 FSGroup 账号 | [`fsGroup`](#volumes-and-file-systems) |
8888
| 以只读方式访问根文件系统 | [`readOnlyRootFilesystem`](#volumes-and-file-systems) |
89-
| 设置容器的用户和组 ID | [`runAsUser`, `runAsGroup`, `supplementalGroups`](#users-and-groups) |
90-
| 限制 root 账号特权级提升 | [`allowPrivilegeEscalation`, `defaultAllowPrivilegeEscalation`](#privilege-escalation) |
91-
| Linux 权能字(Capabilities) | [`defaultAddCapabilities`, `requiredDropCapabilities`, `allowedCapabilities`](#capabilities) |
89+
| 设置容器的用户和组 ID | [`runAsUser``runAsGroup``supplementalGroups`](#users-and-groups) |
90+
| 限制 root 账号特权级提升 | [`allowPrivilegeEscalation``defaultAllowPrivilegeEscalation`](#privilege-escalation) |
91+
| Linux 权能字(Capabilities) | [`defaultAddCapabilities``requiredDropCapabilities``allowedCapabilities`](#capabilities) |
9292
| 设置容器的 SELinux 上下文 | [`seLinux`](#selinux) |
9393
| 指定容器可以挂载的 proc 类型 | [`allowedProcMountTypes`](#allowedprocmounttypes) |
94-
| 指定容器使用的 AppArmor 模版 | [annotations](#apparmor) |
95-
| 指定容器使用的 seccomp 模版 | [annotations](#seccomp) |
96-
| 指定容器使用的 sysctl 模版 | [`forbiddenSysctls`,`allowedUnsafeSysctls`](#sysctl) |
94+
| 指定容器使用的 AppArmor 模板 | [annotations](#apparmor) |
95+
| 指定容器使用的 seccomp 模板 | [annotations](#seccomp) |
96+
| 指定容器使用的 sysctl 模板 | [`forbiddenSysctls``allowedUnsafeSysctls`](#sysctl) |
9797

9898
<!--
9999
## Enabling Pod Security Policies
@@ -109,16 +109,16 @@ cluster.
109109

110110
Pod 安全策略实现为一种可选的[准入控制器](/zh-cn/docs/reference/access-authn-authz/admission-controllers/#podsecuritypolicy)
111111
[启用了准入控制器](/zh-cn/docs/reference/access-authn-authz/admission-controllers/#how-do-i-turn-on-an-admission-control-plug-in)即可强制实施
112-
Pod 安全策略,不过如果没有授权认可策略之前即启用准入控制器 **将导致集群中无法创建任何 Pod**
112+
Pod 安全策略,不过如果没有授权认可策略之前即启用准入控制器**将导致集群中无法创建任何 Pod**
113113

114114
<!--
115115
Since the pod security policy API (`policy/v1beta1/podsecuritypolicy`) is
116116
enabled independently of the admission controller, for existing clusters it is
117117
recommended that policies are added and authorized before enabling the admission
118118
controller.
119119
-->
120-
由于 Pod 安全策略 API(`policy/v1beta1/podsecuritypolicy`是独立于准入控制器
121-
来启用的,对于现有集群而言,建议在启用准入控制器之前先添加策略并对其授权。
120+
由于 Pod 安全策略 API(`policy/v1beta1/podsecuritypolicy`是独立于准入控制器来启用的,
121+
对于现有集群而言,建议在启用准入控制器之前先添加策略并对其授权。
122122

123123
<!--
124124
## Authorizing Policies
@@ -133,7 +133,7 @@ must be authorized to use the policy, by allowing the `use` verb on the policy.
133133
PodSecurityPolicy 资源被创建时,并不执行任何操作。为了使用该资源,
134134
需要对发出请求的用户或者目标 Pod
135135
[服务账号](/zh-cn/docs/tasks/configure-pod-container/configure-service-account/)授权,
136-
通过允许其对策略执行 `use` 动词允许其使用该策略
136+
通过允许其对策略执行 `use` 动作,以允许其使用该策略
137137

138138
<!--
139139
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)).
148148
大多数 Kubernetes Pod 不是由用户直接创建的。相反,这些 Pod 是由
149149
[Deployment](/zh-cn/docs/concepts/workloads/controllers/deployment/)
150150
[ReplicaSet](/zh-cn/docs/concepts/workloads/controllers/replicaset/)
151-
或者经由控制器管理器模版化的控制器创建
152-
赋予控制器访问策略的权限意味着对应控制器所创建的 *所有* Pod 都可访问策略。
151+
或者经由控制器管理器模板化的控制器创建
152+
赋予控制器访问策略的权限意味着对应控制器所创建的**所有** Pod 都可访问策略。
153153
因此,对策略进行授权的优先方案是为 Pod 的服务账号授予访问权限
154154
(参见[示例](#run-another-pod))。
155155

@@ -716,8 +716,7 @@ rolebinding "default:psp:unprivileged" created
716716
Now if you give it a minute to retry, the replicaset-controller should
717717
eventually succeed in creating the pod:
718718
-->
719-
现在如果你给 ReplicaSet 控制器一分钟的时间来重试,该控制器最终将能够
720-
成功地创建 Pod:
719+
现在如果你给 ReplicaSet 控制器一分钟的时间来重试,该控制器最终将能够成功地创建 Pod:
721720

722721
```shell
723722
kubectl-user get pods --watch
@@ -850,7 +849,7 @@ and `max`(inclusive). Defaults to no allowed host ports.
850849
此类授权将允许 Pod 访问本地回路(loopback)设备、在本地主机(localhost)
851850
上监听的服务、还可能用来监听同一节点上其他 Pod 的网络活动。
852851

853-
**HostPorts** -提供可以在宿主网络名字空间中可使用的端口范围列表。
852+
**HostPorts** - 提供可以在宿主网络名字空间中可使用的端口范围列表。
854853
该属性定义为一组 `HostPortRange` 对象的列表,每个对象中包含
855854
`min`(含)与 `max`(含)值的设置。
856855
默认不允许访问宿主端口。
@@ -906,12 +905,12 @@ PodSecurityPolicy 并不限制可以被 `PersistentVolumeClaim` 所引用的
906905
-->
907906
**FSGroup** - 控制应用到某些卷上的附加用户组。
908907

909-
- *MustRunAs* - 要求至少指定一个 `range`
908+
- **MustRunAs** - 要求至少指定一个 `range`
910909
使用范围中的最小值作为默认值。所有 range 值都会被用来执行验证。
911-
- *MayRunAs* - 要求至少指定一个 `range`
910+
- **MayRunAs** - 要求至少指定一个 `range`
912911
允许不设置 `FSGroups`,且无默认值。
913912
如果 `FSGroup` 被设置,则所有 range 值都会被用来执行验证检查。
914-
- *RunAsAny* - 不提供默认值。允许设置任意 `fsGroup` ID 值。
913+
- **RunAsAny** - 不提供默认值。允许设置任意 `fsGroup` ID 值。
915914

916915
<!--
917916
**AllowedHostPaths** - This specifies a list of host paths that are allowed
@@ -1042,15 +1041,15 @@ spec:
10421041

10431042
**RunAsUser** - 控制使用哪个用户 ID 来运行容器。
10441043

1045-
- *MustRunAs* - 必须至少设置一个 `range`。使用该范围内的第一个值作为默认值。
1044+
- **MustRunAs** - 必须至少设置一个 `range`。使用该范围内的第一个值作为默认值。
10461045
所有范围值都会被验证检查。
10471046

1048-
- *MustRunAsNonRoot* - 要求提交的 Pod 具有非零 `runAsUser` 值,或在镜像中
1047+
- **MustRunAsNonRoot** - 要求提交的 Pod 具有非零 `runAsUser` 值,或在镜像中
10491048
(使用 UID 数值)定义了 `USER` 环境变量。
10501049
如果 Pod 既没有设置 `runAsNonRoot`,也没有设置 `runAsUser`,则该 Pod
10511050
会被修改以设置 `runAsNonRoot=true`,从而要求容器通过 `USER` 指令给出非零的数值形式的用户 ID。
10521051
此配置没有默认值。采用此配置时,强烈建议设置 `allowPrivilegeEscalation=false`。
1053-
- *RunAsAny* - 没有提供默认值。允许指定任何 `runAsUser` 配置。
1052+
- **RunAsAny** - 没有提供默认值。允许指定任何 `runAsUser` 配置。
10541053

10551054
<!--
10561055
**RunAsGroup** - Controls which primary group ID the containers are run with.
@@ -1063,11 +1062,11 @@ spec:
10631062
-->
10641063
**RunAsGroup** - 控制运行容器时使用的主用户组 ID。
10651064

1066-
- *MustRunAs* - 要求至少指定一个 `range` 值。第一个范围中的最小值作为默认值。
1065+
- **MustRunAs** - 要求至少指定一个 `range` 值。第一个范围中的最小值作为默认值。
10671066
所有范围值都被用来执行验证检查。
1068-
- *MayRunAs* - 不要求设置 `RunAsGroup`。
1067+
- **MayRunAs** - 不要求设置 `RunAsGroup`。
10691068
不过,如果指定了 `RunAsGroup` 被设置,所设置值必须处于所定义的范围内。
1070-
- *RunAsAny* - 未指定默认值。允许 `runAsGroup` 设置任何值。
1069+
- **RunAsAny** - 未指定默认值。允许 `runAsGroup` 设置任何值。
10711070

10721071
<!--
10731072
**SupplementalGroups** - Controls which group IDs containers add.
@@ -1082,12 +1081,12 @@ spec:
10821081
-->
10831082
**SupplementalGroups** - 控制容器可以添加的组 ID。
10841083

1085-
- *MustRunAs* - 要求至少指定一个 `range` 值。第一个范围中的最小值用作默认值。
1084+
- **MustRunAs** - 要求至少指定一个 `range` 值。第一个范围中的最小值用作默认值。
10861085
所有范围值都被用来执行验证检查。
1087-
- *MayRunAs* - 要求至少指定一个 `range` 值。
1086+
- **MayRunAs** - 要求至少指定一个 `range` 值。
10881087
允许不指定 `supplementalGroups` 且不设置默认值。
10891088
如果 `supplementalGroups` 被设置,则所有 range 值都被用来执行验证检查。
1090-
- *RunAsAny* - 未指定默认值。允许为 `supplementalGroups` 设置任何值。
1089+
- **RunAsAny** - 未指定默认值。允许为 `supplementalGroups` 设置任何值。
10911090

10921091
<!--
10931092
### Privilege Escalation
@@ -1129,7 +1128,7 @@ pods to request `allowPrivilegeEscalation` explicitly.
11291128
**DefaultAllowPrivilegeEscalation** - 为 `allowPrivilegeEscalation` 选项设置默认值。
11301129
不设置此选项时的默认行为是允许特权提升,以便运行 setuid 程序。
11311130
如果不希望运行 setuid 程序,可以使用此字段将选项的默认值设置为禁止,
1132-
同时仍然允许 Pod 显式地请求 `allowPrivilegeEscalation`。
1131+
同时仍然允许 Pod 显式地请求 `allowPrivilegeEscalation`。
11331132

11341133
<!--
11351134
### Capabilities
@@ -1194,9 +1193,9 @@ specified.
11941193
-->
11951194
### SELinux
11961195

1197-
- *MustRunAs* - 要求必须配置 `seLinuxOptions`。默认使用 `seLinuxOptions`。
1196+
- **MustRunAs** - 要求必须配置 `seLinuxOptions`。默认使用 `seLinuxOptions`。
11981197
针对 `seLinuxOptions` 所给值执行验证检查。
1199-
- *RunAsAny* - 没有提供默认值。允许任意指定的 `seLinuxOptions` 选项。
1198+
- **RunAsAny** - 没有提供默认值。允许任意指定的 `seLinuxOptions` 选项。
12001199

12011200
<!--
12021201
### AllowedProcMountTypes
@@ -1238,7 +1237,6 @@ Controlled via annotations on the PodSecurityPolicy. Refer to the
12381237
详情请参阅
12391238
[AppArmor 文档](/zh-cn/docs/tutorials/security/apparmor/#podsecuritypolicy-annotations)。
12401239

1241-
12421240
<!--
12431241
### Seccomp
12441242

@@ -1261,7 +1259,7 @@ are:
12611259
相同的 PodSecurityPolicy 可以用于不同版本,进而控制如何应用对应的字段或注解。
12621260

12631261
**seccomp.security.alpha.kubernetes.io/defaultProfileName** -
1264-
注解用来指定为容器配置默认的 seccomp 模版。可选值为:
1262+
注解用来指定为容器配置默认的 seccomp 模板。可选值为:
12651263

12661264
<!--
12671265
- `unconfined` - Seccomp is not applied to the container processes (this is the
@@ -1274,19 +1272,13 @@ are:
12741272
`--seccomp-profile-root` flag on the Kubelet. If the `--seccomp-profile-root`
12751273
flag is not defined, the default path will be used, which is
12761274
`<root-dir>/seccomp` where `<root-dir>` is specified by the `--root-dir` flag.
1277-
1278-
{{< note >}}
1279-
The `--seccomp-profile-root` flag is deprecated since Kubernetes
1280-
v1.19. Users are encouraged to use the default path.
1281-
{{< /note >}}
1282-
12831275
-->
12841276
- `unconfined` - 如果没有指定其他替代方案,Seccomp 不会被应用到容器进程上
12851277
(Kubernets 中的默认设置)。
1286-
- `runtime/default` - 使用默认的容器运行时模版
1287-
- `docker/default` - 使用 Docker 的默认 seccomp 模版。自 1.11 版本废弃。
1278+
- `runtime/default` - 使用默认的容器运行时模板
1279+
- `docker/default` - 使用 Docker 的默认 seccomp 模板。自 1.11 版本废弃。
12881280
应改为使用 `runtime/default`。
1289-
- `localhost/<路径名>` - 指定节点上路径 `<seccomp_root>/<路径名>` 下的一个文件作为其模版
1281+
- `localhost/<路径名>` - 指定节点上路径 `<seccomp_root>/<路径名>` 下的一个文件作为其模板
12901282
其中 `<seccomp_root>` 是通过 `kubelet` 的标志 `--seccomp-profile-root` 来指定的。
12911283
如果未定义 `--seccomp-profile-root` 标志,则使用默认的路径 `<root-dir>/seccomp`,
12921284
其中 `<root-dir>` 是通过 `--root-dir` 标志来设置的。
@@ -1309,8 +1301,8 @@ default cannot be changed.
13091301
-->
13101302
**seccomp.security.alpha.kubernetes.io/allowedProfileNames** - 指定可以为
13111303
Pod seccomp 注解配置的值的注解。取值为一个可用值的列表。
1312-
表中每项可以是上述各值之一,还可以是 `*`,用来表示允许所有的模版
1313-
如果没有设置此注解,意味着默认的 seccomp 模版是不可更改的
1304+
表中每项可以是上述各值之一,还可以是 `*`,用来表示允许所有的模板
1305+
如果没有设置此注解,意味着默认的 seccomp 模板是不可更改的
13141306

13151307
<!--
13161308
### Sysctl
@@ -1357,6 +1349,5 @@ Refer to the [Sysctl documentation](/docs/tasks/administer-cluster/sysctl-cluste
13571349

13581350
- 参阅 [Pod 安全标准](/zh-cn/docs/concepts/security/pod-security-standards/),
13591351
了解策略建议。
1360-
- 阅读 [PodSecurityPolicy 参考](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#podsecuritypolicy-v1beta1-policy),
1352+
- 阅读 [PodSecurityPolicy 参考](/zh-cn/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#podsecuritypolicy-v1beta1-policy),
13611353
了解 API 细节。
1362-

0 commit comments

Comments
 (0)