DevOps 的 KeyVault 秘密 - Python

KeyVault Secret to DevOps - Python

我有一个用秘密定义的 Azure keyvault,我可以使用 "Azure KeyVault" 任务在 devops 构建管道中访问它。现在我需要将秘密变量传递给 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 将机密转换为环境变量。我尝试首先使用此 link - https://github.com/Microsoft/azure-pipelines-tasks/issues/8345 将秘密转换为变量。当在 python 中作为参数调用时,它没有传递秘密值,而是传递了 python 中带有 $ 符号的变量名称。

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

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

The task can be used to fetch the latest values of all or a subset of secrets from the vault, and set them as variables that can be used in subsequent tasks of a pipeline

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

当您在控制台打印出来时,为了安全起见,它会被加密并输出“***”。但是秘密的实际值对您的代码是可见的。

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

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

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