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 对应于来自身份验证器的 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
参数
body: SubjectAccessReview,必需
dryRun (在查询中): 字符串
fieldManager (在查询中): 字符串
fieldValidation (在查询中): 字符串
pretty (在查询中): 字符串
响应
200 (SubjectAccessReview): 正常
201 (SubjectAccessReview): 已创建
202 (SubjectAccessReview): 已接受
401: 未授权
此页面是自动生成的。
如果你计划报告此页面的问题,请在你的问题描述中提及该页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。