@@ -50,11 +50,11 @@ administrator to control the following:
50
50
-->
51
51
## 什么是 Pod 安全策略? {#what-is-a-pod-security-policy}
52
52
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)
56
56
对象定义了一组 Pod 运行时必须遵循的条件及相关字段的默认值,只有 Pod 满足这些条件才会被系统接受。
57
- Pod 安全策略允许管理员控制如下方面 :
57
+ Pod 安全策略允许管理员控制如下操作 :
58
58
59
59
<!--
60
60
| Control Aspect | Field Names |
@@ -80,20 +80,20 @@ Pod 安全策略允许管理员控制如下方面:
80
80
| ----------------------------------- | --------------------------------- |
81
81
| 运行特权容器 | [ ` privileged ` ] ( #privileged ) |
82
82
| 使用宿主名字空间 | [ ` hostPID ` 、` hostIPC ` ] ( #host-namespaces ) |
83
- | 使用宿主的网络和端口 | [ ` hostNetwork ` , ` hostPorts ` ] ( #host-namespaces ) |
83
+ | 使用宿主的网络和端口 | [ ` hostNetwork ` 、 ` hostPorts ` ] ( #host-namespaces ) |
84
84
| 控制卷类型的使用 | [ ` volumes ` ] ( #volumes-and-file-systems ) |
85
85
| 使用宿主文件系统 | [ ` allowedHostPaths ` ] ( #volumes-and-file-systems ) |
86
86
| 允许使用特定的 FlexVolume 驱动 | [ ` allowedFlexVolumes ` ] ( #flexvolume-drivers ) |
87
87
| 分配拥有 Pod 卷的 FSGroup 账号 | [ ` fsGroup ` ] ( #volumes-and-file-systems ) |
88
88
| 以只读方式访问根文件系统 | [ ` 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 ) |
92
92
| 设置容器的 SELinux 上下文 | [ ` seLinux ` ] ( #selinux ) |
93
93
| 指定容器可以挂载的 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 ) |
97
97
98
98
<!--
99
99
## Enabling Pod Security Policies
@@ -109,16 +109,16 @@ cluster.
109
109
110
110
Pod 安全策略实现为一种可选的[ 准入控制器] ( /zh-cn/docs/reference/access-authn-authz/admission-controllers/#podsecuritypolicy ) 。
111
111
[ 启用了准入控制器] ( /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** 。
113
113
114
114
<!--
115
115
Since the pod security policy API (`policy/v1beta1/podsecuritypolicy`) is
116
116
enabled independently of the admission controller, for existing clusters it is
117
117
recommended that policies are added and authorized before enabling the admission
118
118
controller.
119
119
-->
120
- 由于 Pod 安全策略 API(` policy/v1beta1/podsecuritypolicy ` )是独立于准入控制器
121
- 来启用的, 对于现有集群而言,建议在启用准入控制器之前先添加策略并对其授权。
120
+ 由于 Pod 安全策略 API(` policy/v1beta1/podsecuritypolicy ` )是独立于准入控制器来启用的,
121
+ 对于现有集群而言,建议在启用准入控制器之前先添加策略并对其授权。
122
122
123
123
<!--
124
124
## Authorizing Policies
@@ -133,7 +133,7 @@ must be authorized to use the policy, by allowing the `use` verb on the policy.
133
133
PodSecurityPolicy 资源被创建时,并不执行任何操作。为了使用该资源,
134
134
需要对发出请求的用户或者目标 Pod
135
135
的[ 服务账号] ( /zh-cn/docs/tasks/configure-pod-container/configure-service-account/ ) 授权,
136
- 通过允许其对策略执行 ` use ` 动词允许其使用该策略 。
136
+ 通过允许其对策略执行 ` use ` 动作,以允许其使用该策略 。
137
137
138
138
<!--
139
139
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)).
148
148
大多数 Kubernetes Pod 不是由用户直接创建的。相反,这些 Pod 是由
149
149
[ Deployment] ( /zh-cn/docs/concepts/workloads/controllers/deployment/ ) 、
150
150
[ ReplicaSet] ( /zh-cn/docs/concepts/workloads/controllers/replicaset/ )
151
- 或者经由控制器管理器模版化的控制器创建 。
152
- 赋予控制器访问策略的权限意味着对应控制器所创建的 * 所有 * Pod 都可访问策略。
151
+ 或者经由控制器管理器模板化的控制器创建 。
152
+ 赋予控制器访问策略的权限意味着对应控制器所创建的** 所有 * * Pod 都可访问策略。
153
153
因此,对策略进行授权的优先方案是为 Pod 的服务账号授予访问权限
154
154
(参见[ 示例] ( #run-another-pod ) )。
155
155
@@ -716,8 +716,7 @@ rolebinding "default:psp:unprivileged" created
716
716
Now if you give it a minute to retry, the replicaset-controller should
717
717
eventually succeed in creating the pod:
718
718
-->
719
- 现在如果你给 ReplicaSet 控制器一分钟的时间来重试,该控制器最终将能够
720
- 成功地创建 Pod:
719
+ 现在如果你给 ReplicaSet 控制器一分钟的时间来重试,该控制器最终将能够成功地创建 Pod:
721
720
722
721
``` shell
723
722
kubectl-user get pods --watch
@@ -850,7 +849,7 @@ and `max`(inclusive). Defaults to no allowed host ports.
850
849
此类授权将允许 Pod 访问本地回路(loopback)设备、在本地主机(localhost)
851
850
上监听的服务、还可能用来监听同一节点上其他 Pod 的网络活动。
852
851
853
- ** HostPorts** -提供可以在宿主网络名字空间中可使用的端口范围列表。
852
+ ** HostPorts** - 提供可以在宿主网络名字空间中可使用的端口范围列表。
854
853
该属性定义为一组 ` HostPortRange ` 对象的列表,每个对象中包含
855
854
` min ` (含)与 ` max ` (含)值的设置。
856
855
默认不允许访问宿主端口。
@@ -906,12 +905,12 @@ PodSecurityPolicy 并不限制可以被 `PersistentVolumeClaim` 所引用的
906
905
-->
907
906
** FSGroup** - 控制应用到某些卷上的附加用户组。
908
907
909
- - * MustRunAs* - 要求至少指定一个 ` range ` 。
908
+ - ** MustRunAs* * - 要求至少指定一个 ` range ` 。
910
909
使用范围中的最小值作为默认值。所有 range 值都会被用来执行验证。
911
- - * MayRunAs* - 要求至少指定一个 ` range ` 。
910
+ - ** MayRunAs* * - 要求至少指定一个 ` range ` 。
912
911
允许不设置 ` FSGroups ` ,且无默认值。
913
912
如果 ` FSGroup ` 被设置,则所有 range 值都会被用来执行验证检查。
914
- - * RunAsAny* - 不提供默认值。允许设置任意 ` fsGroup ` ID 值。
913
+ - ** RunAsAny* * - 不提供默认值。允许设置任意 ` fsGroup ` ID 值。
915
914
916
915
<!--
917
916
**AllowedHostPaths** - This specifies a list of host paths that are allowed
@@ -1042,15 +1041,15 @@ spec:
1042
1041
1043
1042
**RunAsUser** - 控制使用哪个用户 ID 来运行容器。
1044
1043
1045
- - *MustRunAs* - 必须至少设置一个 `range`。使用该范围内的第一个值作为默认值。
1044
+ - ** MustRunAs* * - 必须至少设置一个 `range`。使用该范围内的第一个值作为默认值。
1046
1045
所有范围值都会被验证检查。
1047
1046
1048
- - *MustRunAsNonRoot* - 要求提交的 Pod 具有非零 `runAsUser` 值,或在镜像中
1047
+ - ** MustRunAsNonRoot* * - 要求提交的 Pod 具有非零 `runAsUser` 值,或在镜像中
1049
1048
(使用 UID 数值)定义了 `USER` 环境变量。
1050
1049
如果 Pod 既没有设置 `runAsNonRoot`,也没有设置 `runAsUser`,则该 Pod
1051
1050
会被修改以设置 `runAsNonRoot=true`,从而要求容器通过 `USER` 指令给出非零的数值形式的用户 ID。
1052
1051
此配置没有默认值。采用此配置时,强烈建议设置 `allowPrivilegeEscalation=false`。
1053
- - *RunAsAny* - 没有提供默认值。允许指定任何 `runAsUser` 配置。
1052
+ - ** RunAsAny* * - 没有提供默认值。允许指定任何 `runAsUser` 配置。
1054
1053
1055
1054
<!--
1056
1055
**RunAsGroup** - Controls which primary group ID the containers are run with.
@@ -1063,11 +1062,11 @@ spec:
1063
1062
-->
1064
1063
**RunAsGroup** - 控制运行容器时使用的主用户组 ID。
1065
1064
1066
- - *MustRunAs* - 要求至少指定一个 `range` 值。第一个范围中的最小值作为默认值。
1065
+ - ** MustRunAs* * - 要求至少指定一个 `range` 值。第一个范围中的最小值作为默认值。
1067
1066
所有范围值都被用来执行验证检查。
1068
- - *MayRunAs* - 不要求设置 `RunAsGroup`。
1067
+ - ** MayRunAs* * - 不要求设置 `RunAsGroup`。
1069
1068
不过,如果指定了 `RunAsGroup` 被设置,所设置值必须处于所定义的范围内。
1070
- - *RunAsAny* - 未指定默认值。允许 `runAsGroup` 设置任何值。
1069
+ - ** RunAsAny* * - 未指定默认值。允许 `runAsGroup` 设置任何值。
1071
1070
1072
1071
<!--
1073
1072
**SupplementalGroups** - Controls which group IDs containers add.
@@ -1082,12 +1081,12 @@ spec:
1082
1081
-->
1083
1082
**SupplementalGroups** - 控制容器可以添加的组 ID。
1084
1083
1085
- - *MustRunAs* - 要求至少指定一个 `range` 值。第一个范围中的最小值用作默认值。
1084
+ - ** MustRunAs* * - 要求至少指定一个 `range` 值。第一个范围中的最小值用作默认值。
1086
1085
所有范围值都被用来执行验证检查。
1087
- - *MayRunAs* - 要求至少指定一个 `range` 值。
1086
+ - ** MayRunAs* * - 要求至少指定一个 `range` 值。
1088
1087
允许不指定 `supplementalGroups` 且不设置默认值。
1089
1088
如果 `supplementalGroups` 被设置,则所有 range 值都被用来执行验证检查。
1090
- - *RunAsAny* - 未指定默认值。允许为 `supplementalGroups` 设置任何值。
1089
+ - ** RunAsAny* * - 未指定默认值。允许为 `supplementalGroups` 设置任何值。
1091
1090
1092
1091
<!--
1093
1092
# ## Privilege Escalation
@@ -1129,7 +1128,7 @@ pods to request `allowPrivilegeEscalation` explicitly.
1129
1128
**DefaultAllowPrivilegeEscalation** - 为 `allowPrivilegeEscalation` 选项设置默认值。
1130
1129
不设置此选项时的默认行为是允许特权提升,以便运行 setuid 程序。
1131
1130
如果不希望运行 setuid 程序,可以使用此字段将选项的默认值设置为禁止,
1132
- 同时仍然允许 Pod 显式地请求 `allowPrivilegeEscalation`。
1131
+ 同时仍然允许 Pod 显式地请求 `allowPrivilegeEscalation`。
1133
1132
1134
1133
<!--
1135
1134
# ## Capabilities
@@ -1194,9 +1193,9 @@ specified.
1194
1193
-->
1195
1194
# ## SELinux
1196
1195
1197
- - *MustRunAs* - 要求必须配置 `seLinuxOptions`。默认使用 `seLinuxOptions`。
1196
+ - ** MustRunAs* * - 要求必须配置 `seLinuxOptions`。默认使用 `seLinuxOptions`。
1198
1197
针对 `seLinuxOptions` 所给值执行验证检查。
1199
- - *RunAsAny* - 没有提供默认值。允许任意指定的 `seLinuxOptions` 选项。
1198
+ - ** RunAsAny* * - 没有提供默认值。允许任意指定的 `seLinuxOptions` 选项。
1200
1199
1201
1200
<!--
1202
1201
# ## AllowedProcMountTypes
@@ -1238,7 +1237,6 @@ Controlled via annotations on the PodSecurityPolicy. Refer to the
1238
1237
详情请参阅
1239
1238
[AppArmor 文档](/zh-cn/docs/tutorials/security/apparmor/#podsecuritypolicy-annotations)。
1240
1239
1241
-
1242
1240
<!--
1243
1241
# ## Seccomp
1244
1242
@@ -1261,7 +1259,7 @@ are:
1261
1259
相同的 PodSecurityPolicy 可以用于不同版本,进而控制如何应用对应的字段或注解。
1262
1260
1263
1261
**seccomp.security.alpha.kubernetes.io/defaultProfileName** -
1264
- 注解用来指定为容器配置默认的 seccomp 模版 。可选值为:
1262
+ 注解用来指定为容器配置默认的 seccomp 模板 。可选值为:
1265
1263
1266
1264
<!--
1267
1265
- ` unconfined` - Seccomp is not applied to the container processes (this is the
@@ -1274,19 +1272,13 @@ are:
1274
1272
` --seccomp-profile-root` flag on the Kubelet. If the `--seccomp-profile-root`
1275
1273
flag is not defined, the default path will be used, which is
1276
1274
` <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
-
1283
1275
-->
1284
1276
- ` unconfined` - 如果没有指定其他替代方案,Seccomp 不会被应用到容器进程上
1285
1277
(Kubernets 中的默认设置)。
1286
- - ` runtime/default` - 使用默认的容器运行时模版 。
1287
- - ` docker/default` - 使用 Docker 的默认 seccomp 模版 。自 1.11 版本废弃。
1278
+ - ` runtime/default` - 使用默认的容器运行时模板 。
1279
+ - ` docker/default` - 使用 Docker 的默认 seccomp 模板 。自 1.11 版本废弃。
1288
1280
应改为使用 `runtime/default`。
1289
- - ` localhost/<路径名>` - 指定节点上路径 `<seccomp_root>/<路径名>` 下的一个文件作为其模版 。
1281
+ - ` localhost/<路径名>` - 指定节点上路径 `<seccomp_root>/<路径名>` 下的一个文件作为其模板 。
1290
1282
其中 `<seccomp_root>` 是通过 `kubelet` 的标志 `--seccomp-profile-root` 来指定的。
1291
1283
如果未定义 `--seccomp-profile-root` 标志,则使用默认的路径 `<root-dir>/seccomp`,
1292
1284
其中 `<root-dir>` 是通过 `--root-dir` 标志来设置的。
@@ -1309,8 +1301,8 @@ default cannot be changed.
1309
1301
-->
1310
1302
**seccomp.security.alpha.kubernetes.io/allowedProfileNames** - 指定可以为
1311
1303
Pod seccomp 注解配置的值的注解。取值为一个可用值的列表。
1312
- 表中每项可以是上述各值之一,还可以是 `*`,用来表示允许所有的模版 。
1313
- 如果没有设置此注解,意味着默认的 seccomp 模版是不可更改的 。
1304
+ 表中每项可以是上述各值之一,还可以是 `*`,用来表示允许所有的模板 。
1305
+ 如果没有设置此注解,意味着默认的 seccomp 模板是不可更改的 。
1314
1306
1315
1307
<!--
1316
1308
# ## Sysctl
@@ -1357,6 +1349,5 @@ Refer to the [Sysctl documentation](/docs/tasks/administer-cluster/sysctl-cluste
1357
1349
1358
1350
- 参阅 [Pod 安全标准](/zh-cn/docs/concepts/security/pod-security-standards/),
1359
1351
了解策略建议。
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),
1361
1353
了解 API 细节。
1362
-
0 commit comments