使用 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 无法获取任何值。
我为密钥保管库创建了一个单独的部署任务并且它有效。感谢大家的回复。
我正在尝试将密码从密钥保管库机密检索到 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 无法获取任何值。 我为密钥保管库创建了一个单独的部署任务并且它有效。感谢大家的回复。