跳转到主要内容
Chinese, Simplified

本文档的目标是推荐HashiCorp Vault部署实践。 该参考架构传达了一种通用架构,应该进行调整以适应每种实现的特定需求。

本指南中涉及以下主题:

  • 一个数据中心内的部署拓扑
  • 网络连接
  • 部署系统要求
  • 硬件考虑因素
  • 负载均衡
  • 高可用性
  • 多个数据中心的部署拓扑
  • Vault复制
  • 其他参考文献

本文档假定Vault使用Consul作为存储后端,因为这是生产部署的推荐存储后端。


一个数据中心内的部署拓扑


本节介绍如何在一个数据中心中部署Vault开源群集。 Vault Enterprise中通过群集复制包含对多个数据中心的支持。

参考图


带有Consul存储后端的八个节点

设计摘要


此设计是生产环境的推荐架构,因为它提供了灵活性和弹性。 Consul服务器与Vault服务器分开,因此软件升级更容易执行。此外,单独的Consul和Vault服务器允许为每个服务器单独调整大小。 Vault to Consul后端连接是通过HTTP进行的,应使用TLS和Consul令牌进行保护,以提供所有流量的加密。

有关以加密模式运行Consul的详细信息,请参阅联机文档。

容忍失败


云环境中的典型分布是将Consul / Vault节点分散到高带宽,低延迟网络(例如AWS区域)内的单独可用区(AZ)中。下图显示了在AZ之间传播的Vault和Consul,其中Consul服务器采用冗余区域配置,每个AZ提升单个投票成员,同时提供区域和节点级别的故障保护。

请参阅在线文档以了解有关领事领导者选举流程的更多信息。

网络连接详细信息

部署系统要求


下表提供了服务器大小调整的准则。 特别值得注意的是强烈建议避免使用非固定性能CPU或AWS术语中的“Burstable CPU”,例如T系列实例。

硬件考虑因素


小尺寸类别适用于大多数初始生产部署或开发/测试环境。

大尺寸适用于工作负载一致的生产环境。这可能是大量的交易,大量的秘密,或两者的结合。

通常,处理要求将取决于加密工作负载和消息传递工作负载(每秒操作数和操作类型)。内存要求将取决于存储在内存中的机密/密钥的总大小,并应根据该数据进行调整大小(硬盘驱动器存储也应如此)。 Vault本身具有最小的存储要求,但底层存储后端应具有相对高性能的硬盘子系统。如果频繁生成/旋转许多机密,则此信息需要经常刷新到磁盘,如果使用较慢的硬盘驱动器,可能会影响性能。

此部署中的Consul服务器功能用作Vault的存储后端。这意味着存储为Vault中持久性的所有内容都由Vault加密,并在静态时写入存储后端。此数据将写入Consul服务目录的键值存储部分,该部分需要在每个Consul服务器上完整存储在内存中。这意味着当更多客户端向Vault进行身份验证时,内存可能成为扩展中的约束,更多秘密会持久存储在Vault中,并且会从Vault中租用更多临时密钥。如果需要额外的空间,这还需要在Consul服务器的内存上进行垂直缩放,因为整个服务目录存储在每个Consul服务器的内存中。

此外,网络吞吐量是Vault和Consul服务器的共同考虑因素。由于两个系统都是HTTPS API驱动的,所有传入请求,Vault和Consul之间的通信,Consul集群成员之间的基础八卦通信,与外部系统的通信(每个auth或秘密引擎配置,以及一些审计日志记录配置)和响应都会消耗网络带宽。

由于Consul群集操作中的网络性能注意事项,应通过性能或DR复制来实现跨网络边界的Vault数据集的复制,而不是跨越网络和物理边界传播Consul群集。如果单个consul集群分布在远程或跨区域的网段上,则可能导致集群内的同步问题或某些云提供商的额外数据传输费用。

其他考虑因素
Vault生产强化建议提供了有关Vault的生产强化部署的最佳实践的指导。

使用Consul接口进行负载均衡


Consul可以提供负载平衡功能,但它要求任何Vault客户端都是Consul。 这意味着客户端可以使用Consul DNS或API接口来解析活动的Vault节点。 客户端可以通过以下URL访问Vault:http://active.vault.service.consul:8200

这依赖于操作系统DNS解析系统,并且可以将请求转发给Consul以获得实际的IP地址响应。 该操作对于遗留应用程序可以是完全透明的,并且可以像典型的DNS解析操作一样操作。

使用外部负载均衡器进行负载均衡

还支持外部负载平衡器,它们将放置在Vault群集的前面,并将轮询特定的Vault URL以检测活动节点并相应地路由流量。

具有以下URL的活动节点的HTTP请求将以200状态响应:http:// <Vault Node URL>:8200 / v1 / sys / health

以下是来自HAProxy的示例配置块,用于说明:

listen vault
    bind 0.0.0.0:80
    balance roundrobin
    option httpchk GET /v1/sys/health
    server vault1 192.168.33.10:8200 check
    server vault2 192.168.33.11:8200 check
    server vault3 192.168.33.12:8200 check

 

