首页 > 解决方案 > 需要有关将机密更新到 KeyVault 的建议

问题描述

我正在部署一个调用由 API 密钥保护的后端 api 的 Azure 函数应用程序。该应用程序将使用 Azure DevOps 管道进行部署;API 密钥将作为机密存储在 KeyVault 中,我使用 Bicep 文件进行基础设施定义,使用 Yaml 管道部署基础设施和应用程序。以下是我有关于 KeyVault 更新的问题,

  1. 管道是否应该负责更新 KeyVault 中的机密?如果是这样,是否建议在 DevOps 变量组中维护 Secrets(键盘锁定),或者,是否有更好/更安全的方法?
  2. 是否应该手动更新/维护 KeyVault 中的机密?采用这种方法,我们的管道将不那么成熟,因为仍然会有人工干预/不可变 - 考虑到环境的重建。

我想知道上述的最佳做法,谢谢。

标签: azure-devopsazure-pipelinesazure-keyvault

解决方案


可能答案是视情况而定。这使得这个问题可能会得到一些基于意见的答案。如果您查看 Microsoft 文档,它会指出:

不要在 YAML 文件中设置秘密变量。操作系统通常会为它们运行的​​进程记录命令,并且您不希望日志包含您作为输入传递的秘密。使用脚本的环境或在variables块中映射变量以将秘密传递到您的管道。

您需要在管道设置 UI 中为管道设置秘密变量。这些变量的范围仅限于您设置它们的管道。您还可以在变量组中设置秘密变量

资料来源:定义变量 - 设置秘密变量

尽管如此,您应该问自己这些秘密的所有权在哪里。所有者应该是负责人。

  • 在 KeyVault 中维护这些机密意味着您甚至不需要管道中的机密。这意味着明确的职责分离。
  • 在管道中维护这些机密使您能够将它们与使用它们的代码一起更新。这将秘密与消费代码联系起来。

两者都是很好的情况,具体取决于责任所在。


推荐阅读