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

时间:2017-06-14 22:59:28

标签: amazon-web-services jenkins sysadmin hashicorp-vault

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

就我而言,我有:

  • 为我的网络应用程序提供服务的少数AWS EC2实例
  • 为Jenkins提供连续部署的几个EC2实例

我需要:

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

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

我遇到的问题类型有:

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

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

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

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

2 个答案:

答案 0 :(得分:3)

Vault在客户端 - 服务器架构中运行,因此您应该在availability mode中运行一个专用的Vault服务器群集(通常3个适用于中小型安装)。

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

您希望绑定到证书上公布的IP,无论是IP还是DNS名称。您只应在生产级基础架构中与Vault over TLS进行通信。

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

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

您还可以阅读production hardening guide了解更多提示。

答案 1 :(得分:1)

特别针对第3点和第3点4:

  1. 他们会与群集中一台/多台计算机上运行的Vault API进行通信(如果您在HA模式下运行多台计算机,则任何时候只有一个节点处于活动状态)。您可以使用LDAP之类的可用身份验证后端为其配置某种身份验证。

  2. 是的,默认情况下,如果您的群集中的任何Vault节点重新启动或停止,您需要在其中启用配置,但是需要使用许多密钥;取决于你站起来时生成了多少个关键分片。