【问题标题】:Need recommendation on updating secrets to KeyVault需要有关将机密更新到 KeyVault 的建议
【发布时间】:2021-10-12 08:44:08
【问题描述】:

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

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

我想了解上述最佳做法,谢谢。

【问题讨论】:

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


    【解决方案1】:

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

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

    您需要在管道设置 UI 中为您的管道设置秘密变量。这些变量的范围仅限于您设置它们的管道。也可以设置secret variables in variable groups

    来源:Define variables - Set secret variables

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

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

    这两种情况都很好,具体取决于责任所在。

    【讨论】:

    • 谢谢你,很抱歉迟到了我同意你的想法,广泛地说“如果有不同的团队(Ops)管理这个秘密的生命周期,秘密(应该)/(首选)是集中的,或/和,如果秘密被多个客户端应用程序使用。秘密(应该)/(首选)通过管道变量(挂锁)传递,如果它们由各个开发团队维护/管理。此外,在前者中,通过为集中式 KeyVault 提供对客户端应用程序的基于托管身份的访问,可以实现部署的可重复性。”
    猜你喜欢
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多