简介:

HashiCorp Vault是一个私密信息管理工具(A tool for managing secrets),提供键值的方式保存私密信息。

特性:

1、安全的私密信息存储 
2、动态的私密信息支持
3、提供对于私密信息的更新,延长有效时间的功能
4、灵活的权限控制
5、多种客户端登录验证方式

安装使用:

1、安装

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:指定需要几股可解锁
    以上参数为默认,可不设置。
    ee71b1e011d54af39751ee0bc3414b95.png
    初始化后会得到多个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(秘密信息后端),后面再讲。