Vault Enterprise Operations and Recovery

验证:未记录
适用版本
未记录
验证范围
尚未登记验证记录。
本文缩写(英文全称与中文含义)
缩写 英文全称/名称 中文含义
API Application Programming Interface 应用程序编程接口
ARN Amazon Resource Name AWS 资源名称,用于唯一标识资源
AWS Amazon Web Services 亚马逊云服务
CLI Command-Line Interface 命令行接口
DB Database 数据库
DBA Database Administrator 数据库管理员
DR Disaster Recovery 灾难恢复
HMAC Hash-based Message Authentication Code 基于散列的消息认证码
IAM Identity and Access Management 身份与访问管理
IdP Identity Provider 身份提供方
JWT JSON Web Token 一种携带声明的令牌格式
KMS Key Management Service 密钥管理服务
KV Key-Value 键值存储模型
MFA Multi-Factor Authentication 多因素认证
OIDC OpenID Connect 基于 OAuth 2.0 的身份认证协议
RPO Recovery Point Objective 恢复点目标,可接受的数据丢失时间范围
RTO Recovery Time Objective 恢复时间目标,可接受的恢复耗时
TLS Transport Layer Security 传输层安全协议
UI User Interface 用户界面

1. 人员与权限#

身份 权限边界
应用 只读取自身 KV 路径、签发自身数据库 role 的凭据
值班运维 健康、Raft 状态、受控快照操作;不默认读取业务 secret
配置发布身份 审批后修改限定 auth/policy/engine 配置,禁止任意自我提权
密钥保管人 分别持有 recovery share,不持有共享 root token
审计人员 读取独立审计平台,不修改 Vault policy

Policy 是路径级控制;租户强隔离还需考虑独立集群或 Enterprise namespaces。能修改 policy/auth 的身份可以间接扩大权限,应视为高权限变更入口。

2. OIDC + MFA#

使用企业 IdP,MFA 在 IdP 登录流程强制执行。先建立 OIDC application,配置 Vault UI 回调和 CLI 回调:

https://vault.internal:8200/ui/vault/auth/oidc/oidc/callback
http://localhost:8250/oidc/callback

本例 auth mount 为 oidc,回调中的路径必须与实际 mount 一致。不要配置宽泛通配回调。

保存 vault-ops.hcl,只授予运维读取与快照导出:

path "sys/health" {
  capabilities = ["read"]
}
path "sys/leader" {
  capabilities = ["read"]
}
path "sys/storage/raft/configuration" {
  capabilities = ["read"]
}
path "sys/storage/raft/autopilot/state" {
  capabilities = ["read"]
}
path "sys/storage/raft/snapshot" {
  capabilities = ["read"]
}

管理员配置 OIDC,client secret 通过权限 0600 的文件交付:

vault policy write vault-ops vault-ops.hcl
vault auth enable oidc
vault write auth/oidc/config oidc_discovery_url=https://id.example.com/realms/platform oidc_client_id=vault oidc_client_secret=@/secure/bootstrap/oidc-client-secret.txt default_role=platform-ops

保存 platform-ops.json;IdP 必须在 token/userinfo 中按配置提供 groups claim:

{
  "role_type": "oidc",
  "user_claim": "sub",
  "groups_claim": "groups",
  "bound_audiences": ["vault"],
  "bound_claims": {"groups": ["vault-platform-ops"]},
  "allowed_redirect_uris": [
    "https://vault.internal:8200/ui/vault/auth/oidc/oidc/callback",
    "http://localhost:8250/oidc/callback"
  ],
  "oidc_scopes": ["profile", "groups"],
  "token_policies": ["vault-ops"],
  "token_ttl": "15m",
  "token_max_ttl": "1h"
}
vault write auth/oidc/role/platform-ops @platform-ops.json

在另一终端清除 bootstrap token 后登录,验证实际身份:

unset VAULT_TOKEN
vault login -method=oidc role=platform-ops
vault operator raft list-peers
vault token capabilities kv/data/prod/orders/config

预期运维可查看集群、不能读取订单 secret。不具备指定 IdP group 的人员不能取得此 role。人员离职还需处理已签发的 Vault token,不只删除 IdP 用户。OIDC/JWT

完成应用与管理身份交接后,在仍持有 bootstrap root 的专用会话执行 vault token revoke -self。后续恢复或高权限配置使用审批后的独立身份;无常驻管理员时,通过 recovery quorum 的 break-glass 流程临时生成 root、完成变更后撤销。

3. 审计与监控#

启用 file audit,将每个节点的日志送入独立日志账号/平台。审计字段默认存在 HMAC 等保护,但日志仍可能含敏感元数据,不开放给所有开发者。

至少一个已启用 audit device 必须能成功写入,否则 Vault 可拒绝请求。企业可配置独立的第二审计通道,并分别监控磁盘、日志采集与远端延迟;不要用关闭审计解决磁盘告警。Audit devices

