HashiCorp Vault - 生产环境中的设置/架构

6
我正准备为我的Web应用程序设置HashiCorp Vault,虽然HashiCorp提供的示例很有意义,但我不太清楚预期的生产设置应该是什么。
在我的情况下,我有:
- 一小撮AWS EC2实例为我的Web应用程序提供服务 - 一些EC2实例为Jenkins提供持续部署服务
我需要:
- 我的配置软件(Ansible)和Jenkins能够在部署期间读取密码 - 允许公司员工根据需要读取密码,并且可能为某些类型的访问生成临时密码。
我可能会使用S3作为Vault的存储后端。
我遇到的问题是:
1. Vault是否应在所有EC2实例上运行,并侦听127.0.0.1:8200? 2. 或者,我创建一个实例(可能是2个以实现高可用性),只运行Vault,并使其他实例/服务根据需要连接到这些实例以访问密码? 3. 如果我需要员工能够从他们的本地机器访问密码,那该怎么办?他们是否应该在本地针对S3存储设置Vault,或者应该从步骤2的远程服务器的REST API中获取他们的密码? 4. 并且要明确的是,任何运行Vault的机器,如果重新启动,则需要再次解封Vault,这似乎是涉及x个密钥持有人的手动过程?

https://s3.amazonaws.com/quickstart-reference/hashicorp/vault/latest/doc/hashicorp-vault-on-the-aws-cloud.pdf - sethvargo
@sethvargo 谢谢,但这并没有完全回答我的问题,特别是第三点和第四点。 - djt
2个回答

3
Vault以客户端-服务器架构运行,因此应该有一组专用的Vault服务器集群(通常对于中小型安装来说,3个服务器就足够了),以可用性模式运行。
Vault服务器应该绑定到内部私有IP,而不是127.0.0.1,因为它们在VPC内无法访问。绝对不要绑定0.0.0.0,因为这可能会使Vault在实例具有公共IP的情况下公开可访问。
您需要绑定到证书上广告的IP,无论是IP还是DNS名称。在生产级基础设施中,应只通过TLS与Vault进行通信。
任何请求都通过那些Vault服务器进行。如果其他用户需要与Vault通信,则应通过VPN或堡垒主机连接到VPC并发出请求。
当运行Vault的机器重新启动时,Vault确实需要解封。这就是为什么应该在HA模式下运行Vault,以便另一个服务器可以接受请求。您可以设置监视和警报以在服务器需要解封时通知您(Vault返回特殊状态代码)。
您还可以阅读生产加固指南获取更多提示。

这是一个使用Terraform在GKE上快速搭建Vault集群的指南 https://github.com/sethvargo/vault-on-gke - sethvargo

1

特别针对第三点和第四点:

  1. 它们将与运行在您集群中的一个或多个机器上的Vault API进行通信(如果您使用多台机器运行它,只有一个节点会处于活动状态)。您需要使用可用的身份验证后端之一(如LDAP)为其提供某种形式的身份验证。

  2. 是的,默认情况下,在建立Vault时生成了多少密钥碎片取决于您的Vault集群中是否有任何节点被重新启动或停止,您将需要使用所需数量的密钥来解封它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接