小编Kin*_*ine的帖子

对 Azure DevOps 中的 Key Vault 秘密变量的动态访问

我有一个包含不同密钥(例如 Key1、Key2、Key3)的 Azure Key Vault。在某些在一个管道任务中动态读取的设置中,我有一个值来说明要使用哪个键(让 KeyName 变量为“Key2”)。如何读取管道中Key2的秘密值?

我尝试过不同的组合,但没有一个对我有用。

测试管道编号 1 - 使用连接到 Key Vault 的组变量(为了更简单,这里的 KeyName 是静态的,但实际上,它是在管道期间通过 powershell 脚本设置的):

jobs:
- job: JobA
  variables:
  - group: KeyVaultGroup #Key vault have secret values "Key1,Key2,Key3..."
  - name: KeyName
    value: Key2
  - name: MyValue
    value: $[ variables[variables.KeyName] ]
  steps:
  - powershell: |
      Write-Host "Var1 $($env:VARENV1)"
      Write-Host "Var2 $($env:VARENV2)"
    env:
      VarEnv1: $(MyValue)
      VarEnv2: $($(KeyName))
Run Code Online (Sandbox Code Playgroud)

结果是:

Var1 
Var2 $(Key2)
Run Code Online (Sandbox Code Playgroud)

MyValue 不起作用,因为在加载密钥保管库变量之前会评估该变量。当在管道期间设置 KeyName 时,它​​也将不起作用(但这可以通过使用单独的作业并使用输出变量来设置 KeyName 来解决 - 就像测试示例 2 中一样)。表达式 $($(KeyName)) 不起作用,因为它不会递归扩展变量(bug?)。

当使用 AzureKeyVault 任务读取 Key …

azure-keyvault azure-devops azure-pipelines azure-yaml-pipelines

6
推荐指数
1
解决办法
3307
查看次数