Azure AKS集群ID非UUID格式致Terraform角色分配失败求助
解决Terraform中AKS角色分配的UUID格式ID问题
你遇到的问题核心是用错了ID类型:azuread_app_role_assignment要求的resource_object_id是AKS集群对应Azure AD标识的UUID格式Object ID,而非AKS资源的路径式ID。
解决方案
AKS集群默认使用系统分配托管标识,直接通过Terraform数据源的identity[0].principal_id字段就能获取到UUID格式的标识ID,修改角色分配配置即可:
resource "azuread_app_role_assignment" "aks_test_assignment" { app_role_id = data.azurerm_role_definition.test_role.id principal_object_id = data.azuread_group.test_principal.id # 替换为AKS托管标识的UUID格式Principal ID resource_object_id = data.azurerm_kubernetes_cluster.akstest001.identity[0].principal_id }
验证方法
如果需要确认ID正确性,可通过Azure CLI执行以下命令:
az aks show --name akstest001 --resource-group rgtest001 --query "identity.principalId" -o tsv
返回结果就是所需的UUID格式ID。
补充说明
AKS的系统托管标识不会直接显示在Azure门户的Azure AD企业应用列表中,所以你在门户里找不到对应UUID,通过Terraform数据源或Azure CLI查询是最直接的方式。若你的AKS使用用户分配托管标识,则需获取对应用户分配标识的principal_id填入resource_object_id。
内容的提问来源于stack exchange,提问作者Marvin Core
相关产品推荐
相关产品推荐

