KMS解决方案-Vault
文章目录
概述
Vault 是一个秘密管理、加密即服务和特权访问管理的工具。业界用的比较多的 KMS 解决方案。
用于加解密 secret, 比如API密钥、密码、证书等等。Vault为任何秘密提供了一个统一的界面,同时提供严格的访问控制和记录详细的审计日志。
支持特性
- 安全秘钥存储: 任意的 key/value 秘钥可以存储在 Vault 中。Vault 会在将这些秘钥写入持久性存储之前对其进行加密,因此获得对原始存储的访问权限并不足以访问你的秘钥。Vault可以写入磁盘、Consul 等。
- 动态加密: Vault 可以为一些系统按需生成秘钥,如 AWS 或 SQL 数据库。例如,当一个应用需要访问 S3 bucket 时,它会向 Vault 请求凭证,Vault 按需生成一个具有有效权限的 AWS 密钥对。创建动态秘钥后,Vault 还会在租约到期后自动撤销秘钥。
- 数据加密: Vault 可以在不存储数据的情况下对数据进行加密和解密。可以定义加密参数,开发人员可以将加密数据存储在 SQL 等位置,而不必自己设计加密方法。
- 秘钥租赁和更新: Vault 中的所有秘钥都有一个与之相关的租约。在租约结束时,Vault 将自动撤销该秘钥。客户端能够通过内置的续约 API 来续约。
- 秘钥回收: Vault 内置了对秘钥撤销的支持。Vault 不仅可以撤销单一的秘钥,还可以撤销一棵秘钥树,例如由特定用户读取的所有秘钥,或特定类型的所有秘钥。撤销有助于密钥滚动以及在发生入侵时锁定系统。
部署 Vault
依赖 Golang 环境
下载 Vault:
1git clone git@github.com:hashicorp/vault.git要编译 Vault 的开发版本,请运行
make或make dev编译后会把 Vault 二进制文件放在bin和$GOPATH/bin文件夹:1 2 3$ make dev ... $ bin/vault要编译带有用户界面的 Vault 开发版,运行
make static-dist dev-ui。编译后会把 Vault 二进制文件放在bin和$GOPATH/bin文件夹:1 2 3$ make static-dist dev-ui ... $ bin/vault要运行测试,输入
make test。注意:这需要安装 Docker1 2$ make test ...如果正在开发一个特定的包,通过指定 TEST 变量来运行该包的测试。 比如下面的例子,只运行vault包的测试:
1 2make test TEST=./vault ...
Vault 操作命令
vault operator init: 连接并初始化 Vault。可能出错:
1Error initializing: Put https://127.0.0.1:8200/v1/sys/init: dial tcp 127.0.0.1:8200: connect: connection refused.解决办法:
1export VAULT_ADDR='http://127.0.0.1:8200' # config Vault client to connect with dev server.
vault status: 查看 Vault 的状态。vault kv put secret/hello foo=world: The secret prefix is where arbitary secrets can be read and written.vault kv get secret/hello: Getting a Secret.vault kv delete secret/hello: Deleting a Secret.vault secrets enable -path-kv kv: Enable a Secrets Engine.vault secrets list: List all enabled Secrtes Engines.vault list kv: LIst key in kv Engine.vault secrets disable kv/: Disable a Secrets Engine.
分类
- 基本命令:
- read
- write
- delete
- list
- login
- server
- status
- unwrap
- 其他:
- audit
- auth
- lease
- operator
- path-help
- policy
- secrets
- ssh
- token
dev 模式下启动一个 Vault Server:
| |
通过 CLI 和 HTTP API 来调用 Vault
