如何将托管标识对象 ID 传递到 Azure 蓝图中的 KeyVault 模板

How to pass Managed Identity Object ID to KeyVault template in Azure Blueprints

所以,我正在尝试使用 Blueprints 启动 Managed IdentityKeyVault。我为每个人都有一个单独的工作模板。我的最终目标是在同一个蓝图中同时启动这两种资源以及更多资源。我遇到的问题是我需要在部署期间将我的托管标识的对象 ID 传递给 KeyVault 模板。我有蓝图设置来部署托管标识资源组,然后是托管标识,然后是 keyvault 组和 keyvault。

部署一直运行到 KV 资源组,然后在部署 keyvault 期间失败。有没有人知道如何做到这一点?

下面的 2 张图片显示了蓝图的布局以及需要对象 ID 的 keyvault 模板部分。

Azure 蓝图布局:

托管身份的访问策略所在的 KeyVault 模板:

错误图片:

点击查看部署详情后出现的错误图片:

根据您的描述和屏幕截图,您希望在创建 Keyvault 的同时将 UserAssigned Managed Identity 添加到您的 keyvault,并且 keyvault 和 Managed Identity 在不同的 资源组中.

如果是这样,accessPolicies 应该在下面,我这边没问题。

"accessPolicies": [
                    {
                        "tenantId": "[subscription().tenantId]",
                        "objectId": "[reference(ResourceId(parameters('managedIdentityRG'), 'Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName')),'2018-11-30','Full').properties.principalId]",
                        "permissions": {
                            "keys": [],
                            "secrets": [
                                "Get"
                            ],
                            "certificates": []
                        }
                    }
                ]

我的完整模板:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "vaults_joykeyvault12_name": {
            "type": "String"
        },
        "managedIdentityName": {
            "type": "String"
        },
        "managedIdentityRG":{
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.KeyVault/vaults",
            "apiVersion": "2016-10-01",
            "name": "[parameters('vaults_joykeyvault12_name')]",
            "location": "eastus",
            "tags": {},
            "properties": {
                "sku": {
                    "family": "A",
                    "name": "Standard"
                },
                "tenantId": "[subscription().tenantId]",
                "accessPolicies": [
                    {
                        "tenantId": "[subscription().tenantId]",
                        "objectId": "[reference(ResourceId(parameters('managedIdentityRG'), 'Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName')),'2018-11-30','Full').properties.principalId]",
                        "permissions": {
                            "keys": [],
                            "secrets": [
                                "Get"
                            ],
                            "certificates": []
                        }
                    }
                ],
                "enabledForDeployment": false,
                "enabledForDiskEncryption": false,
                "enabledForTemplateDeployment": false,
                "enableSoftDelete": true
            }
        }
    ]
}