通过 ARM 模板将角色分配给 cosmos db

Assign Roles via ARM Template to cosmos db

我正在尝试使用以下模板将角色分配给 'Cosmos Db account'。

 {
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "principalId": {
            "type": "string",
            "defaultValue": "gb9e32f1-678f-4552-ae0a-0000f765aaaa",
            "metadata": {
                "description": ""
            }
        },
        "CosmosDbAccountName": {
            "type": "string",
            "defaultValue": "cosmosdbaccount",
            "metadata": {
                "description": "Cosmos Db Account name"
            }
        },
        "RoleType": {
            "defaultValue" : "Contributor",
            "type": "string",
            "metadata": {
                "description": "Built-in role to assign"
            },
            "allowedValues" : [
                "Contributor"
            ]
        }
    },
    "variables": {
         "Scope": "[concat(parameters('CosmosDbAccountName'),'/Microsoft.Authorization/',guid(subscription().subscriptionId))]"
     
     },

    "resources": [
        {
            "type": "Microsoft.DocumentDB/databaseAccounts/providers/roleAssignments",
            "name": "[variables('Scope')]",
            "apiVersion":"2020-04-01-preview",
            "properties": {
                "RoleDefinitionId":"/subscriptions/[subscription().subscriptionId]/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c",
                "principalId":  "[parameters('principalId')]"
            }
        }
    ]
}

我目前遇到错误,因为

{"code":"DeploymentFailed","message":"至少一个资源部署操作失败。请列出部署操作以获取详细信息。请参阅 https://aka.ms/DeployOperations 了解使用详情。","details" :[{"code":"BadRequest","message":"{\r\n "error": {\r\n "code": "RoleAssignmentUpdateNotPermitted",\r\n "message": "不允许更新租户 ID、应用程序 ID、主体 ID 和范围。"\r\n }\r\n}"}]}

我认为存在与您尝试通过此模板创建的名称相同的现有角色分配,它最终给出了“RoleAssignmentUpdateNotPermitted”错误。

对您的模板进行少量更改可以解决您的问题,例如生成唯一的 GUID,然后将其与 cosmos DB 帐户名连接,请尝试以下更新的模板:

   {
        "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "principalId": {
                "type": "string",
                "defaultValue": "gb9e32f1-678f-4552-ae0a-0000f765aaaa",
                "metadata": {
                    "description": ""
                }
            },
            "CosmosDbAccountName": {
                "type": "string",
                "defaultValue": "cosmosdbaccount",
                "metadata": {
                    "description": "Cosmos Db Account name"
                }
            },
            "RoleType": {
                "defaultValue" : "Contributor",
                "type": "string",
                "metadata": {
                    "description": "Built-in role to assign"
                },
                "allowedValues" : [
                    "Contributor"
                ]
            },
            "guid": {
                "defaultValue": "[newGuid()]",
                "type": "String"
            }
        },
        "variables": {
             "Scope": "[concat(parameters('CosmosDbAccountName'),'/Microsoft.Authorization/', parameters('guid'))]"
         
         },
    
        "resources": [
            {
                "type": "Microsoft.DocumentDB/databaseAccounts/providers/roleAssignments",
                "name": "[variables('Scope')]",
                "apiVersion":"2020-04-01-preview",
                "properties": {
                    "RoleDefinitionId":"/subscriptions/[subscription().subscriptionId]/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c",
                    "principalId":  "[parameters('principalId')]"
                }
            }
        ]
    }