如何查看自己在Kubernetes集群中的所有权限列表?
查看Kubernetes集群中你的所有权限汇总
方法1:遍历资源检查权限
kubectl auth can-i '*' '*'返回no是因为你没有所有资源的全量权限,但可以通过遍历资源类型来逐一验证权限:
- 先获取集群支持的所有资源类型:
kubectl api-resources --verbs=list -o name | sort
- 运行以下脚本遍历每个资源,检查常见操作的权限:
for resource in $(kubectl api-resources --verbs=list -o name); do echo "=== 资源:$resource ===" kubectl auth can-i list $resource kubectl auth can-i get $resource kubectl auth can-i create $resource kubectl auth can-i update $resource kubectl auth can-i delete $resource done
你可以根据需要修改脚本中的操作列表,比如添加patch、watch等。
方法2:查看绑定的角色与权限
如果你的权限通过RoleBinding或ClusterRoleBinding分配,可直接查看这些绑定及对应的角色权限:
集群级权限绑定
kubectl get clusterrolebindings -o json | jq '.items[] | select(.subjects[]? | .name == "'$(kubectl config current-context | cut -d'/' -f2)'") | .roleRef.name'
根据返回的集群角色名称,查看具体权限:
kubectl describe clusterrole <集群角色名称>
命名空间级权限绑定(需有权限查看)
kubectl get rolebindings --all-namespaces -o json | jq '.items[] | select(.subjects[]? | .name == "'$(kubectl config current-context | cut -d'/' -f2)'") | {命名空间: .metadata.namespace, 角色: .roleRef.name}'
查看对应命名空间角色的权限:
kubectl describe role <角色名称> -n <命名空间>
方法3:生成权限绑定报告
使用kubectl auth reconcile整理所有绑定到你的角色及权限规则:
kubectl auth reconcile -f <(kubectl get clusterrolebindings,rolebindings --all-namespaces -o json | jq '.items[] | select(.subjects[]? | .name == "'$(kubectl config current-context | cut -d'/' -f2)'")') -o yaml
注意:如果没有查看RoleBinding/ClusterRoleBinding的权限,方法1是最可靠的方式。
内容的提问来源于stack exchange,提问作者Surya
相关产品推荐
相关产品推荐

