通过ARM模板将读取器角色分配给存储帐户时遇到问题

时间:2019-03-01 06:31:18

标签: azure azure-storage azure-resource-manager arm-template

我遇到以下错误“创建角色分配'c ***************** 5'的请求无效。角色分配范围'/ subscriptions / c ** ******************** 5 / resourceGroups / MyResourceGroup / providers / Microsoft.Storage / storageAccounts / mystorageaccountname'必须与URI上指定的范围匹配。

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "principalId": {
            "type": "string",
            "defaultValue": "My AD app ID",
            "metadata": {
                "description": "The principal to assign the role to"
            }
        },
        "builtInRoleType": {
            "type": "string",
            "defaultValue": "Reader",
            "allowedValues": [
                "Owner",
                "Contributor",
                "Reader"
            ],
            "metadata": {
                "description": "Built-in role to assign"
            }
        },
        "roleNameGuid": {
            "type": "string",
            "defaultValue": "random guid (i am getting this guid using following PS command "[System.Guid]::NewGuid().toString()")",
            "metadata": {
                "description": "A new GUID used to identify the role assignment"
            }
        }
    },
    "variables": {
        "Owner": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'this is my ownerid')]",
        "Contributor": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'this is my contributor id')]",
        "Reader": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'this is my reader id')]",
        "scope": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/MyResourceGroup/providers/Microsoft.Storage/storageAccounts/', 'this is my storage account name')]"
    },
    "resources": [
        {
            "type": "Microsoft.Authorization/roleAssignments",
            "apiVersion": "2014-10-01-preview",
            "name": "[parameters('roleNameGuid')]",
            "properties": {
                "roleDefinitionId": "[variables(parameters('builtInRoleType'))]",
                "principalId": "[parameters('principalId')]",
                "scope": "[variables('scope')]"
            }
        }
    ]
}

1 个答案:

答案 0 :(得分:0)

这是在高于部署范围的范围内分配角色分配的常见问题。在您的情况下,部署是在“资源组”级别上,而您正在尝试在“订阅”级别(该级别比“资源组”更高)上分配作用域。

解决方案:您将需要使用嵌套模板部署。

要查看示例,请查看此文档链接并在此文档中搜索“在范围内分配角色”部分:Create resources at Subscription level