部署 Vault 到生产环境
安装 Vault
Vault 的安装参考官网文档, 用操作系统常用的软件包管理工具,比如 mac 的 brew, ubuntu/debian 的 apt-get, redhat/centos 的 yum 来安装即可. 安装完后 vault 命令可以使用.
如 mac 下面安装:
- $ brew tap hashicorp/tap
- $ brew install hashicorp/tap/vault
参考: https://learn.hashicorp.com/tutorials/vault/getting-started-install?in=vault/getting-started
开发环境下部署 Vault
开发环境使用比较简单, 直接一个命令使用开发模式启动服务即可, vault server -dev 启动的时候, 会往控制台输出一个解密用的 key, 以及一个 Root token. key 和 token 可以直接使用.
$ vault server -dev
参考: https://learn.hashicorp.com/tutorials/vault/getting-started-dev-server?in=vault/getting-started
生产环境下部署 Vault
开发环境部署的安全级别不适合用在生产环境, 开发模式部署 key 和 root token 直接输出到控制台,存储使用的内存存储.
那么生产环境下如何部署呢? 参考: https://learn.hashicorp.com/tutorials/vault/getting-started-deploy?in=vault/getting-started
安装 Vault & 初始化
在控制台, 设置 VAULT_ADDR 变量:
export VAULT_ADDR='http://127.0.0.1:8200'
执行 vault operator init 命令来初始化 Vault:
vault operator init > key.txt
初始化的时候是密封的状态。 初始化默认使用5个密钥。需要使用至少3个密钥解封 vault。 初始化的配置有 -key-shares , -key-threshold 两个参数控制.
解密 vault & 设置 token
vault operator unseal \
$(grep 'Key 1:' key.txt | awk '{print $NF}')
vault operator unseal \
$(grep 'Key 2:' key.txt | awk '{print $NF}')
vault operator unseal \
$(grep 'Key 3:' key.txt | awk '{print $NF}')
使用初始的 Root Token 登陆
vault login $(grep 'Initial Root Token:' key.txt | awk '{print $NF}')
启用监听日志
vault audit enable file file_path=/var/log/vault-audit.log
生成 root token
通常不应该使用 root token。 在必要的情况下,这样生成 root token: 先生成一个一次性的密码 和 bounce:
vault operator generate-root -init > init-output.txt
使用 3 个 key, 执行3次 generate-root 来生成 root token
vault operator generate-root \
-nonce=$(grep 'Nonce' init-output.txt | awk '{print $NF}') \
$(grep 'Key 1:' key.txt | awk '{print $NF}')
vault operator generate-root \
-nonce=$(grep 'Nonce' init-output.txt | awk '{print $NF}') \
$(grep 'Key 2:' key.txt | awk '{print $NF}')
第 3 次执行 generate-root 生成 encoded token:
vault operator generate-root -format=json \
-nonce=$(grep 'Nonce' init-output.txt | awk '{print $NF}') \
$(grep 'Key 3:' key.txt | awk '{print $NF}') \
| jq -r ".encoded_root_token" > encoded_root.txt
解密 root token
vault operator generate-root -decode=$(cat encoded_root.txt) \
-otp=$(grep 'OTP' init-output.txt | awk '{print $NF}') > root_token.txt
使用 Root token 登陆:
vault login $(cat root_token.txt)
在需要的时候重新生成密钥
初始化重新生成 key 的操作:
vault operator rekey -init -key-shares=3 -key-threshold=2 \
-format=json | jq -r ".nonce" > nonce.txt
重新生成 key:
vault operator rekey -nonce=$(cat nonce.txt) \
$(grep 'Key 1:' key.txt | awk '{print $NF}')
vault operator rekey -nonce=$(cat nonce.txt) \
$(grep 'Key 2:' key.txt | awk '{print $NF}')
vault operator rekey -nonce=$(cat nonce.txt) \
$(grep 'Key 3:' key.txt | awk '{print $NF}') > new.key.txt
- 原文作者:笃观文化科技
- 原文链接:https://www.ruoguedu.com/post/deploy-vault-on-production-environment/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。