一、UI界面
- Vault安装完成后,登录UI界面,可以管理、查看所有引擎密钥信息;
- UI地址为:http://1922.168.***.***:8200/ui,密码为root的token;
二、主要加解密功能
2.1 kv加解密
kv存储加密数据有2种模式,模式1没有版本概念,它总是存储最新的kv数据,模式2有版本概念。模式1没有Metadata信息,占用更少的空间;没有锁,有更好的性能。以下只介绍模式1的使用,假设vault已经安装完成。
- 设置VAULT_ADDR环境变量。export VAULT_ADDR=http://127.0.0.1:8200
- 查看vault服务是否可用。vault status
- 查看secret已安装kv引擎。vault secrets list -detailed
- 如果没有安装,安装kv引擎。vault secrets enable -path=kv kv
- 设置kv值。vault kv put kv/fakebank api_key=abc1234 api_secret=1a2b3c4d
- 使用命令行查询kv值。vault kv get kv/fakebank
7. 使用API查询kv值。curl --header "X-Vault-Token: s.DT7jFCMaGVamWqorQjCv***" -X GET http://192.168.***.***:8200/v1/kv/fakebank
2.2 transit 密钥加解密
2.2.1命令行使用说明
官方说明文档地址:Transit - Secrets Engines | Vault | HashiCorp Developer 和Encryption as a service: transit secrets engine | Vault | HashiCorp Developer
,假设已经使用docker部署完成vault,使用docker exec -it containerid sh进入vault容器中。执行如下步骤:
- 设置VAULT_ADDR环境变量,例如:export VAULT_ADDR=http://127.0.0.1:8200。
- 设置VAULT_TOKEN环境变量:
例如:export VAULT_TOKEN="s.DT7jFCMaGVamWqorQjCv****"
3. 查看secret是否已安装transit引擎
vault secrets list -detailed
4. 开通transit引擎,启动密钥加解密功能。vault secrets enable transit
5. 创建名称为cmr的密钥。vault write -f transit/keys/cmr,如果vault存储为file格式,那么可以在/vault/file目录下找到密钥文件。
6. 创建密钥加解密策略。参考例子如下:
vault policy write app-cmr -<<EOF
path "transit/encrypt/cmr" {
capabilities = [ "update" ]
}
path "transit/decrypt/cmr" {
capabilities = [ "update" ]
}
EOF
7. 策略固化到文件,方便后面创建类似密钥策略。例如:
vault policy read app-cmr > /test/policy/app-cmr-policy.hcl
8. 创建密钥策略token。返回如下信息:
/vault/file # vault token create -policy=app-cmr
Key Value
--- -----
token s.qaNaUduBquSD3gF5sean3zIY
token_accessor tydBLnJXHDKmaxdIfOFOlynW
token_duration 768h
token_renewable true
token_policies ["app-cmr" "default"]
identity_policies []
policies ["app-cmr" "default"]
9. 使用策略token登录。例如:vault login s.qaNaUduBquSD3gF5sean****
10. 用base64加密字符串,然后再使用vault密钥加密。例如:
vault write transit/encrypt/cmr plaintext=$(echo -n "hi cmr" | base64) 返回如下:
注意:官方文档使用的vault write transit/encrypt/my-key plaintext=$(base64 <<< "my secret data")。<<<适用于/bin/bash命令行模式,不适应于sh命令行模式。
11.使用vault密钥解密字符串。例如:vault write transit/decrypt/cmr ciphertext="vault:v1:WqfQMViO7B08T6jRar57ZziSK6+4vGP4NANwRfhIAoRZ2A=="
12. 用base64解密上个步骤的字符串。echo -n "aGkgY21y" | base64 -d
2.2.2 API使用说明
官方地址:Transit - Secrets Engines - HTTP API | Vault | HashiCorp Developer。假设transit引擎已经开通,并且在/transit目录下。使用步骤如下:
- 设置密钥参数,保存再文件中。例如:
2. 创建密钥。例如:curl -H "X-Vault-Token: s.DT7jFCMaGVamWqorQjCv****" -X POST --data @transit-cmr-1.json http://19168.***.***:8200/v1/transit/keys/cmr-1
或者使用vault read transit/keys/cmr-1查看:
3. 创建密钥加解密策略。参考例子如下:
4. 创建密钥策略token。/vault/file # vault token create -policy=app-cmr-1
5. 使用策略token登录。例如:vault login s.1Akp4ey4VVDKEJ01YhXh9G3R
6. 创建加密内容文件。其中plaintext的值必须为base64的值,例如:cat crypt_content.json
7. 使用vault密钥加密文件中的plaintext的值。例如:
curl -H "X-Vault-Token: s.1Akp4ey4VVDKEJ01YhXh9G3R" -X POST --data @crypt_content.json http://192.168.***.***:8200/v1/transit/encrypt/cmr-1
8. 创建解密内容文件。其中ciphertext为加密内容,例如:
9. 使用vault密钥解密字符串。例如:
v curl -H "X-Vault-Token: s.1Akp4ey4VVDKEJ01YhXh9G3R" -X POST --data @decrypt_content.json http://192.168.***.***:8200/v1/transit/decrypt/cmr-1
10. 用base64解密上个步骤的字符串