S3 存储后端

S3 存储后端可以用来将 Vault 的数据保存到 Amazon S3 存储桶中。

  • 无高可用集群支持 —— S3 存储后端不支持高可用集群。
  • 仅有社区支持 —— S3 存储后端由社区支持。虽然它已经过 HashiCorp 员工的审查,但他们可能对该技术并不了解。如果遇到问题,该问题可能会被转交给原作者。
storage "s3" {
  access_key = "abcd1234"
  secret_key = "defg5678"
  bucket     = "my-bucket"
}

s3 参数

  • bucket (string: <required>) – 设置使用的 S3 存储桶名称。该参数也可以通过设置环境变量 AWS_S3_BUCKET 来设置。
  • endpoint (string: "") – 指定一个非默认的,兼容 AWS 规范的 S3 端点。该参数也可以通过设置环境变量 AWS_S3_ENDPOINT 来设置。(可用来配置使用兼容 S3 协议的其他存储服务)
  • region (string "us-east-1") – 指定使用的 AWS region。该参数也可以通过设置环境变量 AWS_REGIONAWS_DEFAULT_REGION 来设置,前者的优先级高于后者。

下列参数用于向 AWS 进行身份验证。如果您在 EC2 实例上运行 Vault 服务器,您还可以使用 EC2 实例配置文件服务来提供 Vault 用于调用 S3 API 的凭据。将 access_keysecret_key 字段留空将导致 Vault 尝试从 AWS 元数据服务检索凭证。

  • access_key (string: <required>) – 设置 AWS access key。该参数也可以通过设置环境变量 AWS_ACCESS_KEY_ID 来设置,或者使用 AWS 凭据文件,又或者是 IAM 角色。
  • secret_key (string: <required>) – 设置 AWS secret key。该参数也可以通过设置环境变量 AWS_SECRET_ACCESS_KEY 来设置,或者使用 AWS 凭据文件,又或者是 IAM 角色。
  • session_token (string: "") – 设置 AWS session token。该参数也可以通过设置环境变量 AWS_SESSION_TOKEN 来设置。
  • max_parallel (string: "128") – 设置与 S3 通信的最大并行请求数。
  • s3_force_path_style (string: "false") - 设置是否使用虚拟托管风格域名访问配置的端点。
  • disable_ssl (string: "false") - 设置是否为到端点的连接启用 SSL (强烈不推荐在生产环境关闭 SSL)。
  • kms_key_id (string: "") - 设置用以加密 S3 后端中数据所使用的 KMS 密钥的 ID 或别名。Vault 必须对此密钥拥有 kms:Encrypt 以及 kms:Decrypt 权限。我们可以设置该参数为 alias/aws/s3 来使用账号的默认密钥。
  • path (string: "") - 设置 Vault 数据在 S3 存储桶中的存储路径。

s3 例子

默认例子

该例子演示使用 S3 作为存储后端:

storage "s3" {
  access_key = "abcd1234"
  secret_key = "defg5678"
  bucket     = "my-bucket"
}

使用 S3 KMS 默认密钥加密

该例子演示了使用 Amazon S3 作为存储后端,搭配账号默认的 S3 KMS 密钥加密:

storage "s3" {
  access_key = "abcd1234"
  secret_key = "defg5678"
  bucket     = "my-bucket"
  kms_key_id = "alias/aws/s3"
}

使用自定义的 S3 KMS 密钥加密

该例子演示了使用 Amazon S3 作为存储后端,搭配用户管理的 KMS 密钥加密:

This example shows using Amazon S3 as a storage backend using KMS encryption with a customer managed KMS key.

storage "s3" {
  access_key = "abcd1234"
  secret_key = "defg5678"
  bucket     = "my-bucket"
  kms_key_id = "001234ac-72d3-9902-a3fc-0123456789ab"
}

AWS 读取实例元数据超时

影响 Vault 1.4 及以后的版本

Vault 在 EC2 实例上使用实例元数据服务的时候,例如从实例配置文件中获取凭据,使用到实例元数据服务 (IMDSv2) 的 v2 版本时可能会出现延迟。 Vault 使用的 AWS SDK 首先尝试连接到 IMDSv2,如果超时,则回退到 v1。在 Vault 1.4 中,此超时最多可能需要 2 分钟。在 Vault 1.5.5 及更高版本中最多可能需要 2 秒钟。

超时会发生在 Vault 和 IMDSv2 之间存在代理,并且实例 hop 限制设置为小于 Vault 和 IMDSv2 之间的“hop”数的时候。例如,如果 Vault 在 EC2 实例上的 docker 中运行,并且实例 hop 限制设置为 1,AWS SDK 客户端将尝试连接到 IMDSv2,超时并回退到 IMDSv1,因为 docker 和 IMDS 之间存在额外的网络 hop.

为避免超时行为,可以在底层 EC2 实例上调整 hop 限制。对于 docker 示例,将 hop 限制设置为 2 就可以让 Vault 中的 AWS SDK 无延迟地连接到 IMDSv2。

results matching ""

    No results matching ""