SubjectAccessReview

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

apiVersion: authorization.k8s.io/v1

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

SubjectAccessReview

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


SubjectAccessReviewSpec

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


  • extra (map[string][]string)

    Extra 对应于 user.Info.GetExtra() 方法,来自 authenticator。由于它作为输入传递给 authorizer,因此需要在这里进行反射。

  • groups ([]string)

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

    Groups 是您正在测试的组。

  • 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 是字段选择器的解析解释。所有要求都必须满足才能使资源实例与选择器匹配。Webhook 实现应处理 requirements,但如何处理由 Webhook 决定。由于 requirements 只能限制请求,因此如果未理解 requirements,则授权为无限请求是安全的。

        FieldSelectorRequirement 是一个选择器,包含值、键和关系键和值的运算符。

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

          key 是 requirement 适用的字段选择器键。

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

          operator 表示键与一组值的关系。有效的运算符包括 In、NotIn、Exists、DoesNotExist。运算符列表将来可能会增长。

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

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

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

    • resourceAttributes.group (string)

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

    • 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 是标签选择器的解析解释。所有要求都必须满足才能使资源实例与选择器匹配。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 是字符串值数组。如果运算符是 In 或 NotIn,则 values 数组必须非空。如果运算符是 Exists 或 DoesNotExist,则 values 数组必须为空。此数组在战略合并补丁期间会被替换。

    • resourceAttributes.name (string)

      Name 是正在请求的资源的名称,对于“get”请求或删除的“delete”请求。 ""(空)表示所有。

    • resourceAttributes.namespace (string)

      Namespace 是正在请求的操作的命名空间。目前,命名空间和所有命名空间之间没有区别 ""(空)默认为 LocalSubjectAccessReviews ""(空)对于集群范围的资源为空 ""(空)表示命名空间范围的资源来自 SubjectAccessReview 或 SelfSubjectAccessReview 的“all”。

    • 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,则授权器无法确定是否授权该操作。Denied 不得在 Allowed 为 True 时为 True。

  • evaluationError (string)

    EvaluationError 表示在授权检查期间发生了一些错误。完全有可能在尽管如此,仍然能够确定授权状态。例如,RBAC 可能缺少一个角色,但仍然存在足够的角色并绑定到推理请求。

  • reason (string)

    Reason 是可选的。它表示请求被允许或拒绝的原因。

操作


create 创建 SubjectAccessReview

HTTP 请求

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

Parameters

响应

200 (SubjectAccessReview): OK

201 (SubjectAccessReview): Created

202 (SubjectAccessReview): Accepted

401: 未授权

本页面是自动生成的。

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

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