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