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

djt*_*djt 6 sysadmin amazon-web-services jenkins hashicorp-vault

我正准备用我的网络应用程序设置HashiCorp Vault,虽然HashiCorp提供的示例很有意义,但我还不清楚预期的生产设置应该是什么.

就我而言,我有:

  • 少量AWS EC2实例为我的Web应用程序提供服务
  • 一对EC2实例为Jenkins提供连续部署服务

我需要:

  • 我的配置软件(Ansible)和Jenkins能够在部署期间读取秘密
  • 允许公司中的员工根据需要读取秘密,并可能为某些类型的访问生成临时密码.

我可能会使用S3作为Vault的存储后端.

我的问题类型是:

  1. 是否应该在我的所有EC2实例上运行保险库,并在127.0.0.1:8200收听?

  2. 或者,我是否只创建一个实例(可能是2个可用性),只运行Vault并根据需要将其他实例/服务连接到秘密访问?

  3. 如果我需要员工能够从本地机器访问机密,那该怎么办?他们是否在本地针对S3存储设置了保险库,还是应该从步骤2访问远程服务器的REST API来访问他们的秘密?

  4. 并且要明确的是,任何运行保险库的机器,如果它重新启动,那么保险库需要再次启封,这似乎是涉及x个密钥持有者的手动过程?

set*_*rgo 3

Vault 在客户端-服务器架构中运行,因此您应该有一个以可用性模式运行的专用 Vault 服务器集群(通常 3 个适合中小型安装)。

Vault 服务器可能应该绑定到内部私有 IP,而不是 127.0.0.1,因为它们在您的 VPC 内无法访问。您绝对不想绑定0.0.0.0,因为如果您的实例具有公共 IP,这可能会使 Vault 可公开访问。

您需要绑定到证书上公布的 IP,无论是 IP 还是 DNS 名称。您应该仅在生产级基础设施中通过 TLS 与 Vault 进行通信。

任何和所有请求都会通过这些 Vault 服务器。如果其他用户需要与 Vault 进行通信,他们应通过 VPN 或堡垒主机连接到 VPC,并向其发出请求。

当运行 Vault 的计算机重新启动时,Vault 确实需要解封。这就是为什么您应该在 HA 模式下运行 Vault,以便另一台服务器可以接受请求。您可以设置监控和警报,以便在服务器需要解封时通知您(Vault 返回特殊状态代码)。

您还可以阅读生产强化指南以获取更多提示。