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() 方法。 由于它是授权器的输入,因此需要在此处进行反射。

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

      此字段为 alpha 级别。 要使用此字段,您必须启用 AuthorizeWithSelectors 特性门控(默认禁用)。

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

      • resourceAttributes.fieldSelector.requirements ([]FieldSelectorRequirement)

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

        requirements 是字段选择器的解析解释。 必须满足所有 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,则 values 数组必须为非空。 如果运算符为 Exists 或 DoesNotExist,则 values 数组必须为空。

    • resourceAttributes.group (string)

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

    • resourceAttributes.labelSelector (LabelSelectorAttributes)

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

      此字段为 alpha 级别。 要使用此字段,您必须启用 AuthorizeWithSelectors 特性门控(默认禁用)。

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

      • 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 是字符串值数组。 如果运算符为 In 或 NotIn,则 values 数组必须为非空。 如果运算符为 Exists 或 DoesNotExist,则 values 数组必须为空。 在策略合并修补期间替换此数组。

    • resourceAttributes.name (string)

      Name 是为“get”请求的资源名称,或者为“delete”删除的资源名称。“” (空) 表示所有。

    • resourceAttributes.namespace (string)

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

    • resourceAttributes.resource (字符串)

      资源是指现有的资源类型之一。“*”表示全部。

    • resourceAttributes.subresource (字符串)

      子资源是指现有的资源类型之一。“”表示无。

    • resourceAttributes.verb (字符串)

      动词是 Kubernetes 资源 API 的动词,例如:get、list、watch、create、update、delete、proxy。“*”表示全部。

    • resourceAttributes.version (字符串)

      版本是资源的 API 版本。“*”表示全部。

  • uid (字符串)

    关于请求用户的 UID 信息。

  • user (字符串)

    用户是你要测试的用户。如果你指定了“用户”但没有指定“组”,则解释为“如果用户不是任何组的成员会怎样”

SubjectAccessReviewStatus

SubjectAccessReviewStatus


  • allowed (布尔值),必需

    Allowed 是必需的。如果允许该操作,则为 True,否则为 False。

  • denied (布尔值)

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

  • evaluationError (字符串)

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

  • reason (字符串)

    Reason 是可选的。它指示为什么允许或拒绝请求。

操作


create 创建 SubjectAccessReview

HTTP 请求

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

参数

响应

200 (SubjectAccessReview): 正常

201 (SubjectAccessReview): 已创建

202 (SubjectAccessReview): 已接受

401: 未授权

此页面是自动生成的。

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

上次修改时间:2024 年 8 月 28 日下午 6:01(太平洋标准时间):为 v1.31 更新生成的 API 参考 (8ba98c79c1)