
文章目录VaultHashiCorp 开源的密钥管理工具35k StarVaultHashiCorp 开源的密钥管理工具35k StarHashiCorp 开源的密钥管理工具 Vault在 GitHub 上已经积累了超过 35,000 个 Star。Vault 用于安全地访问密钥。这里的密钥指的是任何需要严格控制访问权限的内容包括 API 密钥、密码、证书等。Vault 提供了一个统一的接口来管理这些密钥同时提供严格的访问控制和详细的审计日志。现代系统需要访问大量密钥数据库凭证、外部服务的 API 密钥、服务间通信的凭证等等。搞清楚谁在访问哪些密钥已经很困难了再加上密钥轮换、安全存储和审计日志如果没有一套专门的方案几乎无法实现。Vault 就是为了解决这个问题而生的。核心功能Vault 的核心功能可以分为五个方面。安全密钥存储Vault 可以存储任意的键值对数据。在写入持久化存储之前数据会先经过加密处理所以即使有人拿到了底层存储的访问权限也无法直接读取密钥内容。Vault 支持写入磁盘、Consul 等多种存储后端。动态密钥Vault 可以为某些系统按需生成密钥比如 AWS 或 SQL 数据库。举个例子当一个应用需要访问 S3 存储桶时它向 Vault 请求凭证Vault 会即时生成一组具有相应权限的 AWS 密钥对。这些动态密钥在租约到期后会被自动撤销。数据加密Vault 可以在不存储数据的情况下完成加密和解密操作。安全团队可以定义加密参数开发者直接把加密后的数据存到 SQL 数据库里就行不需要自己设计加密方案。租约与续期Vault 为每个密钥关联一个租约。租约到期后密钥会被自动撤销。客户端可以通过内置的续期 API 来延长租约。密钥撤销Vault 内置了密钥撤销功能可以撤销单个密钥也可以撤销一整棵密钥树比如某个用户读取过的所有密钥或者某类密钥的全部实例。这个功能在密钥轮换和系统入侵时的紧急封锁场景中很有用。开发与测试Vault 使用 Go 语言开发。本地编译需要先安装 Go 环境设置好 GOPATH 和 GOBIN 变量然后克隆仓库并执行make bootstrap来下载依赖。运行make dev即可编译出开发版本的二进制文件。如果需要带 UI 的版本执行make static-dist dev-ui。运行测试需要 Docker 环境执行make test即可。如果只想测试某个特定包可以通过TEST变量指定路径比如make test TEST./vault。Vault 还支持 Docker 容器化测试可以在隔离环境中运行测试集群也支持通过环境变量指定自定义二进制文件进行测试。企业版与认证Vault 有企业版提供额外的功能。HashiCorp 还提供 Vault 相关的认证考试可以在官网上找到考试信息和学习资料。项目源码中导出了两个库vault/api和vault/sdk其他项目可以导入使用。不过官方不建议直接把 Vault 主仓库作为依赖导入这只是理论上的可能性并非官方支持的用法。把 Vault 主仓库作为依赖导入这只是理论上的可能性并非官方支持的用法。