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() 方法,来自 authenticator。由于它作为输入传递给 authorizer,因此需要在这里进行反射。
groups ([]string)
原子:将在合并期间被替换
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 描述了基于字段的访问限制。它只能限制访问,而不能扩展访问范围。
*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。kube-apiserver 的 *SubjectAccessReview 将解析 rawSelector,只要 requirements 不存在。
resourceAttributes.fieldSelector.requirements ([]FieldSelectorRequirement)
原子:将在合并期间被替换
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,则值数组必须非空。如果运算符是 Exists 或 DoesNotExist,则值数组必须为空。
resourceAttributes.group (string)
Group 是资源的 API 组。 "*" 表示所有。
resourceAttributes.labelSelector (LabelSelectorAttributes)
labelSelector 描述了基于标签的访问限制。它只能限制访问,而不能扩展访问范围。
*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。kube-apiserver 的 *SubjectAccessReview 将解析 rawSelector,只要 requirements 不存在。
resourceAttributes.labelSelector.requirements ([]LabelSelectorRequirement)
原子:将在合并期间被替换
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 的“all”。
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,则授权器无法确定是否授权该操作。Denied 不得在 Allowed 为 True 时为 True。
evaluationError (string)
EvaluationError 表示在授权检查期间发生了一些错误。完全有可能在尽管如此,仍然能够确定授权状态。例如,RBAC 可能缺少一个角色,但仍然存在足够的角色并绑定到推理请求。
reason (string)
Reason 是可选的。它表示请求被允许或拒绝的原因。
操作
create 创建 SubjectAccessReview
HTTP 请求
POST /apis/authorization.k8s.io/v1/subjectaccessreviews
Parameters
body: SubjectAccessReview, 必需
dryRun (在查询中): string
fieldManager (在查询中): string
fieldValidation (在查询中): string
pretty (在查询中): string
响应
200 (SubjectAccessReview): OK
201 (SubjectAccessReview): Created
202 (SubjectAccessReview): Accepted
401: 未授权
本页面是自动生成的。
如果您打算报告此页面的问题,请在您的问题描述中提及该页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。