注意,当使用软件负载平衡器时,Consul(带有consul-template)可以生成上述块。 当负载均衡器是Nginx,HAProxy或Apache等软件时,可能会出现这种情况。

上述HAProxy块的示例Consul模板:

listen vault
   bind 0.0.0.0:8200
   balance roundrobin
   option httpchk GET /v1/sys/health{{range service "vault"}}
   server {{.Node}} {{.Address}}:{{.Port}} check{{end}}

 

客户端IP地址处理


有两种支持的方法用于处理代理或负载均衡器后面的客户端IP寻址; X-Forwarded-For Headers和PROXY v1。 两者都需要受信任的负载均衡器,并且需要IP地址白名单以遵守安全最佳实践。

高可用性


Vault群集是一个数据中心内高度可用的部署单元。 推荐的方法是三个带有Consul存储后端的Vault服务器。 使用此配置,在Vault服务器中断期间,无需人工干预即可立即处理故障转移。

要了解有关在HA模式下设置Vault服务器的更多信息,请阅读带有Consul指南的Vault HA。

具有性能备用节点的高可用性和跨数据中心的数据位置需要Vault Enterprise。


多个数据中心的部署拓扑

Vault复制


仅限企业:Vault复制功能是Vault Enterprise的一部分。

HashiCorp Vault Enterprise提供两种复制模式,性能和灾难恢复。 Vault文档提供了有关Vault Enterprise中复制功能的更多详细信息。

性能复制


Vault性能复制允许跨多个站点进行秘密管理。 秘密,身份验证方法,授权策略和其他详细信息将被复制为活动且可在多个位置使用。

有关过滤掉跨区域复制的秘密引擎的信息,请参阅Vault Mount过滤器指南。

灾难恢复复制


Vault灾难恢复复制可确保备用Vault群集与活动的Vault群集保持同步。 这种复制模式包括诸如临时认证令牌,基于时间的令牌信息以及令牌使用数据之类的数据。 这为在防止短暂运行数据丢失引起最大关注的环境中提供了积极的恢复点目标。

跨区域灾难恢复


如果您的灾难恢复策略是计划丢失整个数据中心,则下图说明了可能的复制方案。

在这种情况下,如果区域A中的Vault群集出现故障并且您将区域B中的DR群集提升为新的主群集,则您的应用程序将需要从区域B中的Vault群集读取和写入机密。这可能会也可能不会引发 您的应用程序的问题,但您需要在规划期间考虑到这一点。

区域内灾难恢复


如果您的灾难恢复策略是计划丢失群集而不是整个数据中心,则下图说明了可能的复制方案。

有关其他信息,请参阅Vault灾难恢复设置指南。

腐败或破坏性灾难恢复


防止在云环境中更普遍的另一种常见方案是提供非常高水平的内在弹性,可能是数据和配置的有目的或意外损坏,或者是云帐户控制的丢失。 Vault的DR Replication旨在复制实时数据,这会传播故意或意外的数据损坏或删除。为了防止这些可能性,您应该备份Vault的存储后端。这通过Consul Snapshot功能得到支持,该功能可以自动进行常规归档备份。可以从Consul快照重新补充冷站点或新基础架构。

有关Consul快照的详细信息,请参阅联机文档。

复制说明


复制集中的群集数量没有设置限制。目前最大的部署在30多个集群范围内。
Performance复制集中的任何群集都可以充当灾难恢复主群集。
Performance复制集中的集群还可以复制到多个Disaster Recovery辅助集群。
虽然Vault群集可以拥有复制角色(或多个角色),但在基础架构方面不需要特殊考虑,并且群集可以承担(或被提升)到另一个角色。与安装过滤器和HSM使用相关的特殊情况可能会限制角色的交换,但这些基于特定的组织配置。

与Unseal proxy_protocol_behavior相关的注意事项


使用与HSM设备集成的Vault集群进行复制以实现自动开封操作具有一些在规划阶段应该理解的细节。

如果性能主群集使用HSM,则该复制集中的所有其他群集也必须使用HSM。
如果性能主群集不使用HSM(使用Shamir机密共享方法),则可以混合该复制集内的群集,以便某些群集可以使用HSM,其他群集可以使用Shamir。
为了便于讨论,云自动开封功能被视为HSM。

其他参考文献


Vault体系结构文档介绍了每个Vault组件
要将Vault与现有LDAP服务器集成,请参阅LDAP验证方法文档
请参阅AppRole Pull Authentication指南,以编程方式为计算机或应用程序生成令牌
无论位于何处,Consul都是运行弹性Vault群集的重要组成部分。有关详细信息,请参阅在线Consul文档。


下一步


阅读生产强化,了解Vault的生产强化部署的最佳实践。
阅读部署指南,了解安装和配置单个HashiCorp Vault群集所需的步骤。

 

原文:https://sethbergman.tech/vault-reference-architecture/

本文:https://pub.intelligentx.net/vault-reference-architecture

讨论:请加入知识星球或者小红圈【首席架构师圈】

Article
知识星球
 
微信公众号
 
视频号