2017-11-08 4 views
0

'listkeys'を使ってプライベートブロブストレージ上のリンクされたテンプレートにアクセスする方法はありますか?そうすれば、私は展開するたびにSASトークンを生成する必要はありません。行くためにリスト・キーを使用して、プライベートBLOB上のリンク・アーム・テンプレートにアクセスできますか?

"Concat('DefaultEndpointsProtocol=https;AccountName=',variables('StorageAccountName'),';AccountKey=',listKeys(resourceId('otherResourceGroup', 'Microsoft.Storage/storageAccounts', variables('StorageAccountName')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).keys[0].value)]" 

:の線に沿って何か

"parameters": { 
    "sasToken": { "type": "securestring" } 
}, 
"resources": [ 
    { 
     "apiVersion": "2017-05-10", 
     "name": "linkedTemplate", 
     "type": "Microsoft.Resources/deployments", 
     "properties": { 
      "mode": "incremental", 
      "templateLink": { 
      "uri": "[concat('https://storagecontosotemplates.blob.core.windows.net/templates/helloworld.json', parameters('sasToken'))]", 
      "contentVersion": "1.0.0.0" 
      } 
     } 
    } 
], 

MS文書はそれを言及していないが、トークンを生成することなく、導入が容易になります。

私はkeyVaultを使用することができない理由としてTomに応答して、まだ入力が必要なためです。

{ 
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": { 
    "adminUsername": { 
     "value": "cmdbAdmin" 
    }, 
    "adminPassword": { 
     "reference": { 
     "keyVault": { 
      "id": "/subscriptions/c8727b53-932a-4f48-9fa1-00765c554992/resourceGroups/AnsibleTest1/providers/Microsoft.KeyVault/vaults/ansibletest" 
     }, 
     "secretName": "adminPassword" 
     } 
    }, 

...このようにAzureテンプレートに表示されるトークンのコードは次のとおりです。あなたが見ることができるように、あなたはまだいくつかの資格証明書に配置する必要があります:(

Azure Templates

+0

あなたの直接の質問に答えるには、「いいえ」と答えてください。シナリオをもう少し拡張できますか? 1)ネストする必要がありますか?2)安全である必要がありますか?3)この方法で展開する必要がある顧客数(キーボルト管理を難しくするなど) –

答えて

0

が、展開が容易になりトークン

"Concat('DefaultEndpointsProtocol=https;AccountName=',variables('StorageAccountName'),';AccountKey=',listKeys(resourceId('otherResourceGroup', 'Microsoft.Storage/storageAccounts', variables('StorageAccountName')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).keys[0].value)]" 

コードを生成することなく、 Azureストレージはプライマリとセカンダリのキーを提供するので、リストキーAPIを使用してアカウントキーを取得することができます SAS tokenの場合は、それを生成するには、開始時間、有効期限、アクセス許可などを提供する必要があります。私の経験に基づいて、生成されたsasトークンにはlistkeyと同じ方法はありません。

私はSASトークンを毎回生成する必要はありませんそのように私は

をdeploしかし、我々は、 Key VaultにSASトークンを格納することができ、その後、我々はARMテンプレートに動的に値を得ることができます。詳細情報はこちら blogを参照してください。

{ 
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": { 

    "sasToken": { 
     "reference": { 
     "keyVault": { 
      "id": "/subscriptions/{subscriptionId}/resourceGroups/{resource group name}/providers/Microsoft.KeyVault/vaults/MyUniqueKeyVaultName" 
     }, 
     "secretName": "secretName" 
     } 
    } 
    } 

} 
+0

私は使用しています現時点でSASトークンをパラメータとして使用します。私の質問は、JSONがAzureテンプレートにアップロードされ、クライアントに共有されるためです。この考えは、マシンを配備するたびにクライアントがSASトークンを生成して生成する必要がないようにするためのものでした。また、ネストされたテンプレートを持っているので、キーボートのアイデアはネストされたテンプレート自体で作業する必要がありますが、パラメータとして入れておく必要がありますが、アイデアがエンドユーザー向けの場合はAzureテンプレートを使用すると機能しませんちょうどいくつかの行/パラメータ(名前、hddのgb、タグなど)を記入するあなたのansは正しいですが、私のためではありません – Beefcake

+0

sasのトークンはAzureの値に格納されていますKeyvaultでは、 paramter.json。 –

+0

Azure Keyvaultから** keyvault secretName **によって動的にサストケンを得ることができました。 –

関連する問題