集中管理服务配置和机密的最佳实践?

问题描述 投票:0回答:1

我们在面向服务的架构中使用容器为各种业务功能部署了多种服务。目前我们在 Portainer 中管理它们。它们主要是用 Spring Boot 开发的,但也有一些是用 Python 开发的。我们使用 GitHub 和 GitHub actions 来部署它们。我们正在使用 Azure。

这些服务共享许多配置。例如,其中许多连接到同一个数据库。

他们还可能有需要存储的秘密,例如 API 密钥和证书。

有关配置和机密管理的最佳实践或标准是什么?我考虑的一些选项是 Azure 应用程序配置、Spring Cloud Config 和 Azure Key Vault。

我认为带有 git 后端的 Spring Cloud Config 可以工作,但我不想在 github 存储库中保守秘密。

spring-boot azure configuration spring-cloud-config
1个回答
0
投票

根据您对 Spring Boot、Python 和容器的使用,并考虑您在 Azure 上使用 GitHub Actions 的部署方法,以下是一些推荐的最佳实践:

  1. 集中机密管理:实施集中机密管理系统,以减少错误并简化安全管理。一个安全可靠的秘密位置比多个存储点更可取。这种方法有利于调试、审核和在整个组织内维护一致的安全态势。

  2. 使用专用机密管理工具:利用 Azure Key Vault、HashiCorp Vault 或 CyberArk Conjur 等工具。这些旨在安全地存储和管理机密(例如 API 密钥、密码、证书),并提供访问控制、审核日志和自动机密轮换等功能。

  3. 秘密的定期轮换和加密:确保秘密在传输过程中和静态时都被加密。定期轮换这些秘密以降低与静态信息相关的风险。 Azure Key Vault 等工具中的自动轮换功能在这里非常有用。

  4. 实施访问控制和监控:应用严格的访问控制,例如基于角色的访问控制,并监控访问模式以检测未经授权的访问尝试。这种方法对于维护您的秘密的安全环境至关重要。

  5. 避免在代码存储库中存储机密:你是对的。切勿将机密存储在代码存储库中,即使是私人代码存储库。相反,使用环境变量或秘密管理工具在运行时注入秘密。

在 MS Azure Key Vault 中,您可以在一个屋檐下实现所有这些

您可以创建密钥证书和机密,甚至可以设置机密的到期日期。 enter image description here

定期使用新版本更新机密或维护备份。 enter image description here

您可以根据您的要求控制对金库和机密的访问。 enter image description here

参考资料:

© www.soinside.com 2019 - 2024. All rights reserved.