vault是一个服务器密码及证书管理工具linux
vault的使用场景
(1) 做为集中存储各个服务器帐号密码的服务器。目前咱们有服务器须要访问到有密码的后端的时候,有几种方案:git
- export到环境变量
- 写死到代码里面
- 上线的时候使用自动化工具对变量进行替换
第一种方案带来的问题是使用麻烦,后两种方案带来的问题是维护和变动麻烦。好比DB密码泄露,须要修改密码,首先DBA修改密码,而后通知到应用,应用再作代码上的变动。若是使用vault的话,DBA只要在vault上面修改好密码以后通知应用从新从vault拉取最新密码就好了。github
(2)为每个操做单位动态分配帐号后端
好比过去咱们想要对某些敏感操做进行审计,可是因为生成帐号比较麻烦,因此存在公用帐号的状况。vault支持为某些后端动态生成帐号的功能,好比SQL,当某个应用向vault请求帐号密码的时候,vault可以为每次请求生成一个独一无二的SQL帐号密码。bash
(3) 做为证书服务器服务器
vault可以做为CA服务器,根据请求信息自动颁发证书。而且提供在线CA和CRL的功能。不过目前只能在vault里面新生成ROOT-CA,不能导入原有的ROOT-CA。tcp
(4)做为OAUTH服务器工具
vault支持多种认证后端,好比github、kubernetes、帐号密码等等。vault可以将这些帐号关联成一个用户,在用户认证以后返回一个token供用户使用。spa
# 下载 vault wget https://releases.hashicorp.com/vault/0.9.1/vault_0.9.1_linux_amd64.zip
code
unzip vault_0.9.1_linux_amd64.zip
# 安装vault
cat >/vault/vault.conf <<EOF
backend "file" {
path = "/home/finance/App/vault/data"
}
listener "tcp" {
address = "0.0.0.0:8200"
tls_disable = 1
}
disable_mlock = true
EOF
# 将vault地址写入环境变量
echo "export VAULT_ADDR=http://127.0.0.1:8200" >> /etc/profile
source /etc/profile
# 启动vault
nohub ./vault server -config ./vault.conf &
# 咱们能看到vault自动监听在了127.0.0.1:8200,并自动为咱们生成了unseal-key以及root-token # 启封 vault,在使用vault以前首先要对vault进行启封,才能对vault进行后续操做。使用上面生成的uneal-key, vault unseal 0Gg1yc/qY2W3f82DnxcZTEjdvMuxpjOV5nzNnVrMy4U= # 认证,使用上面的Root Token vault auth eb45cfe5-9cca-3b23-5416-49f2febeb59c