资源配额(Quota)

与 Vault 的每一次交互,无论是将机密放入键/值存储中还是为 MySQL 数据库生成新的数据库用户名密码,都需要调用 Vault 的 API。

这种通过 API 驱动的模型的一个副作用是,应用程序和用户可能会发送一系列高频的 API 请求使系统资源不堪重负,从而导致某些 Vault 节点甚至整个 Vault 集群出现拒绝服务问题。当 Vault API 端点暴露于部署在全球基础设施中的数千或数百万个服务时,这种风险会显着增加,尤其是为内部开发人员的服务而部署的 Vault 服务。

Vault 提供了资源配额功能,允许 Vault 操作员指定对 Vault 中使用的资源的限制。具体来说,Vault 允许维护者创建和配置 API 速率限制。

速率限制配额(Rate Limit Quotas)

Vault 允许操作员创建速率限制配额,使用令牌桶算法强制执行 API 速率限制。创建配额时可以指定路径,可以在根级别、命名空间级别或挂载点上定义速率限制配额。速率限制器基于每个 Vault 节点应用于每个唯一的客户端 IP 地址(速率限制配额的消耗信息不会再集群内复制)。客户端可以在任意 1 秒内发起 rate 次请求,每秒都是如此。

在根级别(也就是 path 为空)定义的速率限制配额会被所有命名空间和挂载点继承。它将充当整个 Vault API 的单一速率限制器。在命名空间级别定义的限速配额优先于全局限速配额,为挂载点定义的限速配额优先于全局和命名空间级别的限速配额。换句话说,更具体的配额规则更优先。

可以使用可选的 block_interval 创建速率限制,如果设置为非零值时,任何达到速率限制阈值的客户端都将在 block_interval 秒的持续时间内被屏蔽所有后续请求。

Vault 还允许通过公开的各种指标和启用可选的审计日志来检查 Vault 节点中的速率限制状态。

豁免路径(Exempt Routes)

默认情况下,以下路径不会被速率限制策略所限制。然而,Vault 操作员可以通过修改配置文件中的rate_limit_exempt_paths来修改这组路径的内容:

  • /v1/sys/generate-recovery-token/attempt
  • /v1/sys/generate-recovery-token/update
  • /v1/sys/generate-root/attempt
  • /v1/sys/generate-root/update
  • /v1/sys/health
  • /v1/sys/seal-status
  • /v1/sys/unseal

results matching ""

    No results matching ""