kv patch
注意,该命令仅适用于 K/V Version 2 机密引擎,无法使用于 Versoin 1。
kv patch
命令将数据写入 K/V v2 机密引擎中的指定路径,可以是任何类型的数据。与 kv put
命令不同,patch 命令结合现有数据进行部分更新,而不是整体替换。
例子
如果想要对键 "creds" 上已有的数据添加一个额外的键值对(ttl=48h
):
$ vault kv patch secret/creds ttl=48h
Key Value
--- -----
created_time 2019-06-06T16:46:22.090654Z
deletion_time n/a
destroyed false
version 6
请注意:如果使用的是 kv put
命令,需要同时指定现有数据以及想要额外添加的新数据才能达到于上述 patch
命令等价的效果:
$ vault kv put secret/creds ttl=48h passcode=my-long-passcode
要写入的数据也可以从一个磁盘上的文件读取,文件名前加一个 "@" 前缀,例如:
$ vault kv patch secret/creds @data.json
或者也可以通过 "-" 符号从 stdin 读取:
$ echo "abcd1234" | vault kv patch secret/foo bar=-
可用标志
输出选项
-field
(string: "")
只返回指定字段的数据。此选项优先级高于其他格式指令。结果的尾部没有换行符,使其适合通过管道与其他进程集成使用。-format
(string: "table")
- 按照指定格式打印输出。合法的格式有table
、json
或yaml
。也可以通过环境变量VAULT_FORMAT
设定该值。
命令选项
-method
(string: "patch")
- 设置使用的更新方法。可用的选项有patch
和rw
。patch
方法使用 HTTPPATCH
请求执行部分更新。rw
方法会首先读取机密数据,在内存中进行更新后再写回新版本数据。-cas
(int: 0)
- 配置是否要求使用 Check-And-Set 操作。该标志仅在使用patch
方法时有效。如果机密或是机密引擎上设置了cas_required
为true
那么该标志必须使用。为使patch
操作成功执行,-cas
必须设定成机密当前的版本号。如果使用rw
方法那么该标志设定的值将被忽略,取而代之的是使用读取机密时得到的机密版本号。