Vault 配置文件

除非使用的是 "dev" 模式,否则 Vault 服务使用配置文件进行配置。配置文件使用 HCL 或是 JSON 格式。以下是一个配置文件的例子:

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

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

telemetry {
  statsite_address = "127.0.0.1:8125"
  disable_hostname = true
}

配置文件编写好以后,使用 vault server 命令的 -config 标志指定使用的配置文件路径。

参数

  • storage ([StorageBackend][storage-backend]: <required>) - 配置存储 Vault 数据的存储后端。在高可用模式下运行 Vault 需要后端支持协调(coordination)语义。如果存储后端支持高可用,也可以在此参数块中指定高可用后端选项。如果不支持,则应使用支持高可用的后端以及相应的高可用选项配置独立的 ha_storage 参数。
  • ha_storage ([StorageBackend][storage-backend]: nil) - 配置 Vault 高可用集群协调所使用的后端存储。这必须是一个支持高可用集群的后端。如果没有设置该标志,那么将会尝试在 storage 配置的位置上进行高可用集群协调。如果 storage 后端支持高可用集群协调,那么不需要配置该标志。
  • listener ([Listener][listener]: <required>) - 配置 Vault 如何侦听 API 请求。
  • seal ([Seal][seal]: nil) - 配置自动解封的类型。
  • cluster_name (string: <generated>) – 设置 Vault 集群的标志符。如果忽略,Vault 会生成一个值。
  • cache_size (string: "131072") – 设定物理存储子系统所使用的读缓存的大小。该值设定的是缓存的条目数,所以实际缓存的大小取决于存储的条目的大小。
  • disable_cache (bool: false) – 禁止 Vault 使用缓存,包括物理存储子系统的读缓存。这将会显著影响性能。
  • disable_mlock (bool: false) – 禁止服务调用 mlock 系统调用。mlock 防止内存数据被交换(swap)到磁盘上。不建议禁用 mlock ,除非使用集成存储。禁用 mlock 时,请遵循下面概述的其他安全预防措施。该参数也可以通过 环境变量 VAULT_DISABLE_MLOCK 来设定。

除非运行 Vault 的系统仅使用加密虚拟内存或根本不使用虚拟内存,否则不建议禁用 mlock。 Vault 只会在支持 mlock() 系统调用(Linux、FreeBSD 等)的类 UNIX 系统上支持内存锁定。非类 UNIX 系统(例如 Windows、NaCL、Android)缺乏防止进程的整个内存地址空间被交换到磁盘的原语(primitive),因此在不受支持的平台上会自动禁用。

如果使用集成存储,强烈建议禁用 mlock,因为 mlock 无法与内存映射文件(例如由BoltDB 创建的用于跟踪 Raft 集群状态的文件)配合好。使用 mlock 时,内存映射文件会加载到常驻内存中,这会导致 Vault 的整个数据集加载到内存中,如果 Vault 的数据变得超出可用内存范围,则会引发内存不足问题。在这种情况下,即使 BoltDB 中的数据保持加密存储状态,也应禁用虚拟内存以防止 Vault 内存中其他的敏感数据转储到磁盘中。

在 Linux 中,要给予 Vault 可执行文件以使用 mlock 系统调用同时不给予 root 权限的话,运行以下命令:

sudo setcap cap_ipc_lock=+ep $(readlink -f $(which vault))

注意,由于 Vault 中所有的插件都是单独的进程,我们需要对插件目录中所有插件都执行该操作。

如果使用的 Linux 发行版搭配有 systemd 的现代化版本,我们可以将以下指令添加到配置文件中的 "[Service]" 部分:

LimitMEMLOCK=infinity
  • plugin_directory (string: "") – 存放有允许加载的插件的目录路径。Vault 必须拥有读取该目录的权限来成功加载插件,该路径不可以是符号链接。
  • telemetry ([Telemetry][telemetry]: <none>) – 设置遥测(telemetry)报告系统。
  • log_level (string: "") – 设定使用的日志级别,可以使用命令行参数或环境变量覆盖配置文件中的配置。收到 SIGHUP (sudo kill -s HUP pid of vault) 信号时,Vault 会将日志级别更新为此处指定的当前值(包括命令行参数或环境变量覆盖的值)。并非 Vault 日志记录的所有部分都可以通过这种方式动态更改级别;特别是,secrets/auth 插件目前不支持动态更新。支持的日志级别: Trace, Debug, Error, Warn, Info
  • log_format (string: "") – 设置使用的日志格式。可以使用命令行参数或环境变量覆盖配置文件中的配置。支持的格式有:standardjson
  • default_lease_ttl (string: "768h") – 设置令牌与机密的默认租约时长。该参数的值需要是后缀为 "30s""5m" 的字符串。该值不可以超过 max_lease_ttl
  • max_lease_ttl (string: "768h") – 设置令牌与机密租约的最大时长。该参数的值需要是后缀为 "30s""5m" 的字符串。具体挂载点可以通过调整配置 max-lease-ttl 标志覆盖此处的配置:authsecret
  • default_max_request_duration (string: "90s") – 设置 Vault 处理请求所使用的最大时长。该参数可以被侦听器配置的 max_request_duration 覆盖。
  • raw_storage_endpoint (bool: false) – 启用 sys/raw 端点,该端点允许透过加密屏障读写原始数据。这是一个需要极高特权的端点。
  • ui (bool: false) – 是否启用 Web UI 界面,启用后可以从任意侦听地址加上 /ui 后缀来访问 UI 界面。从浏览器中访问 Vault API 地址会被自动重定向到 UI 地址上。该参数也可以通过 环境变量 VAULT_UI 来设定。
  • pid_file (string: "") - Vault 服务用以保存进程 ID (PID)的文件路径
  • enable_response_header_hostname (bool: false) - 在所有 Vault 的 HTTP 响应中添加 HTTP 标头:X-Vault-Hostname,值为响应 HTTP 请求的 Vault 节点的主机名。此信息是尽力而为,不保证存在。如果启用此配置选项并且响应中不存在 X-Vault-Hostname 标头,则意味着从操作系统检索主机名时出现了错误。
  • enable_response_header_raft_node_id (bool: false) - 在所有 Vault 的 HTTP 响应中添加 HTTP 标头:X-Vault-Raft-Node-ID。如果 Vault 是 Raft 集群的组成节点(即使用集成存储),则此标头将包含响应 HTTP 请求的 Vault 节点的 Raft 节点 ID。如果 Vault 不参与 Raft 集群,则无论是否启用此配置选项,此标头都将被省略。

高可用参数

后端存储支持高可用时可以使用以下参数:

  • api_addr (string: "") - 设定要向集群中的其他 Vault 服务器通告以进行客户端重定向的地址(完整 URL)。该值也用于插件后端。也可以通过设置环境变量 VAULT_API_ADDR 设置该参数。通常该参数要设置为指向侦听器地址值的完整 URL。
  • cluster_addr (string: "") - 设定要向集群中的其他 Vault 服务器通告以进行请求转发的地址。也可以通过设置环境变量 VAULT_CLUSTER_ADDR 设置该参数。这是一个像 api_addr 那样完整的 URL,但 Vault 将忽略协议(所有集群成员始终使用带有私钥/证书的 TLS)。
  • disable_clustering (bool: false) – 设定是否启用请求转发等集群功能。如果在一个 Vault 节点上将此设置为 true ,那么只会在该节点是主节点时禁用这些功能。如果存储类型是 raft 则不能将该参数设置为 true

results matching ""

    No results matching ""