我已经准备好通过Web应用程序设置HashiCorp Vault,尽管HashiCorp提供的示例很有意义,但是我仍然不清楚预期的生产设置应该是什么。

就我而言,我有:

  • 为我的Web应用程序
  • 提供服务的少量AWS EC2实例
  • 为Jenkins提供服务的几个EC2实例,用于持续部署

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

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

    我的问题类型是:
  • 库是否应在我所有的EC2实例上运行,并在127.0.0.1:8200上监听?
  • 还是我创建一个实例(可能是2个),该实例仅运行Vault,并根据需要将其他实例/服务连接到这些实例/服务以进行 secret 访问?
  • 如果我需要员工能够从其本地计算机访问 secret ,那该如何工作?他们是否在本地针对S3存储设置了保管库,还是应该从步骤2中访问远程服务器的REST API来访问其 secret ?
  • 需要明确的是,任何正在运行保管库的计算机,如果重新启动,则都需要再次打开保管库,这似乎是涉及x个 key 持有者的手动过程?
  • 最佳答案

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

    Vault服务器可能应该绑定(bind)到内部专用IP,而不是127.0.0.1,因为它们无法在您的VPC中访问。您绝对不希望绑定(bind)0.0.0.0,因为如果您的实例具有公共(public)IP,这可能使Vault可以公开访问。

    您将要绑定(bind)到证书上公布的IP,无论是IP还是DNS名称。您仅应在生产级基础架构中通过TLS与Vault通信。

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

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

    您也可以阅读production hardening guide以获取更多提示。

    关于amazon-web-services - HashiCorp Vault-生产中的设置/体系结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44555987/

    10-14 01:25