简介:
HashiCorp Vault是一个私密信息管理工具(A tool for managing secrets),提供键值的方式保存私密信息。
特性:
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" }
需要跳过https 添加环境变量
export VAULT_ADDR='http://127.0.0.1:8200' export VAULT_SKIP_VERIFY=true export PATH=/home/dinghui/MyWork:$PATH
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 `
说明:解封vault需要多组key,具体需要几组由初始化vault时的-key-threshold参数指定,默认为3,即进行三次解封操作
4、登录vault
首次访问vault需要登录后才能对vault进行操作,vault在初始化时提供的root token用作在首次登录vault时认证使用;
命令:`vault auth `
5、查看vault状态
命令:`vault status`
说明:sealed表示vault是否处于封闭状态,true表示封闭,false表示已解封;
6、写入与读取
- 命令
写入:
vault write secret/ = =
读取:vault read secret/
vault read -format=json secret/
#格式化输出
删除:vault delete secret/
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(秘密信息后端),后面再讲。