operator init
operator init 命令对一个 Vault 服务节点执行初始化操作。初始化是 Vault 的存储后端做好接收数据的准备的过程。由于 Vault 服务在高可用模式下共享同一存储后端,因此这时只需初始化一个 Vault 节点即可初始化存储后端。
在初始化期间,Vault 生成内存中的主密钥并应用 Shamir 的机密共享算法将该主密钥分解为执行数量个密钥分片,以便这些密钥分片的一定数量的子集聚集在一起时可以重新生成主密钥。这些密钥在 Vault 的文档中通常称为“解封密钥”。
无法针对已经初始化的 Vault 集群运行此命令。
例子
使用默认设置开始初始化流程:
$ vault operator init
使用 pgp 密钥加密解封密钥来初始化:
$ vault operator init \
-key-shares=3 \
-key-threshold=2 \
-pgp-keys="keybase:hashicorp,keybase:jefferai,keybase:sethvargo"
使用非默认阈值和恢复密钥数量初始化自动解封,并使用 pgp 密钥加密恢复密钥:
$ vault operator init \
-recovery-shares=7 \
-recovery-threshold=4 \
-recovery-pgp-keys="keybase:jeff,keybase:chris,keybase:brian,keybase:calvin,keybase:matthew,keybase:vishal,keybase:nick"
使用 pgp 密钥加密初始的根令牌:
vault operator init -root-token-pgp-key="keybase:hashicorp"
可用标志
除了全局可用的标准标志以外,也可以配置下列标志:
输出选项
-format(string: "table")- 按照指定格式打印输出。合法的格式有table、json或yaml。也可以通过环境变量VAULT_FORMAT设定该值。
命令选项
-key-shares(int: 5)- 将生成的 Master Key 拆分成多少份分片。该值即生成的解封密钥的个数。该标志的别名为-n。-key-threshold(int: 3)- 重建 Master Key 所需要的解封密钥个数。该值必须小于等于-key-shares。该标志的别名为-t。-pgp-keys(string: "...")- 包含 PGP 公钥的磁盘文件路径的列表,或是 Keybase 用户名的列表(使用格式keybase:<username>),均由逗号分隔。如果指定该参数,生成的解封密钥将按照此列表中指定的顺序进行加密和 base64 编码。条目数必须与-key-shares匹配,除非使用-stored-shares。-root-token-pgp-key(string: "")- 包含PGP 公钥的磁盘文件路径,或是 Keybase 用户名(使用格式keybase:<username>)。如果指定该参数,生成的根令牌将使用指定的公钥进行加密和 base64 编码。-status(bool: false)- 打印当前初始化的状态。返回码 0 代表 Vault 已经初始化。返回码 1 代表发生了错误。返回码 2 代表 Vault 尚未初始化完成。
Consul 选项
-consul-auto(bool: false)- 在高可用模式下使用 Consul 进行自动的服务发现。当 Vault 高可用集群中的所有节点都向 Consul 注册时,启用此选项将根据提供的-consul-service值触发自动服务发现。当 Consul 是 Vault 的高可用后端存储时,此功能会自动启用。使用前请先确保设置了正确的 Consul 环境变量(CONSUL_HTTP_ADDR等)。当仅发现一台 Vault 服务器时,它将自动初始化。当发现多个 Vault 服务器时,它们将分别输出以供选择。默认值为fasle。-consul-service(string: "vault")- Vault 服务在 Consul 中注册的服务名称。
HSM(硬件加密模块)和 KMS(Key Management System)选项
-recovery-pgp-key(string: "...")- 行为类似-pgp-keys,但针对的是恢复密钥分片。该参数仅用于自动解封封印(HSM、KMS、Transit)。-recovery-shares(int: 5)- 将恢复密钥拆分成的分片数。该参数仅用与自动解封封印(HSM、KMS、Transit)。-recovery-threshold(int: 3)- 将恢复密钥拆分成的分片数。该参数仅用与自动解封封印(HSM、KMS、Transit)。-stored-shares(int: 0)- 存储在 HSM 上的解封密钥分片数。必须与-key-shares一致。