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

问题描述 投票:6回答:2

我正准备用我的网络应用程序设置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个密钥持有者的手动过程?
amazon-web-services jenkins sysadmin hashicorp-vault
2个回答
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
投票

特别针对第3和第4点:

  1. 他们会与群集中一台/多台计算机上运行的Vault API进行通信(如果您在HA模式下运行多台计算机,则任何时候只有一个节点处于活动状态)。您可以使用LDAP之类的可用身份验证后端为其配置某种身份验证。
  2. 是,默认情况下,如果群集中的任何Vault节点重新启动或停止,则建议配置,您需要使用许多密钥进行解密;取决于你站起来时生成了多少个关键分片。
© www.soinside.com 2019 - 2024. All rights reserved.