SelfSubjectAccessReview
apiVersion: authorization.k8s.io/v1
import "k8s.io/api/authorization/v1"
SelfSubjectAccessReview
SelfSubjectAccessReview 检查当前用户是否可以执行某个操作。不填写 spec.namespace 意味着“在所有命名空间中”。Self 是一个特殊情况,因为用户应该始终能够检查他们是否可以执行某个操作
apiVersion: authorization.k8s.io/v1
kind: SelfSubjectAccessReview
metadata (ObjectMeta)
标准列表元数据。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (SelfSubjectAccessReviewSpec), required
Spec 包含有关正在评估的请求的信息。user 和 groups 必须为空
status (SubjectAccessReviewStatus)
Status 由服务器填充,指示请求是否被允许
SelfSubjectAccessReviewSpec
SelfSubjectAccessReviewSpec 是访问请求的描述。必须设置 ResourceAuthorizationAttributes 和 NonResourceAuthorizationAttributes 中的一个且仅一个
nonResourceAttributes (NonResourceAttributes)
NonResourceAttributes 描述了非资源访问请求的信息
NonResourceAttributes 包含可用于 Authorizer 接口的非资源请求的授权属性
nonResourceAttributes.path (string)
Path 是请求的 URL 路径
nonResourceAttributes.verb (string)
Verb 是标准的 HTTP 动词
resourceAttributes (ResourceAttributes)
ResourceAuthorizationAttributes 描述了资源访问请求的信息
ResourceAttributes 包含可用于 Authorizer 接口的资源请求的授权属性
resourceAttributes.fieldSelector (FieldSelectorAttributes)
fieldSelector 描述了基于字段的访问限制。它只能限制访问,不能扩大访问范围。
*FieldSelectorAttributes 表示一个字段限制的访问。Webhook 作者被鼓励 * 确保 rawSelector 和 requirements 都不会同时设置 * 如果设置了 requirements 字段,请考虑它 * 如果设置了 rawSelector 字段,请不要尝试解析或考虑它。这是为了避免另一个 CVE-2022-2880(即,让不同的系统就如何解析查询达成一致不是我们想要的),有关更多详细信息,请参阅 https://www.oxeye.io/resources/golang-parameter-smuggling-attack。对于 kube-apiserver 的 * SubjectAccessReview 端点: * 如果 rawSelector 为空且 requirements 为空,则请求没有限制。 * 如果 rawSelector 存在且 requirements 为空,则将解析 rawSelector 并限制它(如果解析成功)。 * 如果 rawSelector 为空且 requirements 存在,则应遵守 requirements。 * 如果 rawSelector 存在且 requirements 也存在,则请求无效。*
resourceAttributes.fieldSelector.rawSelector (string)
rawSelector 是将包含在查询参数中的字段选择器的序列化形式。Webhook 实现者被鼓励忽略 rawSelector。kube-apiserver 的 * SubjectAccessReview 将解析 rawSelector,只要 requirements 不存在。
resourceAttributes.fieldSelector.requirements ([]FieldSelectorRequirement)
原子性:在合并期间将被替换
requirements 是字段选择器的已解析解释。所有 requirements 都必须满足,资源实例才能匹配选择器。Webhook 实现者应该处理 requirements,但如何处理它们由 webhook 决定。由于 requirements 只能限制请求,如果 requirements 未被理解,则授权为无限制请求是安全的。
FieldSelectorRequirement 是一个选择器,它包含值、键和一个操作符,该操作符关联键和值。
resourceAttributes.fieldSelector.requirements.key (string), required
key 是 requirements 应用的字段选择器键。
resourceAttributes.fieldSelector.requirements.operator (string), required
operator 表示键与一组值之间的关系。有效的操作符是 In、NotIn、Exists、DoesNotExist。操作符列表将来可能会增加。
resourceAttributes.fieldSelector.requirements.values ([]string)
原子性:在合并期间将被替换
values 是一个字符串值数组。如果操作符是 In 或 NotIn,则 values 数组必须非空。如果操作符是 Exists 或 DoesNotExist,则 values 数组必须为空。
resourceAttributes.group (string)
Group 是资源的 API Group。“*” 表示所有。
resourceAttributes.labelSelector (LabelSelectorAttributes)
labelSelector 描述了基于标签的访问限制。它只能限制访问,不能扩大访问范围。
*LabelSelectorAttributes 表示一个标签限制的访问。Webhook 作者被鼓励 * 确保 rawSelector 和 requirements 都不会同时设置 * 如果设置了 requirements 字段,请考虑它 * 如果设置了 rawSelector 字段,请不要尝试解析或考虑它。这是为了避免另一个 CVE-2022-2880(即,让不同的系统就如何解析查询达成一致不是我们想要的),有关更多详细信息,请参阅 https://www.oxeye.io/resources/golang-parameter-smuggling-attack。对于 kube-apiserver 的 * SubjectAccessReview 端点: * 如果 rawSelector 为空且 requirements 为空,则请求没有限制。 * 如果 rawSelector 存在且 requirements 为空,则将解析 rawSelector 并限制它(如果解析成功)。 * 如果 rawSelector 为空且 requirements 存在,则应遵守 requirements。 * 如果 rawSelector 存在且 requirements 也存在,则请求无效。*
resourceAttributes.labelSelector.rawSelector (string)
rawSelector 是将包含在查询参数中的字段选择器的序列化形式。Webhook 实现者被鼓励忽略 rawSelector。kube-apiserver 的 * SubjectAccessReview 将解析 rawSelector,只要 requirements 不存在。
resourceAttributes.labelSelector.requirements ([]LabelSelectorRequirement)
原子性:在合并期间将被替换
requirements 是标签选择器的已解析解释。所有 requirements 都必须满足,资源实例才能匹配选择器。Webhook 实现者应该处理 requirements,但如何处理它们由 webhook 决定。由于 requirements 只能限制请求,如果 requirements 未被理解,则授权为无限制请求是安全的。
标签选择器 requirement 是一个包含值、键和关系键与值的运算符的选择器。
resourceAttributes.labelSelector.requirements.key (string), required
key 是选择器适用的标签键。
resourceAttributes.labelSelector.requirements.operator (string), required
operator 表示键与一组值之间的关系。有效运算符为 In、NotIn、Exists 和 DoesNotExist。
resourceAttributes.labelSelector.requirements.values ([]string)
原子性:在合并期间将被替换
values 是一个字符串值数组。如果 operator 是 In 或 NotIn,则 values 数组必须非空。如果 operator 是 Exists 或 DoesNotExist,则 values 数组必须为空。此数组在战略合并补丁期间被替换。
resourceAttributes.name (string)
Name 是“get”操作所请求资源的名称,或“delete”操作要删除的资源的名称。“” (空) 表示所有。
resourceAttributes.namespace (string)
Namespace 是所请求操作的命名空间。目前,没有区分“无命名空间”和“所有命名空间”。“” (空) 是 LocalSubjectAccessReviews 的默认值。“” (空) 是集群范围资源的空值。“” (空) 表示 SubjectAccessReview 或 SelfSubjectAccessReview 中命名空间范围资源的“所有”。
resourceAttributes.resource (string)
Resource 是现有的资源类型之一。“*” 表示所有。
resourceAttributes.subresource (string)
Subresource 是现有的资源类型之一。“” 表示无。
resourceAttributes.verb (string)
Verb 是一个 Kubernetes 资源 API 动词,例如:get、list、watch、create、update、delete、proxy。“*” 表示所有。
resourceAttributes.version (string)
Version 是资源的 API Version。“*” 表示所有。
操作
create
创建一个 SelfSubjectAccessReview
HTTP 请求
POST /apis/authorization.k8s.io/v1/selfsubjectaccessreviews
参数
body: SelfSubjectAccessReview, required
dryRun (在查询中): string
fieldManager (在查询中): string
fieldValidation (在查询中): string
pretty (在查询中): string
响应
200 (SelfSubjectAccessReview): OK
201 (SelfSubjectAccessReview): Created
202 (SelfSubjectAccessReview): Accepted
401: 未授权
本页面是自动生成的。
如果你打算报告此页面存在的问题,请在问题描述中提及此页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。