Vault私钥管理工具实践

 一、UI界面

  1. Vault安装完成后,登录UI界面,可以管理、查看所有引擎密钥信息;
  2. UI地址为:http://1922.168.***.***:8200/ui,密码为root的token;

二、主要加解密功能

2.1 kv加解密

kv存储加密数据有2种模式,模式1没有版本概念,它总是存储最新的kv数据,模式2有版本概念。模式1没有Metadata信息,占用更少的空间;没有锁,有更好的性能。以下只介绍模式1的使用,假设vault已经安装完成。

  1. 设置VAULT_ADDR环境变量。export VAULT_ADDR=http://127.0.0.1:8200
  2. 查看vault服务是否可用。vault status
  3. 查看secret已安装kv引擎。vault secrets list -detailed
  4. 如果没有安装,安装kv引擎。vault secrets enable -path=kv kv
  5. 设置kv值。vault kv put kv/fakebank api_key=abc1234 api_secret=1a2b3c4d
  6. 使用命令行查询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 DeveloperEncryption as a service: transit secrets engine | Vault | HashiCorp Developer

,假设已经使用docker部署完成vault,使用docker exec -it containerid sh进入vault容器中。执行如下步骤:

  1. 设置VAULT_ADDR环境变量,例如:export VAULT_ADDR=http://127.0.0.1:8200。
  2. 设置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目录下。使用步骤如下:

  1. 设置密钥参数,保存再文件中。例如:

    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解密上个步骤的字符串

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值