如何通过ARM模板为App Service系统托管标识分配App Configuration数据读取者角色
用ARM模板为App Service添加App Configuration角色分配
要通过ARM模板实现你在Azure门户中完成的角色分配操作,需要使用**Microsoft.Authorization/roleAssignments**资源类型(这是Azure IAM角色分配的通用资源,并非App Configuration专属,所以你之前查看的文档里没有相关内容)。
准备必要的ID信息
- App Configuration资源ID:可在Azure门户的App Configuration概览页获取,或通过Azure CLI命令
az resource show --resource-group <资源组名> --name <App配置名称> --resource-type Microsoft.AppConfiguration/configurationstores --query id -o tsv获取 - App Service系统托管标识ID:在App Service的「身份」页获取,或通过Azure CLI命令
az webapp identity show --resource-group <资源组名> --name <App服务名称> --query principalId -o tsv获取 - App Configuration Data Reader内置角色ID:固定值为
51623b76-7f4b-4e0b-b278-0fda36d71a7a
ARM模板示例
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "appConfigResourceId": { "type": "string", "metadata": { "description": "目标App Configuration的资源ID" } }, "appServiceManagedIdentityPrincipalId": { "type": "string", "metadata": { "description": "App Service系统托管标识的Principal ID" } }, "roleAssignmentName": { "type": "string", "defaultValue": "[guid(parameters('appConfigResourceId'), parameters('appServiceManagedIdentityPrincipalId'), '51623b76-7f4b-4e0b-b278-0fda36d71a7a')]", "metadata": { "description": "角色分配的唯一名称,可自动生成GUID" } } }, "resources": [ { "type": "Microsoft.Authorization/roleAssignments", "apiVersion": "2022-04-01", "name": "[parameters('roleAssignmentName')]", "scope": "[parameters('appConfigResourceId')]", "properties": { "roleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/51623b76-7f4b-4e0b-b278-0fda36d71a7a')]", "principalId": "[parameters('appServiceManagedIdentityPrincipalId')]", "principalType": "ServicePrincipal" } } ] }
关键字段说明
scope:指定角色分配的作用范围,这里指向你的App Configuration资源roleDefinitionId:拼接内置角色的完整ID,结合当前订阅ID生成principalId:填入App Service托管标识的Principal IDroleAssignmentName:用GUID保证唯一性,避免重复部署报错
内容的提问来源于stack exchange,提问作者user346206
相关产品推荐
相关产品推荐

