如何让创建带RBAC与托管AAD的AKS集群的SPN获cluster-admin权限?
解决AKS创建SPN获取cluster-admin权限的方案
你可以通过以下两种方式实现创建集群的SPN获得Kubernetes cluster-admin权限,无需将其加入AD组:
方法一:集群创建后自动绑定cluster-admin角色
利用SPN的订阅所有者权限,在集群创建完成后,直接通过kubectl为其创建ClusterRoleBinding。将这个步骤加入你的自动化脚本即可:
- 以SPN身份登录Azure:
az login --service-principal -u <你的SPN客户端ID> -p <你的SPN客户端密钥> --tenant <租户ID> - 获取AKS集群的kubeconfig凭据:
az aks get-credentials --name <AKS集群名称> --resource-group <资源组名称> --admin注:因为本地账户已禁用,这里需要加
--admin参数临时获取管理员权限,完成绑定操作后即可移除该凭据。 - 创建ClusterRoleBinding,将SPN绑定到cluster-admin角色:
Kubernetes中服务主体的用户标识就是其客户端ID,因此直接用这个ID绑定即可。kubectl create clusterrolebinding spn-cluster-admin \ --clusterrole=cluster-admin \ --user=<你的SPN客户端ID>
方法二:启用Azure RBAC for Kubernetes授权
如果你愿意调整集群授权模式,可以同时启用Kubernetes RBAC和Azure RBAC for Kubernetes。这样订阅所有者权限的SPN会自动获得Kubernetes cluster-admin权限,无需额外绑定:
在创建AKS集群的命令中添加--enable-azure-rbac参数,示例:
az aks create \ --resource-group <资源组名称> \ --name <AKS集群名称> \ --enable-rbac \ --enable-managed-identity \ --enable-aad \ --disable-local-accounts \ --enable-azure-rbac \ --service-principal <SPN客户端ID> \ --client-secret <SPN客户端密钥>
启用该选项后,Azure的角色(如订阅所有者)会自动映射到对应的Kubernetes角色,SPN无需加入AD组就能拥有cluster-admin权限。
内容的提问来源于stack exchange,提问作者floaty39
相关产品推荐
相关产品推荐

