快速解决azure aks aad身份和权限问题

发布于:2025-05-30 ⋅ 阅读:(12) ⋅ 点赞:(0)

现状分析

  • AKS cluster 1.31.8
  • 启用aad 身份验证和kubernetes RBAC

当尝试执行kubectl get node命令时,系统返回以下错误信息:

Error from server (Forbidden): nodes is forbidden: User "357517e8-4df5-4daa-88b4-94a84d763ec5" cannot list resource "nodes" in API group "" at the cluster scope

该错误表明当前用户357517e8-4df5-4daa-88b4-94a84d763ec5没有足够的权限在集群范围内列出nodes资源。这种情况通常发生在Azure AKS集群中,当用户未被正确分配到具有集群管理权限的Azure AD组时。

任务目标

需要解决当前用户无法执行kubectl get node的权限问题,确保用户能够正常访问和列出集群节点。具体任务包括:

  • 验证当前Azure AD组的配置
  • 更新AKS集群的AAD管理员组配置
  • 确认权限变更生效

行动步骤

检查Azure AD组的Object ID

确保已正确识别Azure AD管理员组的Object ID。可以通过Azure门户或Azure CLI查找目标组的Object ID。

更新AKS集群的AAD管理员组配置

使用Azure CLI执行以下命令,更新AKS集群的AAD管理员组配置:

az aks update --resource-group $resourceGroup --name $clusterName --aad-admin-group-object-ids 12bf4353-18b4-46df-a567-5551af78bad8

其中$resourceGroup$clusterName需替换为实际的资源组名称和AKS集群名称。

验证权限变更

执行以下命令验证权限是否已生效:

kubectl get node

 

root cause 分析:

在创建azure aks的时候忘记加上--aad-admin-group-object-ids  参数导致,正确的做法应该加上下面的参数。

az aks create --resource-group myResourceGroup --name myManagedCluster --enable-aad --aad-admin-group-object-ids <id> [--aad-tenant-id <id>] --generate-ssh-keys

另外,在使用azure aad 集成身份验证之前,确保你的电脑上安装了kubelogin,并且添加到系统路径中。有关如何安装kubelogin,请参考微软的技术文档。