Как передать секреты выпуска DevOps в ARM для развертывания хранилища ключей - PullRequest
0 голосов
/ 13 января 2020

Я пытаюсь развернуть хранилище ключей с secretName и secretValue, и я создал группу переменных в azure devops со всеми секретами, и я использую следующие параметры в файле параметров, но когда это происходит развернутое секретное значение сохраняется как $ (secret), а не как пароль, фактически сохраненный в группе задач в Azure DevOps.

  "secretsObject": {

    "value": {

      "secrets": [

        {

          "secretName": "App012",

          "secretValue": "$(mysecret)"

        },

, и вот что я получил в шаблоне хранилища ключей:

  {

    "type": "Microsoft.KeyVault/vaults/secrets",

    "name": "[concat(parameters('keyVaultName'), '/', parameters('secretsObject').secrets[copyIndex()].secretName)]",

    "apiVersion": "2018-02-14",

    "dependsOn": [

      "[concat('Microsoft.KeyVault/vaults/', parameters('keyVaultName'))]"

    ],

    "copy": {

      "name": "secretsCopy",

      "count": "[length(parameters('secretsObject').secrets)]"

    },

    "properties": {

      "value": "[parameters('secretsObject').secrets[copyIndex()].secretValue]"

    }

  }

]

}

Есть идеи, как передать "secretvalue" в качестве переменной?

Ответы [ 2 ]

1 голос
/ 13 января 2020

Я полагаю, что вы спрашиваете, как использовать свои секреты, которые хранятся в виде группы переменных, для безопасного развертывания с вашим шаблоном ARM через Azure DevOps. Если это так, посмотрите на использование Переопределить параметры шаблона в вашей задаче выпуска.

Это будет в формате -NameOfARMParameter $ (NameofDevOpsVariable)

В вашем случае это будет -mysecret $ (NameOfDevOpsVariable)

Развертывание. json должно выглядеть следующим образом для объявления параметров:

 "secretValue": {
      "type": "string",
      "metadata": {
        "description": "This is for receiving a value from DevOps releases of the secret to be stored in the key vault"
      }
    },
"secretName": {
          "type": "string",
          "metadata": {
            "description": "Name of the Secret"
          }
        },

Для фактического развертывания

{
  "type": "Microsoft.KeyVault/vaults/secrets",
  "name": "[concat(variables('keyVaultName'),'/',parameters('secretName'))]",
  "apiVersion": "2018-02-14",
  "properties": {
    "contentType": "text/plain",
    "value": "[parameters('secretValue')]"
  },
  "dependsOn": [
    "[resourceId('Microsoft.KeyVault/vaults',  variables('keyVaultName'))]"
  ]
},

И файл параметров не должен содержать ничего, если эти значения будут передаваться из Dev Ops

0 голосов
/ 13 января 2020

Вам необходимо создать файл параметров с секретом / ссылкой на хранилище ключей.

Вот его пример:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "adminLogin": {
            "value": "exampleadmin"
        },
        "adminPassword": {
            "reference": {
              "keyVault": {
                "id": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<vault-name>"
              },
              "secretName": "ExamplePassword"
            }
        },
        "sqlServerName": {
            "value": "<your-server-name>"
        }
    }
}

Дополнительная информация:

https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/parameter-files

и https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/add-template-to-azure-pipelines

...