监控项 验收或告警
Seal / initialized / leader 意外 sealed、未初始化节点进入服务、leader 反复变动
Raft 多数派、节点健康、提交延迟、磁盘空间与延迟
API 登录/读取失败率、请求延迟、资源饱和
Tokens / leases 数量异常增长、续期失败、数据库撤销失败
TLS / KMS 证书到期、KMS 授权失败、key 禁用/删除事件
Audit 写入失败、磁盘不足、外送延迟、异常高权限操作
Backup 最近成功快照年龄、跨区复制和恢复演练结果

Prometheus 通过受限身份访问 /v1/sys/metrics?format=prometheus;不为方便采集直接公开无认证指标。监控应在 Vault 不可用时仍能告警。

4. Raft 快照备份#

使用有 sys/storage/raft/snapshot 读取权限的独立备份身份:

umask 077
VAULT_BACKUP_DIR=$(mktemp -d)
VAULT_BACKUP_FILE="$VAULT_BACKUP_DIR/vault-$(date -u +%Y%m%dT%H%M%SZ).snap"
vault operator raft snapshot save "$VAULT_BACKUP_FILE"
vault operator raft snapshot inspect "$VAULT_BACKUP_FILE"

将快照加密传至独立备份账号,并保存校验和、Vault 版本、seal 类型、KMS key ARN、时间和演练记录。运行配置、TLS 材料、插件版本、IAM/KMS 权限不应只依赖 Raft 快照保存。

示例目标:每 15 分钟备份,复制至隔离存储;实际 RPO 取决于最近可用且成功验证的副本,RTO 包含重建、解封、外部系统对账和应用恢复。snapshot inspect 通过不等于完成恢复验证。

5. 隔离恢复 Hands-on#

以下只在专用恢复环境执行,禁止对在线生产集群覆盖快照。

  1. 选定已校验快照,准备兼容 Vault 版本的空集群,配置原快照所需的 seal/KMS 访问。
  2. 隔离应用入口与数据库/云 API 写路径,避免旧 lease 在恢复时误操作外部系统;审计通道保持可写。
  3. 按空集群流程初始化并取得临时管理访问。确认 VAULT_ADDR 指向恢复集群。
  4. 导入快照。初始化产生了不同 seal 元数据时,只有确认 seal 材料兼容后才使用 -force。
export VAULT_ADDR=https://vault-restore.internal:8200
export VAULT_CACERT=/secure/restore/vault-ca.crt
vault status

# 仅针对已隔离、已批准覆盖的恢复环境。
vault operator raft snapshot restore -force /secure/restore/approved.snap

-force 跳过部分一致性检查,不绕过底层加密,也不能用任意新 KMS key 解密旧快照。恢复后按实际状态重启/解封、检查 peers 并重建其余节点;恢复前的临时 token 可能失效,需使用恢复点有效的管理身份或 quorum 恢复流程。

  1. 核对 mounts、policies、auth 和合成 canary;旧快照可能恢复当时的 token/lease 状态,评估已撤销凭据重新出现的风险。
  2. 数据库管理密码可能已在快照后轮换,快照中的旧密码与真实数据库不一致。先由 DBA/云平台对账并修复连接配置,再逐项解除外部访问隔离。
  3. 使用测试数据库验证签发、续期、撤销;确认新审计、备份有效后,才按事故流程切换应用入口。

跨 Region 恢复还必须解决 seal 依赖:原区域 KMS 不可用时,复制一个快照到另一 Region 不足以解封。seal 迁移、KMS 多 Region 设计或 Enterprise DR 的具体支持需提前验证,不在事故中临时换 key。Raft snapshot

6. 升级与故障演练#

场景 实验与验收
单节点故障 一次停止一台,确认客户端重试、leader 选举和集群恢复
KMS 授权丢失 隔离环境撤销测试授权,验证重启无法解封与告警链路
Audit 磁盘问题 验证写入失败、备用通道和容量告警,不影响真实集群
DB lease 撤销失败 临时阻断测试 DB,检查重试、残留角色和恢复后回收
Agent token 到期 观察重新认证、模板刷新和连接池更换
快照恢复 核对 canary、权限、外部凭据与实际 RTO/RPO

升级先查目标版本发行说明、兼容性与必须经过的中间版本。保存并验证升级前快照,在预生产演练;按官方版本路径滚动处理 standby 与 active,保持多数派。不要假定新版本写过的数据能直接降级读取。

7. 发布与故障处理边界#

  • Terraform 管理 Vault 配置时,检查 provider 行为;普通敏感字段可能进入 state,sensitive 不等于不落盘。
  • 不把 Vault 所依赖的 KMS、TLS 私钥恢复材料、备份访问凭据仅存放在这个 Vault 内,避免启动依赖闭环。
  • KV 更新不会自动轮换第三方真实密码;动态 engine 管理的外部凭据需核对撤销是否执行成功。
  • 正式拆除前先迁移应用、撤销/核对外部租约、保存所需备份,再清理集群;不要先删除 KMS key。

与 AWS 企业灾备流程 配套:Vault 自身、数据库和应用需要一致的恢复顺序,不能只恢复 secret 服务就宣布业务恢复。

搜索文档

输入关键词,搜索所有文档。

↑ ↓ 选择 · Enter 打开 · Esc 关闭