# Vault安全策略和密钥管理指南 ## 1. 概述 本文档定义了Vault密钥的安全管理策略,确保基础设施的安全性和可靠性。 ## 2. 密钥类型 ### 2.1 初始化密钥 - **解封密钥**:用于解封Vault实例 - **根令牌**:具有Vault中所有权限的初始令牌 ### 2.2 操作密钥 - **用户令牌**:分配给用户和服务的访问令牌 - **策略令牌**:基于特定策略的受限令牌 ## 3. 安全存储策略 ### 3.1 解封密钥存储 **禁止**: - 将所有密钥存储在同一位置 - 在代码或配置文件中明文存储密钥 - 通过不安全的通信渠道传输密钥 **推荐**: 1. **物理分发**: - 将5个解封密钥分别交给5个不同的可信管理员 - 每个管理员仅知道自己的密钥 - 需要3个密钥即可解封Vault(Shamir's Secret Sharing) 2. **加密存储**: - 使用GPG或其他加密工具加密密钥文件 - 将加密后的文件存储在安全位置 - 加密密钥由不同管理员保管 3. **硬件安全模块**: - 企业环境推荐使用HSM存储密钥 - 提供硬件级别的安全保护 ### 3.2 根令牌存储 - 根令牌应立即用于创建具有最小权限的管理令牌 - 创建后应立即撤销根令牌 - 新的管理令牌应根据职责分离原则分发 ## 4. 密钥生命周期管理 ### 4.1 创建 - 初始化时生成密钥 - 立即按照安全策略分发和存储 - 记录密钥创建时间和负责人 ### 4.2 使用 - 仅在必要时使用解封密钥 - 定期轮换用户和服务令牌 - 监控密钥使用情况 ### 4.3 更新 - 定期重新初始化Vault以生成新密钥(谨慎操作) - 当管理员变更时更新密钥分发 - 发生安全事件时立即重新生成密钥 ### 4.4 销毁 - 安全删除不再需要的密钥副本 - 使用安全删除工具确保数据不可恢复 - 记录密钥销毁时间和负责人 ## 5. 应急响应 ### 5.1 密钥泄露 1. 立即生成新的解封密钥 2. 重新初始化Vault集群 3. 更新所有依赖Vault的服务配置 4. 调查泄露原因并修复安全漏洞 ### 5.2 管理员不可用 1. 确保有足够的密钥持有者可用(至少3人) 2. 建立备用密钥持有者列表 3. 定期验证密钥持有者的可用性 ## 6. 审计和合规 ### 6.1 审计要求 - 记录所有密钥相关操作 - 定期审查密钥管理策略执行情况 - 生成密钥使用报告 ### 6.2 合规性 - 遵循组织安全政策 - 满足行业标准要求(如SOC 2, ISO 27001等) - 定期进行安全评估 ## 7. 实施步骤 ### 7.1 初始化Vault ```bash # 使用提供的脚本初始化Vault /root/mgmt/deployment/scripts/init_vault_cluster.sh ``` ### 7.2 安全分发密钥 1. 将生成的密钥文件复制到安全位置 2. 将密钥文件加密并分发给不同管理员 3. 验证每个管理员都能正确解封Vault ### 7.3 创建管理令牌 ```bash # 使用根令牌创建管理令牌 export VAULT_ADDR='http://<节点IP>:8200' export VAULT_TOKEN= vault token create -policy=admin -period=24h ``` ### 7.4 撤销根令牌 ```bash # 撤销根令牌以提高安全性 vault token revoke ``` ## 8. 最佳实践 ### 8.1 访问控制 - 实施最小权限原则 - 使用策略限制令牌权限 - 定期审查和更新策略 ### 8.2 监控和告警 - 监控Vault解封和密封事件 - 设置密钥使用异常告警 - 定期生成安全报告 ### 8.3 备份和恢复 - 定期备份Vault数据 - 测试恢复流程 - 确保备份数据的安全性 ## 9. 相关文档 - [Vault官方安全指南](https://www.vaultproject.io/docs/internals/security) - [HashiCorp安全模型](https://www.hashicorp.com/security) - 组织内部安全政策