SelfSubjectAccessReview

SelfSubjectAccessReview 检查当前用户是否可以执行某个操作。

apiVersion: authorization.k8s.io/v1

import "k8s.io/api/authorization/v1"

SelfSubjectAccessReview

SelfSubjectAccessReview 检查当前用户是否可以执行某个操作。不填写 spec.namespace 意味着“在所有命名空间中”。Self 是一个特殊情况,因为用户应该始终能够检查他们是否可以执行某个操作


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

参数

响应

200 (SelfSubjectAccessReview): OK

201 (SelfSubjectAccessReview): Created

202 (SelfSubjectAccessReview): Accepted

401: 未授权

本页面是自动生成的。

如果你打算报告此页面存在的问题,请在问题描述中提及此页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。

上次修改时间:2025 年 9 月 4 日 下午 3:37 PST:更新 v1.34 的 API 资源参考 (3e10e8c195)