如何使用kubectl auth can-i命令验证命名空间中PodSecurityPolicy的use权限?命令报错排查与用法正确性验证
解决
kubectl auth can-i检查PSP权限的参数错误问题 你遇到的错误完全是因为命令的参数格式不符合要求,咱们一步步来修正:
1. 修正kubectl auth can-i命令格式
kubectl auth can-i要求的参数顺序是:verb → resource → [可选的resourceName],而且针对PodSecurityPolicy,需要使用完整的资源类型名称podsecuritypolicies(或者正确的别名用法)。你原来的命令里用了psp作为资源类型,虽然它是别名,但在这个命令场景下需要调整写法。
正确的命令有两种写法,任选其一即可:
- 写法一:合并资源类型与名称
kubectl auth --as=system:serviceaccount:mytest1:default can-i use podsecuritypolicies/00-mytest1 - 写法二:分开指定资源类型和名称
kubectl auth --as=system:serviceaccount:mytest1:default can-i use podsecuritypolicies 00-mytest1
执行修正后的命令,就能正常返回yes或no了。
2. 验证你的RBAC配置正确性
从你提供的psp.yaml、role.yaml和rb.yaml来看,你的权限配置是完全合法的:
- PSP
00-mytest1定义了符合要求的安全约束规则 - Role
mytest1精准授权了use操作到指定的PSP资源 - RoleBinding正确将该Role绑定到了
mytest1命名空间的default服务账号
虽然PodSecurityPolicy是集群级资源,但Kubernetes允许通过命名空间级的Role+RoleBinding给命名空间内的主体授权使用特定PSP,这种配置方式是有效的,所以只要命令正确,应该会返回yes。
内容的提问来源于stack exchange,提问作者jack_t
相关产品推荐
相关产品推荐

