Использование секретного ключа Azure KeyVault в шаблоне ARM Azure - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть шаблон экземпляра контейнера с контейнером в azurecr.io. Можно ли использовать секрет хранилища ключей Azure в шаблоне ARM?Ниже пример не работает.

            "imageRegistryCredentials": [
                {
                    "server": "***.azurecr.io",
                    "username": "***",
                    "password": {   
                        "reference": {                      
                            "keyVault": {
                                "id": "[resourceId(parameters('vaultSubscription'), parameters('vaultResourceGroupName'), 'Microsoft.KeyVault/vaults', parameters('vaultName'))]"
                            },
                            "secretName": "[parameters('secretName')]"  
                        }                       
                    }
                }
            ],

Я пробую:

"resources": [        
        {
            ...
            "properties": {
                "parameters":{
                    "secretPassword": { 
                        "type": "securestring",
                        "reference": {                      
                            "keyVault": {
                                "id": "[resourceId(parameters('vaultSubscription'), parameters('vaultResourceGroupName'), 'Microsoft.KeyVault/vaults', parameters('vaultName'))]"
                            },
                            "secretName": "[parameters('secretName')]"  
                        }                       
                    }                   
                },

И:

        "imageRegistryCredentials": [
            {
                "server": "**.azurecr.io",
                "username": "**",
                "password": "[parameters('secretPassword')]"
            }
        ],

Результат:

  "error": {
    "code": "InvalidTemplate",
    "message": "Unable to process template language expressions for resource '/subscriptions/**/resourceGroups/**/providers/Microsoft.ContainerInstance/containerGroups/**' at line '28' and co
lumn '9'. 'The template parameter 'secretPassword' is not found. Please see https://aka.ms/arm-template/#parameters for
 usage details.'"
  }
}'

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Итак, я создал обходной путь, который позволяет вам относительно просто использовать любой секрет keyvault в вашем шаблоне, используя общедоступный шаблон на github.См. https://github.com/bobvandevijver/azure-arm-keyvault-secret-output для примера.

Очевидно, было бы лучше, если бы Microsoft только исправила эту реализацию, но это что-то!

0 голосов
/ 08 февраля 2019

Вы можете использовать ссылку на хранилище ключей только в параметрах шаблона (или вложенного шаблона).

, поэтому вам нужно либо переместить эту часть в раздел параметров, либо переместить ее во вложенный шаблон и использовать егов качестве параметра для вложенного шаблона.Вот пример для передачи значений из kv во вложенный шаблон:

{
    "apiVersion": "2017-05-10",
    "name": "[concat('kvReference-', copyIndex())]",
    "type": "Microsoft.Resources/deployments",
    "copy": {
        "name": "kvReference",
        "count": 2
    },
    "properties": {
        "mode": "Incremental",
        "templateLink": {
            "uri": "nested_template_uri"
        },
        "parameters": {
            "cer": {
                "reference": {
                    "keyVault": {
                        "id": "keyvaultId"
                    },
                    "secretName": "secretname"
                }
            }
        }
    }
},

, и вы можете просто использовать эти входные данные как параметры внутри вложенного шаблона

...