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 包括可用于向授权器接口发出非资源请求的授权属性

    • nonResourceAttributes.path (字符串)

      Path 是请求的 URL 路径

    • nonResourceAttributes.verb (字符串)

      Verb 是标准 HTTP 动词

  • resourceAttributes (ResourceAttributes)

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

    ResourceAttributes 包括可用于向授权器接口发出资源请求的授权属性

    • resourceAttributes.fieldSelector (FieldSelectorAttributes)

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

      此字段为 Alpha 级别。要使用此字段,您必须启用 AuthorizeWithSelectors 功能门(默认禁用)。

      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 (字符串)

        rawSelector 是将包含在查询参数中的字段选择器的序列化。鼓励 Webhook 实现忽略 rawSelector。kube-apiserver 的 *SubjectAccessReview 将解析 rawSelector,只要不存在 requirements。

      • resourceAttributes.fieldSelector.requirements ([]FieldSelectorRequirement)

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

        requirements 是对字段选择器的解析解释。要使资源实例与选择器匹配,必须满足所有要求。Webhook 实现应处理 requirements,但如何处理取决于 webhook。由于 requirements 只能限制请求,因此如果无法理解 requirements,则可以安全地授权为无限制的请求。

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

        • resourceAttributes.fieldSelector.requirements.key (字符串),必需

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

        • resourceAttributes.fieldSelector.requirements.operator (字符串),必需

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

        • resourceAttributes.fieldSelector.requirements.values ([]字符串)

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

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

    • resourceAttributes.group (字符串)

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

    • resourceAttributes.labelSelector (LabelSelectorAttributes)

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

      此字段为 Alpha 级别。要使用此字段,您必须启用 AuthorizeWithSelectors 功能门(默认禁用)。

      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 (字符串)

        rawSelector 是将包含在查询参数中的字段选择器的序列化。鼓励 Webhook 实现忽略 rawSelector。kube-apiserver 的 *SubjectAccessReview 将解析 rawSelector,只要不存在 requirements。

      • resourceAttributes.labelSelector.requirements ([]LabelSelectorRequirement)

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

        requirements 是对标签选择器的解析解释。要使资源实例与选择器匹配,必须满足所有要求。Webhook 实现应处理 requirements,但如何处理取决于 webhook。由于 requirements 只能限制请求,因此如果无法理解 requirements,则可以安全地授权为无限制的请求。

        标签选择器要求是一个选择器,其中包含值、键和关联键和值的运算符。

        • resourceAttributes.labelSelector.requirements.key (字符串),必需

          key 是选择器应用到的标签键。

        • resourceAttributes.labelSelector.requirements.operator (字符串),必需

          operator 表示键与一组值的关系。有效运算符为 In、NotIn、Exists 和 DoesNotExist。

        • resourceAttributes.labelSelector.requirements.values ([]字符串)

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

          values 是一个字符串值数组。如果运算符为 In 或 NotIn,则 values 数组必须为非空。如果运算符为 Exists 或 DoesNotExist,则 values 数组必须为空。此数组在战略合并补丁期间被替换。

    • resourceAttributes.name (字符串)

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

    • resourceAttributes.namespace (字符串)

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

    • resourceAttributes.resource (字符串)

      Resource 是现有资源类型之一。“*”表示所有。

    • resourceAttributes.subresource (字符串)

      Subresource 是现有资源类型之一。“”表示无。

    • resourceAttributes.verb (字符串)

      Verb 是 kubernetes 资源 API 动词,例如:get、list、watch、create、update、delete、proxy。“*”表示所有。

    • resourceAttributes.version (字符串)

      Version 是资源的 API 版本。“*”表示所有。

操作


create 创建 SelfSubjectAccessReview

HTTP 请求

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

参数

响应

200 (SelfSubjectAccessReview): OK

201 (SelfSubjectAccessReview): 已创建

202 (SelfSubjectAccessReview): 已接受

401: 未经授权

此页面是自动生成的。

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

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