2017-11-08 9 views
0

'listkeys'를 사용하여 개인용 BLOB 저장소의 링크 된 템플릿에 액세스하는 방법이 있습니까? 그렇게하면 배포 할 때마다 SAS 토큰을 생성 할 필요가 없습니다. 의 라인을 따라 뭔가 :listkeys를 사용하여 private blob에 연결된 팔 서식 파일에 액세스 할 수 있습니까?

"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의 문서를 언급하지 않지만, 토큰을 생성 할 필요없이 쉽게 구축 할 수있을 것입니다 :

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

은에서 이동합니다.

톰에 대한 응답으로 keyVault를 사용할 수없는 이유는 여전히 입력해야하기 때문입니다. 다음은 매개 변수 내부에 있어야하는 토큰에 대한 코드입니다.

{ 
    "$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)이 방법으로 배포 할 수있는 고객이 얼마나되는지 (KeyVault 관리를 더 어렵게 만드는 등) –

답변

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 토큰을 생성하고 생성 할 필요가 없기 때문입니다. 또한 중첩 된 템플릿을 가지고 있으므로 keyVault 아이디어가 중첩 된 템플릿 자체에서 작동하려면 매개 변수로 입력해야하지만, 최종 사용자를위한 아이디어 인 경우 Azure 템플릿을 사용할 때는 작동하지 않습니다 몇 줄/매개 변수 (이름, 하드 디스크, 태그 등)를 채우기 위해 당신의 대답은 정확하지만 나를위한 것이 아닙니다 – Beefcake

+0

sas 토큰은 Azure에 값으로 저장되어 있습니다. 그 paramter.json. –

+0

Azure keyvault에서 ** keyvault secretName **에 의해 동적으로 sastoken을 얻을 수 있습니다. –