PodSecurityPolicy v1beta1
apiVersion: policy/v1beta1
import "k8s.io/api/policy/v1beta1"
PodSecurityPolicy
PodSecurityPolicy 对影响到安全上下文的请求能力进行治理,而安全上下文可以应用到 Pod 和容器上。 在 1.21 中已被弃用。
-
apiVersion: policy/v1beta1
-
kind: PodSecurityPolicy
-
metadata (ObjectMeta)
标准的对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-
spec (PodSecurityPolicySpec)
spec 定义强制执行的策略。
PodSecurityPolicySpec
PodSecurityPolicySpec 定义强制执行的策略。
-
runAsUser (RunAsUserStrategyOptions),必需
runAsUser 是一种策略,它将规定允许为 runAsUser 设置的值。
RunAsUserStrategyOptions 定义策略类型和用于创建该策略的任意选项。
-
runAsUser.rule (string),必需
rule 是一种策略,它将规定允许为 runAsUser 设置的值。
-
runAsUser.ranges ([]IDRange)
ranges 是可以使用的 UID 的允许范围。 如果你要强制使用某个确定 UID,则应提供起点值和终点值相同的范围设定。 对于 mustRunAs 而言是必需的。
-
runAsUser.ranges.max (int64),必需
max 是范围的终点,该值包含在此范围内。
-
runAsUser.ranges.min (int64),必需
min 是范围的起点,该值包含在此范围内。
-
-
-
runAsGroup (RunAsGroupStrategyOptions)
runAsGroup 是一种策略,它将规定可以为 runAsGroup 设置的值。 如果省略此字段,则 Pod 的 runAsGroup 可以取任何值。 此字段要求启用
RunAsGroup
特性门控。RunAsGroupStrategyOptions 定义策略类型和用于创建该策略的任意选项。
-
runAsGroup.rule (string),必需
rule 是一种策略,它将规定可以为 runAsGroup 设置的值。
-
runAsGroup.ranges ([]IDRange)
ranges 是可以使用的 GID 的范围。 如果你要强制使用某个确定的 GID,则可提供起点和终点相同的范围设定。 对于 mustRunAs 而言是必需的。
-
runAsGroup.ranges.max (int64),必需
max 是范围的终点,该值包含在此范围内。
-
runAsGroup.ranges.min (int64),必需
min 是范围的起点,该值包含在此范围内。
-
-
-
fsGroup (FSGroupStrategyOptions),必需
fsGroup 是一种策略,它将规定 SecurityContext 将使用哪个 fs 组。
FSGroupStrategyOptions 定义策略类型和用于创建该策略的任意选项。
-
fsGroup.ranges ([]IDRange)
ranges 是 fs 组的允许范围。 如果你要强制使用某个确定的 fs 组,则应提供起点和终点相同的范围设定。 对于 mustRunAs 而言是必需的。
-
fsGroup.ranges.max (int64),必需
max 是范围的终点,该值包含在此范围内。
-
fsGroup.ranges.min (int64),必需
min 是范围的起点,该值包含在此范围内。
-
-
fsGroup.rule (string)
rule 是一种策略,它将规定 SecurityContext 中使用哪个 FSGroup。
-
-
supplementalGroups (SupplementalGroupsStrategyOptions),必需
supplementalGroups 是一种策略,它将规定 SecurityContext 将使用哪个补充组。
SupplementalGroupsStrategyOptions 定义策略类型和用于创建该策略的任意选项。
-
supplementalGroups.ranges ([]IDRange)
ranges 是补充组的允许范围。 如果你要强制使用固定的某个补充组,则应提供起点和终点相同的范围设定。 对于 mustRunAs 而言是必需的。
-
supplementalGroups.ranges.max (int64),必需
max 是范围的终点,该值包含在此范围内。
-
supplementalGroups.ranges.min (int64),必需
min 是范围的起点,该值包含在此范围内。
-
-
supplementalGroups.rule (string)
rule 是一种策略,它将规定 SecurityContext 中使用哪个补充组。
-
-
seLinux (SELinuxStrategyOptions),必需
seLinux 是一种策略,它将规定可以设置的标签集合。
SELinuxStrategyOptions 定义策略类型和用于创建该策略的任意选项。
-
seLinux.rule (string),必需
rule 是一种策略,它将规定可以设置的标签集合。
-
seLinux.seLinuxOptions (SELinuxOptions)
seLinuxOptions 是运行所必需的。对于 mustRunAs 而言是必需的。更多信息: https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/security-context/
-
seLinux.seLinuxOptions.level (string)
level 是应用到容器的 SELinux 级别标签。
-
seLinux.seLinuxOptions.role (string)
role 是应用到容器的 SELinux 角色标签。
-
seLinux.seLinuxOptions.type (string)
type 是应用到容器的 SELinux 类型标签。
-
seLinux.seLinuxOptions.user (string)
user 是应用到容器的 SELinux 用户标签。
-
-
-
readOnlyRootFilesystem (boolean)
readOnlyRootFilesystem 设为 true 时将强制容器使用只读根文件系统来运行。 如果容器明确请求以非只读根文件系统来运行,则 PSP 应拒绝该 Pod。 如果设置为 false,则如果愿意,容器可以以只读根文件系统来运行,但不是必须使用只读根文件系统。
-
privileged (boolean)
privileged 决定 Pod 是否可以请求以特权模式运行。
-
allowPrivilegeEscalation (boolean)
allowPrivilegeEscalation 决定 Pod 是否可以请求允许提升特权。如果未指定,则默认为 true。
-
defaultAllowPrivilegeEscalation (boolean)
defaultAllowPrivilegeEscalation 控制一个进程是否可以获得比其父进程更多权限的默认设置。
-
allowedCSIDrivers ([]AllowedCSIDriver)
allowedCSIDrivers 是允许使用的内联 CSI 驱动列表,这些驱动必须被显式嵌入到 Pod 规约中。 空值表示任何 CSI 驱动都可以用于内联临时卷。这是一个 beta 字段, 只有 API 服务器启用 CSIInlineVolume 特性门控,才会使用此字段。
AllowedCSIDriver 表示允许使用的单个内联 CSI 驱动。
-
allowedCSIDrivers.name (string),必需
name 是 CSI 驱动的注册名称。
-
-
allowedCapabilities ([]string)
allowedCapabilities 是可以请求添加到容器的权能列表。 这个字段中的权能可以由 Pod 作者自行添加。 你不得同时在 allowedCapabilities 和 requiredDropCapabilities 中列出同一个权能。
-
requiredDropCapabilities ([]string)
requiredDropCapabilities 是将从容器中丢弃的权能。这些权能需要被丢弃,且不能添加。
-
defaultAddCapabilities ([]string)
defaultAddCapabilities 是默认被添加到容器的权能集,除非 Pod 规约特意丢弃该权能。 你不可以同时在 defaultAddCapabilities 和 requiredDropCapabilities 中列出同一个权能。 此处添加的权能是被隐式允许的,不必包括在 allowedCapabilities 列表中。
-
allowedFlexVolumes ([]AllowedFlexVolume)
allowedFlexVolumes 是允许设置的 FlexVolume 卷的列表。 空或 nil 值表示可以使用所有 FlexVolume。 只有在 “volumes” 字段中允许使用 Flexvolume 卷时,此参数才有效。
AllowedFlexVolume 表示允许使用的单个 Flexvolume。
-
allowedFlexVolumes.driver (string),必需
driver 是 FlexVolume 驱动的名称。
-
-
allowedHostPaths ([]AllowedHostPath)
allowedHostPaths 是允许使用的主机路径的列表。空表示可以使用所有主机路径。
allowedHostPath 定义将按 Pod 使用的策略启用的主机卷条件。它要求定义路径前缀。
-
allowedHostPaths.pathPrefix (string)
pathPrefix 是主机卷必须匹配的路径前缀。 此字段不支持
*
。使用主机路径检验路径前缀时,会裁剪掉尾部的斜线。例如:
/foo
将允许/foo
、/foo/
和/foo/bar
。/foo
将不允许/food
或/etc/foo
。
-
allowedHostPaths.readOnly (boolean)
当设置为 true 时,仅当所有与 pathPrefix 匹配的主机卷的卷挂载均为 readOnly 时,才允许使用。
-
-
allowedProcMountTypes ([]string)
AllowedProcMountTypes 是允许使用的 ProcMountType 的列表。 空表或 nil 表示仅可以使用 DefaultProcMountType。 此字段要求启用 ProcMountType 特性门控。
-
allowedUnsafeSysctls ([]string)
allowedUnsafeSysctls 是明确允许的不安全 sysctl 的列表,默认为空。 每个条目要么是一个普通的 sysctl 名称,要么以 “*” 结尾, 在后面这种情况下字符串值被视为所允许的 sysctl 的前缀。 单个
*
意味着允许所有不安全的 sysctl。 Kubelet 必须显式列出所有被允许的、不安全的 sysctl,以防被拒绝。例如
foo/*
允许foo/bar
、foo/baz
等。 例如foo.*
允许foo.bar
、foo.baz
等。
-
forbiddenSysctls ([]string)
forbiddenSysctls 是被明确禁止的 sysctl 的列表,默认为空。 每个条目要么是一个普通的 sysctl 名称,要么以
*
结尾, 以*
结尾的字符串值表示被禁止的 sysctl 的前缀。 单个*
意味着禁止所有 sysctl。例如
foo/*
禁止foo/bar
、foo/baz
等。 例如foo.*
禁止foo.bar
、foo.baz
等。
-
hostIPC (boolean)
hostIPC 决定此策略是否允许在 Pod 规约中使用 hostIPC。
-
hostNetwork (boolean)
hostNetwork 决定此策略是否允许在 Pod 规约中使用 hostNetwork。
-
hostPID (boolean)
hostPID 决定此策略是否允许在 Pod 规约中使用 hostPID。
-
hostPorts ([]HostPortRange)
hostPorts 决定允许暴露哪些主机端口范围。
HostPortRange 定义将按 Pod 使用的策略启用的主机端口范围。它要求同时定义起点和终点。
-
hostPorts.max (int32),必需
max 是范围的终点,该值包含在此范围内。
-
hostPorts.min (int32),必需
min 是范围的起点,该值包含在此范围内。
-
-
runtimeClass (RuntimeClassStrategyOptions)
runtimeClass 是一种策略,它将规定 Pod 所被允许的 RuntimeClass。 如果省略此字段,则 Pod 的 runtimeClassName 将不受限制。 该字段的实施取决于被启用的 RuntimeClass 特性门控。
RuntimeClassStrategyOptions 定义一种策略,它将规定 Pod 所被允许的 RuntimeClass。
-
runtimeClass.allowedRuntimeClassNames ([]string),必需
allowedRuntimeClassNames 是可以在 Pod 中指定的 runtimeClass 名称的列表。
*
值意味着允许任何 runtimeClass 值,并且如果设置了*
,则它必须是唯一的列表项。 空列表要求不能设置 runtimeClassName 字段。 -
runtimeClass.defaultRuntimeClassName (string)
defaultRuntimeClassName 是要在 Pod 中设置的默认 runtimeClassName。 该默认值必须被 allowedRuntimeClassNames 列表所允许。nil 值不会改变 Pod 设置。
-
-
volumes ([]string)
volumes 是所允许的卷插件的列表。空的列表意味着不可以使用卷。要允许所有卷,你可以使用
*
。
PodSecurityPolicyList
PodSecurityPolicyList 是 PodSecurityPolicy 对象的列表。
-
apiVersion: policy/v1beta1
-
kind: PodSecurityPolicyList
-
metadata (ListMeta)
标准的列表元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-
items ([]PodSecurityPolicy),必需
items 是 PodSecurityPolicy 对象的列表。
操作
get
读取指定的 PodSecurityPolicy
HTTP 请求
GET /apis/policy/v1beta1/podsecuritypolicies/{name}
参数
-
name (路径参数): string,必需
PodSecurityPolicy 的名称
-
pretty (查询参数): string
响应
200 (PodSecurityPolicy): OK
401: Unauthorized
list
列出或监视 PodSecurityPolicy 类别的对象
HTTP 请求
GET /apis/policy/v1beta1/podsecuritypolicies
参数
-
allowWatchBookmarks (查询参数): boolean
-
continue (查询参数): string
-
fieldSelector (查询参数): string
-
labelSelector (查询参数): string
-
limit (查询参数): integer
-
pretty (查询参数): string
-
resourceVersion (查询参数): string
-
resourceVersionMatch (查询参数): string
-
timeoutSeconds (查询参数): integer
-
watch (查询参数): boolean
响应
200 (PodSecurityPolicyList): OK
401: Unauthorized
create
创建 PodSecurityPolicy
HTTP 请求
POST /apis/policy/v1beta1/podsecuritypolicies
参数
-
body: PodSecurityPolicy,必需
-
dryRun (查询参数): string
-
fieldManager (查询参数): string
-
fieldValidation (查询参数): string
-
pretty (查询参数): string
响应
200 (PodSecurityPolicy): OK
201 (PodSecurityPolicy): Created
202 (PodSecurityPolicy): Accepted
401: Unauthorized
update
替换指定的 PodSecurityPolicy
HTTP 请求
PUT /apis/policy/v1beta1/podsecuritypolicies/{name}
参数
-
name (路径参数): string,必需
PodSecurityPolicy 的名称
-
body: PodSecurityPolicy,必需
-
dryRun (查询参数): string
-
fieldManager (查询参数): string
-
fieldValidation (查询参数): string
-
pretty (查询参数): string
响应
200 (PodSecurityPolicy): OK
201 (PodSecurityPolicy): Created
401: Unauthorized
patch
部分更新指定的 PodSecurityPolicy
HTTP 请求
PATCH /apis/policy/v1beta1/podsecuritypolicies/{name}
参数
-
name (路径参数): string,必需
PodSecurityPolicy 的名称
-
body: Patch,必需
-
dryRun (查询参数): string
-
fieldManager (查询参数): string
-
fieldValidation (查询参数): string
-
force (查询参数): boolean
-
pretty (查询参数): string
响应
200 (PodSecurityPolicy): OK
201 (PodSecurityPolicy): Created
401: Unauthorized
delete
删除 PodSecurityPolicy
HTTP 请求
DELETE /apis/policy/v1beta1/podsecuritypolicies/{name}
参数
-
name (路径参数): string,必需
PodSecurityPolicy 的名称
-
body: DeleteOptions
-
dryRun (查询参数): string
-
gracePeriodSeconds (查询参数): integer
-
pretty (查询参数): string
-
propagationPolicy (查询参数): string
响应
200 (PodSecurityPolicy): OK
202 (PodSecurityPolicy): Accepted
401: Unauthorized
deletecollection
删除 PodSecurityPolicy 的集合
HTTP 请求
DELETE /apis/policy/v1beta1/podsecuritypolicies
参数
-
body: DeleteOptions
-
continue (查询参数): string
-
dryRun (查询参数): string
-
fieldSelector (查询参数): string
-
gracePeriodSeconds (查询参数): integer
-
labelSelector (查询参数): string
-
limit (查询参数): integer
-
pretty (查询参数): string
-
propagationPolicy (查询参数): string
-
resourceVersion (查询参数): string
-
resourceVersionMatch (查询参数): string
-
timeoutSeconds (查询参数): integer
响应
200 (Status): OK
401: Unauthorized