Secure your Secrets in DevOps with Hashicorp Vault
字数 1363 2025-08-18 11:37:23

HashiCorp Vault 在 DevOps 中的秘密管理指南

1. 什么是 HashiCorp Vault

HashiCorp Vault 是一款用于管理秘密(secrets)的工具,主要功能包括:

  • 加密、存储和访问控制
  • 管理各种形式的敏感信息:令牌、密码、证书、API密钥等
  • 提供密钥租用管理、密钥失效、滚动租期和审计功能
  • 通过统一接口访问加密的 Key/Value 存储
  • 提供加解密服务
  • 生成 AWS 平台、SQL/NoSQL 数据库的秘密信息
  • 签发 X.509 证书

2. Vault 的核心功能

2.1 解决 DevOps 中的常见安全问题

  • 避免将敏感信息(如数据库连接信息)直接存储在代码或配置文件中
  • 提供集中化的秘密管理,替代本地存储
  • 实现秘密的统一查看、管控和更新

2.2 加密存储机制

  • Vault 的后端存储只保存加密后的数据
  • 不存储解密所需的密钥
  • 即使存储被攻击者获取也无法解密

3. Vault 的基本使用流程

3.1 安装与初始化

  1. 下载并安装 Vault
  2. 创建本地 Vault server 实例
  3. 初始化 Vault server:
    vault init
    
    • 默认生成 5 个开启密钥(unseal key)
    • 任意 3 个组合可用于开启 Vault server
    • 可配置密钥数量和开启阈值
  4. 初始化过程中还会生成 Initial Root Token(初始根令牌)

3.2 登录与访问

  1. 使用 Root Token 登录:
    vault login [root_token]
    
  2. Root 用户拥有最高权限,可创建新用户令牌

3.3 秘密引擎(Secrets Engine)

  1. 查看可用引擎:
    vault list
    
  2. KV(Key/Value)引擎:
    • 位于 secret/ 路径下
    • 用于存储 Key/Value 对

3.4 读写操作

  1. 创建路径并写入数据:

    vault kv put secret/properties usr=username pswd="password"
    
    • put 命令会覆盖原有内容
    • 使用 patch 命令可添加新内容而不覆盖
  2. 读取数据:

    vault kv get secret/properties
    

3.5 HTTP API 接口

  • 提供 HTTP 接口实现所有操作
  • 官方支持 Go、Ruby 开发库
  • 第三方库支持 Java(vault-java-driver)等多种语言
  • 开发库参考:https://www.vaultproject.io/api/libraries.html

3.6 关闭与封锁

  1. 封锁(seal)Vault server:

    vault seal
    
    • 不需要管理员权限
    • 封锁后需重新开启才能使用
  2. 开启(unseal)Vault server:

    vault unseal [key]
    
    • 根据初始化配置,可能需要多个密钥

4. 高级功能

  1. 多用户访问控制

    • 可细分到路径级别的权限控制
    • 通过令牌管理用户访问
  2. 密钥管理

    • 密钥的发放和回收
    • 租期管理
  3. 多种秘密格式支持

    • 不仅限于 Key/Value
    • 支持证书、动态秘密等

5. 最佳实践建议

  1. 根据团队规模和安全需求合理设置密钥数量和开启阈值
  2. Root Token 应妥善保管,避免日常使用
  3. 为不同应用和服务创建专用路径和访问权限
  4. 定期轮换密钥和令牌
  5. 启用审计日志记录所有操作

6. 适用场景

  1. 代码库中的敏感信息管理
  2. 多环境配置管理(开发/测试/生产)
  3. 微服务架构中的秘密分发
  4. 自动化流程中的凭证管理
  5. 合规性要求高的数据存储

通过 HashiCorp Vault,DevOps 工程师可以实现集中化、安全的秘密管理,解决敏感信息分散存储带来的安全风险和管理难题。

HashiCorp Vault 在 DevOps 中的秘密管理指南 1. 什么是 HashiCorp Vault HashiCorp Vault 是一款用于管理秘密(secrets)的工具,主要功能包括: 加密、存储和访问控制 管理各种形式的敏感信息:令牌、密码、证书、API密钥等 提供密钥租用管理、密钥失效、滚动租期和审计功能 通过统一接口访问加密的 Key/Value 存储 提供加解密服务 生成 AWS 平台、SQL/NoSQL 数据库的秘密信息 签发 X.509 证书 2. Vault 的核心功能 2.1 解决 DevOps 中的常见安全问题 避免将敏感信息(如数据库连接信息)直接存储在代码或配置文件中 提供集中化的秘密管理,替代本地存储 实现秘密的统一查看、管控和更新 2.2 加密存储机制 Vault 的后端存储只保存加密后的数据 不存储解密所需的密钥 即使存储被攻击者获取也无法解密 3. Vault 的基本使用流程 3.1 安装与初始化 下载并安装 Vault 创建本地 Vault server 实例 初始化 Vault server: 默认生成 5 个开启密钥(unseal key) 任意 3 个组合可用于开启 Vault server 可配置密钥数量和开启阈值 初始化过程中还会生成 Initial Root Token(初始根令牌) 3.2 登录与访问 使用 Root Token 登录: Root 用户拥有最高权限,可创建新用户令牌 3.3 秘密引擎(Secrets Engine) 查看可用引擎: KV(Key/Value)引擎: 位于 secret/ 路径下 用于存储 Key/Value 对 3.4 读写操作 创建路径并写入数据: put 命令会覆盖原有内容 使用 patch 命令可添加新内容而不覆盖 读取数据: 3.5 HTTP API 接口 提供 HTTP 接口实现所有操作 官方支持 Go、Ruby 开发库 第三方库支持 Java(vault-java-driver)等多种语言 开发库参考:https://www.vaultproject.io/api/libraries.html 3.6 关闭与封锁 封锁(seal)Vault server: 不需要管理员权限 封锁后需重新开启才能使用 开启(unseal)Vault server: 根据初始化配置,可能需要多个密钥 4. 高级功能 多用户访问控制 : 可细分到路径级别的权限控制 通过令牌管理用户访问 密钥管理 : 密钥的发放和回收 租期管理 多种秘密格式支持 : 不仅限于 Key/Value 支持证书、动态秘密等 5. 最佳实践建议 根据团队规模和安全需求合理设置密钥数量和开启阈值 Root Token 应妥善保管,避免日常使用 为不同应用和服务创建专用路径和访问权限 定期轮换密钥和令牌 启用审计日志记录所有操作 6. 适用场景 代码库中的敏感信息管理 多环境配置管理(开发/测试/生产) 微服务架构中的秘密分发 自动化流程中的凭证管理 合规性要求高的数据存储 通过 HashiCorp Vault,DevOps 工程师可以实现集中化、安全的秘密管理,解决敏感信息分散存储带来的安全风险和管理难题。