Azure 在单臂脚本中创建批处理帐户和密钥Vault

Azure 在单臂脚本中创建批处理帐户和密钥Vault,azure,azure-resource-manager,azure-keyvault,arm-template,Azure,Azure Resource Manager,Azure Keyvault,Arm Template,我试图将批处理帐户(在用户订阅模式下)配置添加到ARM脚本,但我遇到了循环依赖的问题 批处理帐户需要KeyVaultReference 关键Vault访问策略 需要BatchAccount对象id 在这种情况下,我无法创建完全配置的服务。您知道如何从同一个ARM脚本创建这两个服务吗 请参见下面的示例: { "name": "[variables('keyVaultName')]", "type": "Microsoft.KeyVault/vaults", "location":

我试图将批处理帐户(在用户订阅模式下)配置添加到ARM脚本,但我遇到了循环依赖的问题

  • 批处理帐户需要KeyVaultReference
  • 关键Vault访问策略 需要BatchAccount对象id
在这种情况下,我无法创建完全配置的服务。您知道如何从同一个ARM脚本创建这两个服务吗

请参见下面的示例:

{
  "name": "[variables('keyVaultName')]",
  "type": "Microsoft.KeyVault/vaults",
  "location": "[resourceGroup().location]",
  "apiVersion": "2015-06-01",
  "properties": {
    "sku": {
      "family": "A",
      "name": "Standard"
    },
    "tenantId": "[subscription().tenantId]",
    "accessPolicies": [
      {
        "tenantId": "[subscription().tenantId]",
        "objectId": "[resourceId('Microsoft.Batch/batchAccounts', variables('batchAccountName'))]",
        "permissions": {
          "keys": [
            "Update"
          ]
        }
      }
    ]
  },
  "dependsOn": [
    "[resourceId('Microsoft.Batch/batchAccounts', variables('batchAccountName'))]"
  ]
},
{
  "name": "[variables('batchAccountName')]",
  "type": "Microsoft.Batch/batchAccounts",
  "location": "[resourceGroup().location]",
  "apiVersion": "2017-05-01",
  "properties": {
    "poolAllocationMode": "UserSubscription",
    "autoStorage": {
      "storageAccountId": "[resourceId('Microsoft.Storage/storageAccounts', variables('batchAccountStorageAccountName'))]"
    },
    "keyVaultReference": {
      "id": "[concat(subscription().id, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.KeyVault/vaults/', variables('keyVaultName'))]",
      "url": "[concat('https://', variables('keyVaultName'), '.vault.azure.net/')]"
    }
  },
  "dependsOn": [
    "[resourceId('Microsoft.Storage/storageAccounts', variables('batchAccountStorageAccountName'))]",
    "[resourceId('Microsoft.KeyVault/vaults', variables('keyVaultName'))]"
  ]
}
关键Vault访问策略需要BatchAccount对象id。

对象id与批处理帐户不相关。对象id是您设置的可以访问密钥库的用户对象id。用户可以是Azure AD帐户、Microsoft帐户或服务主体。对于Azure AD帐户,您可以使用PowerShell cmdlet
get-AzureRmADUser
获取id。这也许有帮助

批处理帐户需要KeyVaultReference

正如您所做的那样,您可以在创建批处理帐户时添加一个依赖于密钥的vault。下面的模板适合我

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "location": {
            "defaultValue": "eastus",
            "type": "string"
        },
        "batchAccountName": {
            "defaultValue": "shui568",
            "type": "string"
        },
        "storageAccountName": {
            "defaultValue": "shui41f",
            "type": "string"
        },
        "storageAccountType": {
            "defaultValue": "Standard_LRS",
            "type": "string"
        },
         "vaults_shuibatch_name": {
            "defaultValue": "shui225",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "name": "[parameters('batchAccountName')]",
            "type": "Microsoft.Batch/batchAccounts",
            "apiVersion": "2017-05-01",
            "location": "[parameters('location')]",
            "dependsOn": [
                "[concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]",
                "[concat('Microsoft.KeyVault/vaults/', parameters('vaults_shuibatch_name'))]"
            ],
            "properties": {
                "poolAllocationMode": "usersubscription",
                "KeyVaultReference": {

                    "id": "[resourceId('Microsoft.KeyVault/vaults', parameters('vaults_shuibatch_name'))]",
                    "url": "[concat('https://',parameters('vaults_shuibatch_name'),'.vault.azure.net/')]"
                },
                "autoStorage": {
                    "storageAccountId": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
                }
            }
        },
        {
            "name": "[parameters('storageAccountName')]",
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2015-06-15",
            "location": "[parameters('location')]",
            "properties": {
                "accountType": "[parameters('storageAccountType')]"
            }
        },
            {
            "comments": "Generalized from resource: '/subscriptions/***************/resourceGroups/shuibatch/providers/Microsoft.KeyVault/vaults/shuibatch'.",
            "type": "Microsoft.KeyVault/vaults",
            "name": "[parameters('vaults_shuibatch_name')]",
            "apiVersion": "2015-06-01",
            "location": "eastus",
            "tags": {},
            "scale": null,
            "properties": {
                "sku": {
                    "family": "A",
                    "name": "Standard"
                },
                "tenantId": "[subscription().tenantId]",
                "accessPolicies": [
                    {
                        "tenantId": "[subscription().tenantId]",
                        "objectId": "3ff89f78-2a60-4fef-8ee5-c249d03549d1",
                        "permissions": {
                            "secrets": [
                                "All"
                            ]
                        }
                    }
                ],
                "enabledForDeployment": true
            },
            "dependsOn": []
        }
    ]
}

如果我的理解是正确的,您希望授予用户
Microsoft Azure Batch
权限,您可以在Azure Portal上获取对象id
-->
访问控制(IAM)
-->
Microsoft Azure Batch
-->
属性
。它看起来不错。我正在寻找通过arm/ps(Azure订阅步骤)在自动化脚本中包含所有这些操作的方法,但情况不同。谢谢