SubjectAccessReview
apiVersion: authorization.k8s.io/v1
import "k8s.io/api/authorization/v1"
SubjectAccessReview
SubjectAccessReview 用于检查用户或组是否可以执行某个操作。
apiVersion: authorization.k8s.io/v1
kind: SubjectAccessReview
metadata (ObjectMeta)
标准列表元数据。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (SubjectAccessReviewSpec), 必需
Spec 包含有关正在评估的请求的信息
status (SubjectAccessReviewStatus)
Status 由服务器填充,指示请求是否被允许
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
参数
body: SubjectAccessReview, 必需
dryRun (在查询中): string
fieldManager (在查询中): string
fieldValidation (在查询中): string
pretty (在查询中): string
响应
200 (SubjectAccessReview): 成功
201 (SubjectAccessReview): 已创建
202 (SubjectAccessReview): 已接受
401: 未授权
本页面是自动生成的。
如果你打算报告此页面存在的问题,请在问题描述中提及此页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。