24.2. SecurityContextConstraints [security.openshift.io/v1]
- 描述
- SecurityContextConstraints 监管发出会影响到容器的 SecurityContext 的请求的能力。由于历史原因,SCC 在核心 Kubernetes API 组下公开。该风险已弃用,并将在以后的发行版本中删除 - 用户应使用 security.openshift.io 组来管理 SecurityContextConstraints。兼容性级别 1:在主发行版本中至少提供 12 个月或 3 个次版本(以更长的时间为准)。
- 类型
-
object
- 必填
-
allowHostDirVolumePlugin
-
allowHostIPC
-
allowHostNetwork
-
allowHostPID
-
allowHostPorts
-
allowPrivilegedContainer
-
readOnlyRootFilesystem
-
24.2.1. 规格
属性 | 类型 | 描述 |
---|---|---|
|
| AllowHostDirVolumePlugin 决定策略允许容器是否使用 HostDir 卷插件 |
|
| allowHostIPC 确定策略是否允许容器中的 ipc 主机。 |
|
| allowHostNetwork 决定策略是否允许在 pod 规格中使用 HostNetwork。 |
|
| allowHostPID 确定策略是否允许在容器中主机 pid。 |
|
| allowHostPorts 决定策略是否允许容器中的主机端口。 |
| `` | allowPrivilegeEscalation 决定 pod 是否请求允许特权升级。如果未指定,则默认为 true。 |
|
| allowPrivilegedContainer 决定容器是否可以请求以特权方式运行。 |
| `` | allowedCapabilities 是可请求添加到容器的功能列表。在 pod 作者可自由裁量添加此字段中的功能。您不能列出 AllowedCapabilities 和 RequiredDropCapabilities 中的功能。要允许所有功能,您可以使用 '*'。 |
| `` | AllowedFlexVolumes 是允许的 Flexvolumes 的白名单。empty 或 nil 表示可以使用所有 Flexvolumes。只有在 "Volumes" 字段中允许使用 Flexvolumes 时,此参数才有效。 |
| `` | allowedUnsafeSysctls 是明确允许的不安全 sysctl 列表,默认为 none。每个条目都是普通 sysctl 名称,或以 "" 结尾,在这种情况下,它被视为允许的 sysctl 的前缀。单个 * 意味着允许所有不安全 sysctl。kubelet 必须明确将所有允许的不安全 sysctl 列入白名单,以避免拒绝。示例:e.g. "foo/" 允许 "foo/bar", "foo/baz" 等。例如 "foo prerequisites" allow "foo.bar", "foo.baz" 等。 |
|
| APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
| `` | defaultAddCapabilities 是默认的能力集合,将添加到容器中,除非 pod 规格专门丢弃了该功能。您不能列出 DefaultAddCapabilities 和 RequiredDropCapabilities 中的功能。 |
| `` | defaultAllowPrivilegeEscalation 控制进程是否可以超过父进程的默认设置。 |
| `` | forbiddenSysctls 是一个显式禁止的 sysctl 列表,默认为 none。每个条目都是普通 sysctl 名称,或以 "" 结尾,在这种情况下,它被视为禁止的 sysctl 的前缀。单个 * 意味着禁止所有 sysctl。示例:e.g. "foo/" forbids "foo/bar", "foo/baz" 等。例如,如 "foo.bar" forbids "foo.bar", "foo.baz" 等。 |
| `` | fsGroup 是指定 SecurityContext 使用什么 fs 组的策略。 |
| `` | 有权使用此安全性上下文约束的组 |
|
| kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
| 标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata | |
| `` | 在评估哪个 SCC 根据 Users and Groups 字段中的访问尝试给定 Pod 请求时,优先级会影响 SCC 的排序顺序。int 越大,优先级越高。unset 值被视为 0 优先级。如果多个 SCC 的分数相等,它们将根据限制性最强到最低限制进行排序。如果优先级和限制性都相等,则 SCC 将根据名称进行排序。 |
|
| 设置为 true 时 readOnlyRootFileSystem 将强制容器使用只读根文件系统运行。如果容器特别要求使用非只读根文件系统运行,则 SCC 应该拒绝该 Pod。如果设置为 false,则容器可以使用只读根文件系统运行(如果希望),但不会强制使用它。 |
| `` | requiredDropCapabilities 是将从容器中丢弃的功能。需要丢弃它们,且无法添加。 |
| `` | runAsUser 是策略,它将指定 SecurityContext 中使用什么 RunAsUser。 |
| `` | seLinuxContext 是策略,它将在 SecurityContext 中设置哪些标签。 |
| `` | seccompProfiles 列出了可为 pod 或容器的 seccomp 注解设置的允许的配置集。unset (nil)或空值意味着 pod 或容器不能决定任何配置集。通配符"*"可用于允许所有配置集。用于在为 pod 生成值时,第一个非通配符配置集将用作默认值。 |
| `` | supplementalGroups 是策略,它将指定 SecurityContext 使用了哪些补充组。 |
| `` | 有权使用此安全性上下文约束的用户 |
| `` | 卷是允许的卷插件的白名单。fstype 直接与 VolumeSource 的字段名称对应(azureFile, configMap, emptyDir)。要允许所有卷都使用 "*"。要不允许卷,设置为 ["none"]。 |
24.2.2. API 端点
可用的 API 端点如下:
/apis/security.openshift.io/v1/securitycontextconstraints
-
DELETE
:删除 SecurityContextConstraints 的集合 -
GET
: 列出类型为 SecurityContextConstraints 的对象 -
POST
:创建 SecurityContextConstraints
-
/apis/security.openshift.io/v1/securitycontextconstraints/{name}
-
DELETE
:删除 SecurityContextConstraints -
GET
:读取指定的 SecurityContextConstraints -
PATCH
:部分更新指定的 SecurityContextConstraints -
PUT
:替换指定的 SecurityContextConstraints
-
24.2.2.1. /apis/security.openshift.io/v1/securitycontextconstraints
参数 | 类型 | 描述 |
---|---|---|
|
| 如果为 'true',则输出会经过 pretty print 处理。 |
- HTTP 方法
-
DELETE
- 描述
- 删除 SecurityContextConstraints 的集合
参数 | 类型 | 描述 |
---|---|---|
|
| allowWatchBookmarks请求类型为“BOOKMARK”的监视事件。没有实现书签的服务器可能会忽略这个标志和书签,由服务器自由裁量发送。客户端不应假设书签在任何特定间隔返回,也不会假定服务器在会话期间发送任何 BOOKMARK 事件。如果这不是监视,则忽略此字段。 |
|
| 从服务器检索更多结果时,应设置 continue 选项。由于这个值是定义的服务器,因此客户端只能使用之前查询结果中的 continue 值,并带有相同的查询参数(除 continue 值除外),因此服务器可能会拒绝它无法识别的值。如果指定的 continue 值不再有效,无论是因为过期时间(通常为 5 到十五分钟)还是服务器上的配置更改,服务器将会与继续令牌一起响应 410 ResourceExpired 错误。如果客户端需要一致的列表,则必须重启其列表,而无需 continue 字段。否则,客户端可能会发送另一个带有 410 错误的令牌的列表请求,服务器将使用从下一个密钥开始的列表进行响应,但从最新的快照开始,从上一个列表结果(创建、修改或删除)后,创建、修改或删除第一个列表请求将包含在响应中,只要它们的键位于"下一密钥"后。 当监视为 true 时,不支持此字段。客户端可以从服务器返回的最后一个 resourceVersion 值开始监视,而不错过任何修改。 |
|
| 用于按字段限制返回对象列表的选择器。默认为任何内容。 |
|
| 一个选择器,用于按标签限制返回的对象列表。默认为任何内容。 |
|
| limit 是列表调用返回的最大响应数。如果存在更多项目,服务器会将列表元数据上的 'continue' 字段设置为可用于同一初始查询的值,以检索下一个结果集合。如果过滤了所有请求的对象,设置限制可能会小于请求的项目数量(最多零项),并且客户端应该只使用 continue 字段的存在来确定是否有可用的结果。服务器可能选择不支持 limit 参数,并将返回所有可用结果。如果指定了 limit,并且 continue 字段为空,客户端可能会假设没有更多结果可用。如果 watch 为 true,则不支持此字段。 服务器保证,在使用 continue 时返回的对象与在没有限制的情况下发出单个列表调用时返回的对象将相同,即在发出第一个请求后没有创建、修改或删除的对象。这有时被称为一致的快照,并确保使用限制的客户端接收大量结果的较小的块可以确保它们可以看到所有可能的对象。如果在块列表列表期间更新对象,则返回第一个列表结果时存在的对象版本。 |
|
| resourceVersion 对可能给请求提供服务的资源版本设置一个约束。详情请查看 https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions 默认为未设置 |
|
| resourceVersionMatch 决定 resourceVersion 如何应用到列表调用。强烈建议您为设置 resourceVersion 的列表调用设置 resourceVersionMatch,详情请参阅 https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions。 默认为未设置 |
|
| 'sendInitialEvents=true' 可以与 'watch=true' 一起设置。在这种情况下,监视流将以 synthetic 事件开头,以生成集合中对象的当前状态。发送完所有此类事件后,将发送一个合成"Bookmark"事件。书签将报告与一组对象对应的 ResourceVersion (RV),并标有 '"k8s.io/initial-events-end": "true"' 注解。之后,监视流会照常进行,将与更改对应的监控事件(subsequent to the RV)发送到被监视的对象。 当设置了 'sendInitialEvents' 选项时,我们还需要设置 'resourceVersionMatch' 选项。监视请求的语义如下: - 'resourceVersionMatch' = NotOlderThan 解释为 "data at the provided as the provided as the provided 'resourceVersion'",当状态同步到 'resourceVersion' 时,书签事件至少作为 ListOptions 提供的 "resourceVersion" 提供。如果未设置 'resourceVersion',则会将其解释为 "consistent read",并且当状态在请求开始处理时至少同步时,会发送书签事件。- 'resourceVersionMatch' 设置为任何其他值或取消设置 Invalid 错误。 如果 'resourceVersion="" 或 'resourceVersion="0"' (用于向后兼容的原因)和 false,则默认为 true。 |
|
| list/watch 调用的超时。这限制了调用的持续时间,而不考虑任何活动或不活跃。 |
|
| 观察对上述资源的更改,并将其恢复为添加、更新和删除通知的流。指定 resourceVersion。 |
HTTP 代码 | 响应正文 |
---|---|
200 - OK |
|
401 - Unauthorized | 空 |
- HTTP 方法
-
GET
- 描述
- 列出类型为 SecurityContextConstraints 的对象
参数 | 类型 | 描述 |
---|---|---|
|
| allowWatchBookmarks请求类型为“BOOKMARK”的监视事件。没有实现书签的服务器可能会忽略这个标志和书签,由服务器自由裁量发送。客户端不应假设书签在任何特定间隔返回,也不会假定服务器在会话期间发送任何 BOOKMARK 事件。如果这不是监视,则忽略此字段。 |
|
| 从服务器检索更多结果时,应设置 continue 选项。由于这个值是定义的服务器,因此客户端只能使用之前查询结果中的 continue 值,并带有相同的查询参数(除 continue 值除外),因此服务器可能会拒绝它无法识别的值。如果指定的 continue 值不再有效,无论是因为过期时间(通常为 5 到十五分钟)还是服务器上的配置更改,服务器将会与继续令牌一起响应 410 ResourceExpired 错误。如果客户端需要一致的列表,则必须重启其列表,而无需 continue 字段。否则,客户端可能会发送另一个带有 410 错误的令牌的列表请求,服务器将使用从下一个密钥开始的列表进行响应,但从最新的快照开始,从上一个列表结果(创建、修改或删除)后,创建、修改或删除第一个列表请求将包含在响应中,只要它们的键位于"下一密钥"后。 当监视为 true 时,不支持此字段。客户端可以从服务器返回的最后一个 resourceVersion 值开始监视,而不错过任何修改。 |
|
| 用于按字段限制返回对象列表的选择器。默认为任何内容。 |
|
| 一个选择器,用于按标签限制返回的对象列表。默认为任何内容。 |
|
| limit 是列表调用返回的最大响应数。如果存在更多项目,服务器会将列表元数据上的 'continue' 字段设置为可用于同一初始查询的值,以检索下一个结果集合。如果过滤了所有请求的对象,设置限制可能会小于请求的项目数量(最多零项),并且客户端应该只使用 continue 字段的存在来确定是否有可用的结果。服务器可能选择不支持 limit 参数,并将返回所有可用结果。如果指定了 limit,并且 continue 字段为空,客户端可能会假设没有更多结果可用。如果 watch 为 true,则不支持此字段。 服务器保证,在使用 continue 时返回的对象与在没有限制的情况下发出单个列表调用时返回的对象将相同,即在发出第一个请求后没有创建、修改或删除的对象。这有时被称为一致的快照,并确保使用限制的客户端接收大量结果的较小的块可以确保它们可以看到所有可能的对象。如果在块列表列表期间更新对象,则返回第一个列表结果时存在的对象版本。 |
|
| resourceVersion 对可能给请求提供服务的资源版本设置一个约束。详情请查看 https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions 默认为未设置 |
|
| resourceVersionMatch 决定 resourceVersion 如何应用到列表调用。强烈建议您为设置 resourceVersion 的列表调用设置 resourceVersionMatch,详情请参阅 https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions。 默认为未设置 |
|
| 'sendInitialEvents=true' 可以与 'watch=true' 一起设置。在这种情况下,监视流将以 synthetic 事件开头,以生成集合中对象的当前状态。发送完所有此类事件后,将发送一个合成"Bookmark"事件。书签将报告与一组对象对应的 ResourceVersion (RV),并标有 '"k8s.io/initial-events-end": "true"' 注解。之后,监视流会照常进行,将与更改对应的监控事件(subsequent to the RV)发送到被监视的对象。 当设置了 'sendInitialEvents' 选项时,我们还需要设置 'resourceVersionMatch' 选项。监视请求的语义如下: - 'resourceVersionMatch' = NotOlderThan 解释为 "data at the provided as the provided as the provided 'resourceVersion'",当状态同步到 'resourceVersion' 时,书签事件至少作为 ListOptions 提供的 "resourceVersion" 提供。如果未设置 'resourceVersion',则会将其解释为 "consistent read",并且当状态在请求开始处理时至少同步时,会发送书签事件。- 'resourceVersionMatch' 设置为任何其他值或取消设置 Invalid 错误。 如果 'resourceVersion="" 或 'resourceVersion="0"' (用于向后兼容的原因)和 false,则默认为 true。 |
|
| list/watch 调用的超时。这限制了调用的持续时间,而不考虑任何活动或不活跃。 |
|
| 观察对上述资源的更改,并将其恢复为添加、更新和删除通知的流。指定 resourceVersion。 |
HTTP 代码 | 响应正文 |
---|---|
200 - OK | |
401 - Unauthorized | 空 |
- HTTP 方法
-
POST
- 描述
- 创建 SecurityContextConstraints
参数 | 类型 | 描述 |
---|---|---|
|
| 出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理 |
|
| fieldmanager 是与进行这些更改的参与者或实体相关联的名称。该值必须小于或是 128 个字符长,且仅包含可打印的字符,如 https://golang.org/pkg/unicode/#IsPrint 所定义的那样。 |
|
| fieldValidation 指示服务器如何处理包含了未知或重复字段的请求 (POST/PUT/PATCH) 中的对象。有效值为: - Ignore :忽略从对象中静默丢弃的未知字段,并将忽略所有除最后一个重复字段以外的所有字段。这是 v1.23 版本之前的默认行为- Warn: 这会通过标准的警告响应头为从对象丢弃的每个未知字段以及遇到的每个重复字段,发送警告。如果没有其他错误,请求仍会成功,且只保留重复字段的最后一个。这是 v1.23+ 的的默认行为 - Strict: 如果从对象中删除了任何未知字段,或者存在任何重复字段,请求将失败并带有 BadRequest 错误。从服务器返回的错误将包含遇到的,以及重复的字段。 |
参数 | 类型 | 描述 |
---|---|---|
|
HTTP 代码 | 响应正文 |
---|---|
200 - OK | |
201 - Created | |
202 - Accepted | |
401 - Unauthorized | 空 |
24.2.2.2. /apis/security.openshift.io/v1/securitycontextconstraints/{name}
参数 | 类型 | 描述 |
---|---|---|
|
| SecurityContextConstraints 的名称 |
参数 | 类型 | 描述 |
---|---|---|
|
| 如果为 'true',则输出会经过 pretty print 处理。 |
- HTTP 方法
-
DELETE
- 描述
- 删除 SecurityContextConstraints
参数 | 类型 | 描述 |
---|---|---|
|
| 出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理 |
|
| 应该删除对象前的持续时间(以秒为单位)。值必须是非负整数。值零表示立即删除。如果这个值为 nil,则使用指定类型的默认宽限期。如果没有指定,则默认为每个对象值。零表示立即删除。 |
|
| deprecated :请使用 PropagationPolicy,此字段将在 1.7 中弃用。依赖的对象应该被孤立。如果为 true/false,则"orphan"终结器将从对象的终结器列表添加到/删除。可以设置此字段或 PropagationPolicy,但不能同时设置这两个字段。 |
|
| 是否以及如何执行垃圾回收。可以设置此字段或 OrphanDependents,但不能同时设置这两个字段。默认策略由 metadata.finalizers 和特定于资源的默认策略中设置的现有终结器决定。可接受值为:'Orphan' - 孤立依赖项; 'Background' - 允许垃圾收集器删除后台依赖的依赖项;'Foreground' - 一个级联策略,会删除前台所有依赖的级联策略。 |
参数 | 类型 | 描述 |
---|---|---|
|
HTTP 代码 | 响应正文 |
---|---|
200 - OK |
|
202 - Accepted |
|
401 - Unauthorized | 空 |
- HTTP 方法
-
GET
- 描述
- 阅读指定的 SecurityContextConstraints
参数 | 类型 | 描述 |
---|---|---|
|
| resourceVersion 对可能给请求提供服务的资源版本设置一个约束。详情请查看 https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions 默认为未设置 |
HTTP 代码 | 响应正文 |
---|---|
200 - OK | |
401 - Unauthorized | 空 |
- HTTP 方法
-
PATCH
- 描述
- 部分更新指定的 SecurityContextConstraints
参数 | 类型 | 描述 |
---|---|---|
|
| 出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理 |
|
| fieldmanager 是与进行这些更改的参与者或实体相关联的名称。该值必须小于或是 128 个字符长,且仅包含可打印的字符,如 https://golang.org/pkg/unicode/#IsPrint 所定义的那样。应用请求需要此字段(application/apply-patch),但对于非应用补丁类型(JsonPatch、MergePatch、strategicMergePatch)是可选的。 |
|
| fieldValidation 指示服务器如何处理包含了未知或重复字段的请求 (POST/PUT/PATCH) 中的对象。有效值为: - Ignore :忽略从对象中静默丢弃的未知字段,并将忽略所有除最后一个重复字段以外的所有字段。这是 v1.23 版本之前的默认行为- Warn: 这会通过标准的警告响应头为从对象丢弃的每个未知字段以及遇到的每个重复字段,发送警告。如果没有其他错误,请求仍会成功,且只保留重复字段的最后一个。这是 v1.23+ 的的默认行为 - Strict: 如果从对象中删除了任何未知字段,或者存在任何重复字段,请求将失败并带有 BadRequest 错误。从服务器返回的错误将包含遇到的,以及重复的字段。 |
|
| 强制尝试"强制"应用请求。这意味着用户将重新排序由其他人员拥有的冲突字段。对于非应用补丁请求,必须取消设置 force 标志。 |
参数 | 类型 | 描述 |
---|---|---|
|
|
HTTP 代码 | 响应正文 |
---|---|
200 - OK | |
401 - Unauthorized | 空 |
- HTTP 方法
-
PUT
- 描述
- 替换指定的 SecurityContextConstraints
参数 | 类型 | 描述 |
---|---|---|
|
| 出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理 |
|
| fieldmanager 是与进行这些更改的参与者或实体相关联的名称。该值必须小于或是 128 个字符长,且仅包含可打印的字符,如 https://golang.org/pkg/unicode/#IsPrint 所定义的那样。 |
|
| fieldValidation 指示服务器如何处理包含了未知或重复字段的请求 (POST/PUT/PATCH) 中的对象。有效值为: - Ignore :忽略从对象中静默丢弃的未知字段,并将忽略所有除最后一个重复字段以外的所有字段。这是 v1.23 版本之前的默认行为- Warn: 这会通过标准的警告响应头为从对象丢弃的每个未知字段以及遇到的每个重复字段,发送警告。如果没有其他错误,请求仍会成功,且只保留重复字段的最后一个。这是 v1.23+ 的的默认行为 - Strict: 如果从对象中删除了任何未知字段,或者存在任何重复字段,请求将失败并带有 BadRequest 错误。从服务器返回的错误将包含遇到的,以及重复的字段。 |
参数 | 类型 | 描述 |
---|---|---|
|
HTTP 代码 | 响应正文 |
---|---|
200 - OK | |
201 - Created | |
401 - Unauthorized | 空 |