当前位置: 首页 > 知识库问答 >
问题:

DevOps的密钥库秘密-Python

胡翔
2023-03-14

我有一个用秘密定义的Azure密钥库,我可以使用“Azure密钥库”任务在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按原样传递了变量名

我尝试了以下方法。

>

  • 使用powershell从秘密转换为环境变量。我试图首先使用这个链接-https://github.com/Microsoft/azure-pipelines-tasks/issues/8345将秘密转换为变量。当在python中作为论证调用时,它不是传递秘密值,而是传递python中带有$符号的变量名称。

    由于一些限制我们不想使用变量组

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

  • 共有1个答案

    斜浩穰
    2023-03-14

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

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

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

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

    我创建了一个名为“密码”的秘密测试密钥库,其值为“123456789”。python脚本在控制台中执行“111111”任务,这证实了该秘密对python脚本是可见的。

    您可以按照本文档中的详细步骤使用keyvault中的秘密。

     类似资料:
    • 我试过不同的组合,没有一个对我有效。 测试管道号。1-使用连接到密钥库的group变量(为了方便起见,这里的密钥名是静态的,但实际上,它是在管道过程中通过powershell脚本设置的): 结果是:

    • 目前,在我看来,有很多方法可以引用秘密: 使用@或 直接,在存储库中为fx一个名为secret的秘密,然后直接引用它 具有Azure函数,或 配置已运行的应用程序,并将密钥存储库添加到堆栈 我很难看出什么时候用什么。

    • 我已经使用ARM在Azure DevOps中创建了一个密钥库,现在我想在同一个管道中为它写一个秘密。 我用以下内联的PowerShell创建了一个Azure PowerShell任务: 密钥存储库创建得很好,但在尝试写入密钥时,我会遇到以下错误:

    • 使用AKV管理存储帐户:https://docs.microsoft.com/en-us/Azure/key-vault/key-vault-overview-storage-keys-powershell#manage-storage-account-keys 使用Azure Automation进行密钥循环:https://docs.microsoft.com/en-us/Azure/key-