kubectl auth can-i显示允许get SubjectAccessReview但实际调用报错的原因
权限验证与实际操作不符的原因解析
kubectl auth can-i仅校验RBAC权限,不检查API方法是否存在kubectl auth can-i get SubjectAccessReview只会验证你的RBAC权限是否允许对subjectaccessreviews资源执行get操作,但它不会去确认Kubernetes API Server是否真的实现了该资源的get方法。这个命令的核心作用是做RBAC规则校验,而非API兼容性校验。SubjectAccessReview资源的设计不支持
get操作
SubjectAccessReview是用于一次性权限校验请求的特殊资源:你只能通过create操作提交权限校验的请求参数,API Server处理后返回校验结果,这个资源本身不会被持久化存储,不存在可以被get/list的实例。所以API Server根本没有实现get这个HTTP方法,执行kubectl get自然会返回MethodNotAllowed。RBAC规则和API实际支持操作可能脱节
RBAC权限是声明式配置的,可能出现权限规则允许了某个操作,但对应的API资源并没有实现该操作的情况。你这里就是典型案例:RBAC角色给了你get subjectaccessreviews的权限,但该资源只支持create操作,导致权限验证通过但实际执行失败。
内容的提问来源于stack exchange,提问作者jersey bean
相关产品推荐
相关产品推荐

