生产环境中的微服务需要存储和检索密钥时,密钥存储在哪里并从哪里检索?

147次阅读
没有评论

问题描述

在生产环境中的微服务中,需要存储和检索密钥。他想知道在这种情况下,密钥应该存储在哪里,并从哪里检索。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

简短回答

理想情况下,你应该将密钥存储为环境变量,并从像Hashicorp的Vault或AWS Parameter Store这样的密钥管理系统中检索密钥。

详细回答

根据你的问题描述,你可能已经尝试过一些方法,如Hashicorp的Vault和AWS Parameter Store。以下是一些解决方案的示例:
1. 使用环境变量:将密钥存储为环境变量,并从环境变量中检索密钥。这是一种常见的做法,因为环境变量易于设置和更改,而且不会意外地被提交到代码仓库中。你可以使用配置管理系统(如Chef)或构建服务器在部署时设置环境变量,或者在应用程序中直接从密钥存储中检索并设置环境变量。
2. 使用密钥管理系统:使用像Hashicorp的Vault或AWS Parameter Store这样的密钥管理系统来存储和检索密钥。这些系统提供了安全的密钥存储和访问机制,并且可以与你的构建流水线或应用程序进行集成。你可以使用这些系统的API来检索密钥,并将其设置为环境变量或应用程序内部的变量。
3. 其他解决方案:除了上述解决方案外,还有其他一些选择,如Chef Vault、自定义的加密文件存储在对象存储中、1password等。选择适合你业务需求的解决方案是最重要的。

请注意,如果你使用的是AWS,他们最近还推出了自己的Secret Manager,你也可以考虑使用它来存储和检索密钥。

关于故障恢复的问题,你提到了当故障发生时,变量是否会恢复到上一次的良好状态。我没有使用过变量管理器,但它似乎是“一切都是环境变量”的逻辑演进。如果你对此感兴趣,可以进一步研究和尝试这样的解决方案。

总之,无论你选择哪种解决方案,都应该根据你的业务需求和实际情况来决定。同时,你应该遵循12因素应用程序的配置原则,将配置信息存储为环境变量,以便在部署时轻松更改配置。

参考链接:
12 Factor App 配置

正文完