2017-09-04 3 views
0

バッチアカウント(ユーザーサブスクリプションモードで)の設定をARMスクリプトに追加しようとしていますが、循環依存性に問題があります。1つのARMスクリプトでバッチアカウントとキーボルトを作成する

  • バッチアカウントにはKeyVaultReferenceが必要です。
  • 鍵ボールトのアクセスポリシー には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'))]" 
    ] 
} 

答えて

1

キーVaultアクセスポリシーはBatchAccountのオブジェクトIDが必要になります。

以下の例を参照してください。

オブジェクトIDはバッチアカウントとは関係ありません。オブジェクトIDは、鍵ボールトにアクセスできるユーザーのオブジェクトIDです。ユーザーは、Azure ADアカウント、Microsoftアカウント、またはサービスプリンシパルである可能性があります。 Azure ADアカウントの場合、PowerShellコマンドレットGet-AzureRmADUserでIDを取得できます。これはblogかもしれません。

バッチアカウントにはKeyVaultReferenceが必要です。

これまでと同じように、バッチアカウントを作成するときにキーボールトに依存するものを追加することができました。以下のテンプレートが私のために働きます。私の理解が正しければ

{ 
    "$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": [] 
     } 
    ] 
} 
+0

は、あなたがAzureのポータル上のオブジェクトIDを取得することができ、ユーザーに 'マイクロソフトのAzure Batch'権限を与えたいと思います。 '' - > 'アクセス制御(IAM)' - > 'Microsoft Azure Batch' - >' Properties'です。 –

+0

いいですね。私はarm/ps(Azureサブスクリプションステップ)を介してこれらの操作をオートメーションスクリプトに含める方法を探していますが、それは別の話です。ありがとう! –

関連する問題