简介:
HashiCorp Vault是一个私密信息管理工具(A tool for managing secrets),提供键值的方式保存私密信息。
私密信息:
如数据库用户名密码、ssl证书、用户敏感信息等
特性:
1、安全的私密信息存储
2、动态的私密信息支持
3、提供对于私密信息的更新,延长有效时间的功能
4、灵活的权限控制
5、多种客户端登录验证方式
安装使用:
1、安装
- 安装包下载页面:·https://www.vaultproject.io/downloads.html
linux安装包下载:
wget https://releases.hashicorp.com/vault/0.7.0/vault_0.7.0_linux_amd64.zip
2、启动vault:
- 1、安装包下载后解压,解压后只有一个名为vault的可执行文件;
2、启动服务:
- 开发环境
vault server -dev
*生产环境勿用- 生产环境 `vault server -config=vault.hcl` vault.hcl为启动配置文件,具体下面再讲。 vault.hcl文件内容如下:
disable_mlock = true backend "mysql" { address = "192.168.3.95:3306" username = "root" password = "1qazxsw2" database = "vault" table = "vault" } listener "tcp" { address = "0.0.0.0:8200" tls_cert_file = "work/ca/certs/localhost.cert.pem" tls_key_file = "work/ca/private/localhost.decrypted.key.pem" }
3、vault初始化:
启动后需要对vault进行初始化,如下:
命令:vault init
或者vault init -key-shares=5 -key-threshold=3
说明:
-key-shares
:指定秘钥的总股数,
-key-threshold
:指定需要几股可解锁
以上参数为默认,可不设置。
初始化后会得到多个key和一个root token,key用作解封vault使用,root token用作首次访问vault使用;
两者皆需要有运维人员保存记录下,为了安全起见,key应由多个人分别保管,root token由安全人员保管。
为了方便CLI使用vault命令,建议配置环境变量;安全起见,建议设置环境变量只在当前客户端生效,
命令:
说明 | 命令 | 说明 |
---|---|---|
设置vault访问地址 | export VAULT_ADDR=’http://127.0.0.1:8200’ | vault命令作用的vault服务的地址 |
设置Vault PATH | export PATH=$PATH:< vault install path > | vault install path:vault安装路径 |
设置访问token | export VAULT_TOKEN=< token > | token:登录vault时的token,首次登录可使用root token |
设置是否跳过核查 | export VAULT_SKIP_VERIFY=false | 使用TSL访问时需要设置,未使用证书忽略此项 |
设置访问证书 | export VAULT_CAPATH=/usr/local/vault/work/ca/certs/ca.cert.pem | 使用TSL访问时需要设置,未使用证书忽略此项 |
3、解封vault
vault初始化及重新启动后处于封闭状态,需要解封才能使用;
解封需要使用初始化vault时的多组key,解封操作如下;
命令:vault unseal <key>
说明:解封vault需要多组key,具体需要几组由初始化vault时的-key-threshold参数指定,默认为3,即进行三次解封操作
4、登录vault
首次访问vault需要登录后才能对vault进行操作,vault在初始化时提供的root token用作在首次登录vault时认证使用;
命令:vault auth <root token>
5、查看vault状态
命令:
vault status
说明:sealed表示vault是否处于封闭状态,true表示封闭,false表示已解封,
6、写入与读取
命令
写入:
vault write secret/<path> <key0>=<value0> <key1>=<value1>
读取:vault read secret/<path>
vault read -format=json secret/<paht>
#格式化输出
删除:vault delete secret/<path>
eg.
vault write secret/hello value=world 写入
vault write secret/hello value=world excited=yes 写入多个
vault read secret/hello 读取
vault read -format=json secret/hello 格式化输出
vault delete secret/hello 删除
说明:secret是vault内置的Secrte backends(秘密信息后端),后面再讲。