当前,我有一个ABAC策略,该策略赋予“ system:autheticated”所有访问权限。当我定义了此功能时,K8s可以正常启动,但是如果删除它,则K8s不会启动。我试图找出K8s集群上使用了哪些名称空间,服务帐户,组,用户等,以便在ABAC策略中定义一组特定的用户/组。
如何获取K8s集群中的组和用户?我在用着 “ kubectl --namespace = kube-system获取服务帐户” 获取服务帐户...但是在哪里定义了组和用户?
答案 0 :(得分:0)
对于组,您可以尝试(例如“ system:masters”):
kubectl get clusterrolebindings -o json | jq -r '.items[] | select(.subjects[0].kind=="Group") | select(.subjects[0].name=="system:masters") | .metadata.name'
此外,您可以一次在kubectl命令中添加--all-namespaces=true
来读取所有名称空间。
您还应该检查所有本地文件中可能应用的策略。
以下是有关Using ABAC Authorization的Kubernetes文档
对于用户,我只能找到一种方法来检查特定用户是否能够例如在名称空间中创建部署:
$ kubectl auth can-i create deployments --namespace dev
yes
$ kubectl auth can-i create deployments --namespace prod
no