存储
如同先前介绍 Vault 的架构章节中所述,Vault 是不信任的后端存储的,保存在后端存储中的只有加密后的信息。
支持的后端存储类型
对于企业用户,HashiCorp 提供了对 Vault 集成 Consul 作为后端存储的官方支持。
另外有许多社区支持的其他存储类型可用,可以在后续配置文件章节中获取更多信息。
备份
由于 Vault 存储配置具有高度灵活性,为 Vault 的备份提供准确的指导是一件具有挑战性的工作。
要为 Vault 建立备份,需要考虑两种数据:
- Vault 在后端存储中的加密数据
- 运行 Vault 服务所需的配置文件以及管理脚本
还有一个需要考虑的大问题——我们想通过备份来防御的故障是什么?
先讨论大问题——为什么要做备份?
在制定持续的备份和灾难恢复策略时,思考“为什么要备份”这个问题很重要。
建议在升级之前进行备份,因为 Vault 存储的数据在出问题后并非总是能够降级回从前的。通常,每当计划对集群进行重大变更前,都建议进行备份。
更具体地说,我们建议在对 /sys
API(不包括 /sys/leases
、/sys/namespaces
、/sys/tools
、/sys/wrapping
、/sys/policies
和 /sys/pprof
这些端点)进行写操作之前进行备份,而不是在写时备份。对 /sys
API 进行写操作的一些工作流会进行升级并且重新生成密钥。未来这份指南可能会针对集成存储后端部分的内容进行修改。
备份还可以帮助处理意外删除或修改数据的情况。如果发生这种情况,事情可能会变得有点棘手。如果我们使用的是早上 5 点的备份数据进行恢复,但当前时间是早上 10 点,我们将丢失在早上 5 点到 10 点之间写入的数据。 Lucy Davinhart 在 HashiConf 做过一个演讲,分享了一个有趣的案例。
我们不建议使用备份来防止单个机器出现的故障。 Vault 服务器可以部署为集群运行,因此为了防止服务器故障,我们建议在高可用模式下运行 Vault。仅仅使用开源版的功能,Vault 集群就可以在同一区域内的多个可用区之间进行扩展。
Vault 企业版支持复制集群和数据中心级别故障的灾难恢复。在高可用模式下使用开源版 Vault 时,备份可以帮助应对数据中心级别的故障。
归根结底,备份不能替代在高可用模式或使用 Vault 企业版进行复制。在制定从灾难恢复或防范故障的计划时,我们应该将备份和高可用都视为该计划的关键组成部分。
备份 Vault 的持久化数据
最好是在 Vault 服务离线时进行备份和还原操作。如果无法进行离线备份,那么我们推荐使用支持原子化快照功能的后端存储(例如 Consul 或是 Vault 集成存储)。
如果使用的后端存储不支持原子化快照,我们推荐只进行离线备份。
要在 HashiCorp 支持的后端存储上对 Vault 存储的加密数据进行备份或者还原操作,请阅读后续命令章节中有关 snapshot
以及 operator raft
命令的部分。
配置
除了备份 Vault 保存在存储后端中的加密数据外,我们可能还希望保存服务器配置文件、用于管理 Vault 服务的所有脚本,并确保可以重新安装任何用户安装的插件。这些文件的位置是由当前 Vault 安装时配置的。
注意:尽管保存在存储后端内的 Vault 数据的备份或快照都是加密的,但某些配置可能是敏感的(例如,用于透明地自动解封的 Vault 令牌,或是配置文件中的 TLS 私钥)。备份中如果存在此种信息意味着我们需要仔细地保护它们。