使用 azure cli 任务将 key vault secret 检索到变量中

Retrieve key vault secret into a variable using azure cli task

我正在尝试将密码从密钥保管库机密检索到 azure CLI 任务中的变量中。但它没有填充任何值。 请在下面找到 YAML 任务:

- task: AzureCLI@2
  displayName: Retrieve and store key vault secret
  inputs:
    azureSubscription: 'azureSubscription'
    scriptType: pscore
    scriptLocation: inlineScript
    inlineScript: |
      $secret=$(az keyvault secret show --name "passwordSecret" --vault-name "passwordKeyVault")

如果我在任何地方使用 $(secret),它只会给我 $(secret) 的值,而不是密码。这是正确的方法吗?有人可以指导我完成这个吗?

这是因为您没有设置管道变量而只是设置脚本的变量。对于ADO管道中的Set/Update变量,您可以添加以下命令:

Write-Host "##vso[task.setvariable variable=testvar;issecret=true]testvalue"

查看 How to read and set DevOps Pipeline variables using Azure PowerShell? and 了解更多信息。

您需要将其映射到 Azure Pipelines 变量,为此您应该使用 logging command

由于您从 KeyVault 获取了您的值,我建议您在 Azure Pipelines 中也将其视为机密。所以你需要使用这个语法:

    Write-Host "##vso[task.setvariable variable=secretSauce;issecret=true]$secret"

其中 secretSauce 是您将创建的 Azure Pipeline 变量的名称。

这会导致将 *** 放在日志中通常会出现您的秘密的任何位置。

但是,机密不会自动映射到 env 变量,如果您需要通过 env 变量访问该值,则需要使用 env mapping

问题已解决。 keyVault 与通用 arm 模板同时部署,导致在秘密中给出“当前版本不可用”。因此,$secret 无法获取任何值。 我为密钥保管库创建了一个单独的部署任务并且它有效。感谢大家的回复。