DevOps的KeyVault秘诀-Python

时间:2019-12-16 20:04:42

标签: azure azure-devops azure-pipelines azure-keyvault azure-databricks

我有一个定义有机密的Azure密钥库,我可以使用“ Azure KeyVault”任务在devops构建管道中进行访问。现在,我需要将secret变量传递给python内联脚本。

由于已加密,因此python无法直接读取该值。我如何解密并通过它们。机密持有Databricks访问令牌。我们正在尝试使用DevOps管道创建Databricks集群。

我的Yaml具有以下任务

  1. Azure KeyVault
  2. 将秘密转换为变量的Powershell-https://github.com/Microsoft/azure-pipelines-tasks/issues/8345
  3. 带有参数的Python内联脚本。对于争论,我尝试使用实际的秘密名称$(secretname)并显示***。然后我尝试转换以引用在powershell中创建的环境变量,而python则按原样传递了变量名。

我尝试了以下方法。

  1. 使用powershell从机密转换为环境变量。我试图首先使用此链接https://github.com/Microsoft/azure-pipelines-tasks/issues/8345将secret转换为变量。当在python中作为争论被调用时,它没有传递秘密值,而是在python内部传递了带有$符号的变量名称。

  2. 由于某些限制,我们不想使用变量组

编辑:已更新以添加更多详细信息。

1 个答案:

答案 0 :(得分:0)

  

该任务可用于从保管库中获取所有或部分机密的最新值,并将它们设置为可在管道的后续任务中使用的变量

如上文针对azure keyvault task所述。您可以通过将它们包装在python脚本中的“ $(secretname)”中,直接在azure密钥库中使用这些秘密。您不需要额外的powershell任务即可将其转换为环境变量。

当您在控制台中将其打印出来时,出于安全原因,它将被加密并输出“ ***”。但是秘密的实际价值对您的代码是可见的。

我使用以下示例python脚本进行测试,以确认可以在python脚本中访问秘密值。

enter image description here

我创建了一个测试秘钥库,其秘密名为“ Password”,其值为“ 123456789”。控制台中的python脚本任务输出为“ 111111”,确认该秘密对python脚本可见。

enter image description here

您可以按照this document中的详细步骤使用密钥库中的机密。