首页 > 解决方案 > 适用于组和用户的 Kubernetes ABAC 策略?

问题描述

目前,我有一个 ABAC 策略,它赋予“system:autheticated”所有访问权限。当我定义了这个时,K8s 可以正常启动,但是如果我删除它,K8s 就不会启动。我试图找出我的 K8s 集群上正在使用哪些命名空间、服务帐户、组、用户等,以便我可以在 ABAC 策略中定义一组特定的用户/组。

如何获取 K8s 集群中的组和用户?我正在使用“kubectl --namespace=kube-system get serviceaccounts”来获取服务帐户......但是组和用户在哪里定义?

标签: kubernetesusergroupsabacpolicies

解决方案


对于您可以尝试的组(例如“system:masters”):

kubectl get clusterrolebindings -o json | jq -r '.items[] | select(.subjects[0].kind=="Group") | select(.subjects[0].name=="system:masters") | .metadata.name'

此外,您可以--all-namespaces=true在 kubectl 命令中一次读取所有命名空间。

您还应该检查所有本地文件以了解可能应用的策略。

这是关于使用 ABAC 授权的 Kubernetes 文档

至于用户,我只能找到一种方法来检查特定用户是否能够,例如,在命名空间中创建部署:

$ kubectl auth can-i create deployments --namespace dev
yes
$ kubectl auth can-i create deployments --namespace prod
no

推荐阅读