Vault: 基础教程之部署

七、部署vault

配置

vault使用HCL文件配置:

storage "consul" {
  address = "127.0.0.1:8500"
  path    = "vault/"
}

listener "tcp" {
 address     = "127.0.0.1:8200"
 tls_disable = 1
}

配置文件中,有两个主要的配置项:
* storage 物理的后端,提供给vault使用,dev server模式下vault会使用内存。
* listener listener决定vault如何监听api请求。

启动

可以轻松的以配置文件启动vault,使用-config标记:

$ vault server -config=config.hcl

在linux下面可能会出现由mlock导致的错误,mlock可以防止内存被交换到磁盘。在生产中不建议禁用mlock,且mlock需要root权限。

可以使用sudo setcap cap_ipc_lock=+ep $(readlink -f $(which vault))
来使得mlock不需要root权限运行,对于不同的插件都需要分别执行一次此命令。

如果你使用了具有现代版本的systemd的Linux发行版,可以在[Service]配置项下添加如下部分:

LimitMEMLOCK=infinity

初始化vault

初始化时配置vault,仅在服务器是一个没有使用过vault的系统时启用。初始化时,加密秘钥生成,解封秘钥被创建,默认root token也被设置。使用vault operator init来初始化vault,尽管这是个未授权的请求,它仅在vault没有任何数据时使用,当在HA模式下运行时,初始化在每个集群中使用,而不是每个服务器。

初始化输出两个非常重要的信息:解封秘钥(unsead key)和默认root tokens。

密封/解封

每个初始化后的vault以密封状态启动,这意味着vault可以访问物理存储,但没办法读取其中的任何一个,因为它不知道如何对其进行解密。为了解密vault,你需要一定数量的解密秘钥(unseal key)。vault不会存储任何的解密秘钥分片,它使用一种算法(Shamir’s Secret Sharing)将主密钥拆分成分片。

开始解封vault:

$ vault operator unseal
Unseal Key (will be hidden):

vault不会知道这个秘钥是否正确,直到它得到了一定数量的秘钥。你可以在另一台电脑上使用上述命令,只要他们指向同一台vault服务器。

当你最终解析后,你会得到如下的信息:

Key             Value
---             -----
Sealed          false
Total Shares    5
Version         (version unknown)
Cluster Name    vault-cluster-8a8b2c36
Cluster ID      34e94a2e-2d8f-c7cc-271d-96fd438ccc6d
HA Enabled      true
HA Mode         standby
HA Cluster      n/a

这里面的Sealed对应的部分为false时,你的vault就能解封了。如果使用root登录,你默认就是解封的,你可以重新密封vault,通过vault operator seal,这个只需要一次操作即可,当vault再次被密封,他将清除所有的状态,安全而且锁定的。

你可能感兴趣的:(vault)