主体访问评审

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

apiVersion: authorization.k8s.io/v1

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

主体访问评审

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


SubjectAccessReviewSpec

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


  • extra (map[string][]string)

    Extra 对应于认证器的 user.Info.GetExtra() 方法。由于这是授权器的输入,因此在此需要一个映射。

  • groups ([]string)

    Atomic:合并期间将被替换

    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 描述了基于字段的访问限制。它只能限制访问,不能扩大访问范围。

      该字段处于 Alpha 阶段。要使用此字段,必须启用 AuthorizeWithSelectors feature gate(默认禁用)。

      *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。只要 requirements 不存在,kube-apiserver 的 *SubjectAccessReview 就会解析 rawSelector。

      • resourceAttributes.fieldSelector.requirements ([]FieldSelectorRequirement)

        Atomic:合并期间将被替换

        requirements 是字段选择器的解析解释。资源实例必须满足所有 requirements 才能匹配选择器。Webhook 实现应处理 requirements,但如何处理取决于 Webhook。由于 requirements 只能限制请求,因此如果 requirements 未被理解,则将其授权为不受限制的请求是安全的。

        FieldSelectorRequirement 是一个包含值、键以及关联键和值的操作符的选择器。

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

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

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

          operator 表示键与一组值之间的关系。有效的操作符是 In, NotIn, Exists, DoesNotExist。操作符列表将来可能会增加。

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

          Atomic:合并期间将被替换

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

    • resourceAttributes.group (string)

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

    • resourceAttributes.labelSelector (LabelSelectorAttributes)

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

      该字段处于 Alpha 阶段。要使用此字段,必须启用 AuthorizeWithSelectors feature gate(默认禁用)。

      *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。只要 requirements 不存在,kube-apiserver 的 *SubjectAccessReview 就会解析 rawSelector。

      • resourceAttributes.labelSelector.requirements ([]LabelSelectorRequirement)

        Atomic:合并期间将被替换

        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)

          Atomic:合并期间将被替换

          values 是一个字符串值数组。如果操作符是 In 或 NotIn,则 values 数组必须非空。如果操作符是 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 和 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): OK

201 (SubjectAccessReview): Created

202 (SubjectAccessReview): Accepted

401: 未授权

本页面是自动生成的。

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

最后修改时间:2024 年 8 月 28 日 下午 6:01 PST:更新 v1.31 的生成 API 参考 (8ba98c79c1)