SubjectAccessReview

SubjectAccessReview 用于检查用户或组是否可以执行某个操作。

apiVersion: authorization.k8s.io/v1

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

SubjectAccessReview

SubjectAccessReview 用于检查用户或组是否可以执行某个操作。


SubjectAccessReviewSpec

SubjectAccessReviewSpec 是访问请求的描述。必须设置 ResourceAuthorizationAttributes 和 NonResourceAuthorizationAttributes 中的一个,且仅一个。


  • extra (map[string][]string)

    Extra 对应 authenticator 的 User.Info.GetExtra() 方法。由于这是授权器的输入,因此需要在此处进行反射。

  • groups ([]string)

    原子性:在合并期间将被替换

    Groups 是您正在测试的组。

  • nonResourceAttributes (NonResourceAttributes)

    NonResourceAttributes 描述了非资源访问请求的信息。

    NonResourceAttributes 包括授权器接口的非资源请求的授权属性

    • nonResourceAttributes.path (string)

      Path 是请求的 URL 路径。

    • nonResourceAttributes.verb (string)

      Verb 是标准的 HTTP 动词。

  • resourceAttributes (ResourceAttributes)

    ResourceAuthorizationAttributes 描述了资源访问请求的信息。

    ResourceAttributes 包括授权器接口的资源请求的授权属性

    • resourceAttributes.fieldSelector (FieldSelectorAttributes)

      fieldSelector 描述了基于字段的访问限制。它只能限制访问,不能扩大访问范围。

      *FieldSelectorAttributes 指示了基于字段的有限访问。鼓励 Webhook 作者 * 确保 rawSelector 和 requirements 不会同时设置 * 如果设置了 requirements,请考虑 requirements 字段 * 如果设置了 rawSelector,则不尝试解析或考虑 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), 必需

          key 是 requirements 应用的字段选择器键。

        • resourceAttributes.fieldSelector.requirements.operator (string), 必需

          operator 表示键与一组值之间的关系。有效运算符为 In、NotIn、Exists、DoesNotExist。运算符列表未来可能会增加。

        • resourceAttributes.fieldSelector.requirements.values ([]string)

          原子性:在合并期间将被替换

          values 是一个字符串值数组。如果 operator 是 In 或 NotIn,则 values 数组必须非空。如果 operator 是 Exists 或 DoesNotExist,则 values 数组必须为空。

    • resourceAttributes.group (string)

      Group 是资源的 API 组。'*' 表示所有。

    • resourceAttributes.labelSelector (LabelSelectorAttributes)

      labelSelector 描述了基于标签的访问限制。它只能限制访问,不能扩大访问范围。

      *LabelSelectorAttributes 指示了基于标签的有限访问。鼓励 Webhook 作者 * 确保 rawSelector 和 requirements 不会同时设置 * 如果设置了 requirements,请考虑 requirements 字段 * 如果设置了 rawSelector,则不尝试解析或考虑 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), 必需

          key 是选择器适用的标签键。

        • resourceAttributes.labelSelector.requirements.operator (string), 必需

          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 版本。'*' 表示所有。

  • uid (string)

    关于请求用户的 UID 信息。

  • user (string)

    User 是您正在测试的用户。如果您指定了“User”但未指定“Groups”,则解释为“如果 User 不属于任何组,会怎样?”

SubjectAccessReviewStatus

SubjectAccessReviewStatus


  • allowed (boolean), 必需

    Allowed 是必需的。如果操作被允许,则为 true,否则为 false。

  • denied (boolean)

    Denied 是可选的。如果操作被拒绝,则为 true,否则为 false。如果 allowed 为 false 且 denied 也为 false,则授权器对是否授权该操作没有意见。如果 allowed 为 true,则 denied 不能为 true。

  • evaluationError (string)

    EvaluationError 指示在授权检查期间发生了某种错误。即使发生错误,仍然可以继续确定授权状态。例如,RBAC 可能缺少一个角色,但仍然存在足够数量的角色并已绑定,足以对请求进行推理。

  • reason (string)

    Reason 是可选的。它指出了请求被允许或被拒绝的原因。

操作


create 创建一个 SubjectAccessReview

HTTP 请求

POST /apis/authorization.k8s.io/v1/subjectaccessreviews

参数

响应

200 (SubjectAccessReview): 成功

201 (SubjectAccessReview): 已创建

202 (SubjectAccessReview): 已接受

401: 未授权

本页面是自动生成的。

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

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