Vault - KV 存储引擎
-
kv 存储引擎分为 v1 和 v2 两个版本,开发模式下默认是 v2 版本
-
kv 引擎使用版本控制机制,可以记录和跟踪历史上每个密码的变更和版本,同时还支持各种数据格式和多种访问控制策略。
v1版本
# 启用并挂载到kv1路径
vault secrets enable -version=1 -description="v1" -path="kv1" kv
# 查看
vault secrets list
# 查看详细信息
vault secrets list -format=json
# 禁用引擎(会删除这个引擎路径下的所有数据)
vault secrets disable "kv1/"
# 写入(put是覆盖)
vault kv put kv1/myapp/config username=admin password=secretpassword
# 列表
vault kv list kv1/
# 读取
vault kv get kv1/myapp/config
vault kv get -format=json kv1/myapp/config
vault kv get -format=json -feild=data kv1/myapp/config
# 删除
vault kv delete kv1/myapp/config
v2版本
相比于v1版本, 它支持多个版本的数据,允许 CAS 操作,可以设置存储限制和数据过期时间,并且支持复杂的访问策略。
v2版本还支持将数据版本存储在多个版本存储后端中,以提高数据的可用性和可靠性。
# 启用并挂载到kv2路径
vault secrets enable -version=2 -description="v2" -path="kv2" kv
# 或者
vault secrets enable -description="KV Version 2" -path="kv2" kv-v2
kv2 / 更像是由 kv 引擎实例化出来的实例,他不代表引擎本身。
# v1 升级到 v2
vault kv enable-versioning kv1
# 写入
vault kv put -mount=kv2 myapp/config username=admin pasword=secretpassword
# 或
vault kv put kv2/myapp/config username=admin password=secretpassword
# cas操作
vault kv put -cas=1 kv2/myapp/config key1=value1 key2=value2
# -cas=1 期望写入版本为1的secret,如果最新版本不是1, 那么就不会修改成功
# -cas=0 只有secret不存在时才会写入,可以防止覆盖已存在的secret
vault kv list kv2/
vault kv get kv2/myapp/config
vault kv get -format=json kv2/myapp/config
vault kv get -format=json -field=data kv2/myapp/config
vault kv get -field=key1 kv2/myapp/config
vault kv get -version=1 kv2/myapp/config
vault kv patch -cas=2 kv2/myapp/config key1=value1
vault kv patch -method=rw kv2/myapp/config key2=value2
Vault 下载:developer.hashicorp.com/vault/install