创建启用了 TDE 的集群

Select a documentation version:

准备工作

创建集群

如需创建启用 TDE 的集群,您必须在初始化数据库期间传递必要的密钥管理服务 (KMS) 配置和身份验证凭据。唯一支持的身份验证类型是 jwt

  1. 使用 RPM 安装 AlloyDB Omni 以准备环境并安装 AlloyDB Omni RPM 软件包。

  2. 初始化数据库。

    HashiCorp Vault KMS

    此方法适用于生产工作负载。

    1. 运行以下命令以初始化启用 TDE 的数据库:

      sudo PGPASSWORD=POSTGRES_PASSWORD \
      PGDATA=DATA_DIR \
      VAULT_AUTH_TYPE=jwt \
      VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \
      VAULT_JWT_PATH=JWT_FILE_PATH \
      VAULT_ROLE=VAULT_ROLE \
      VAULT_CERT_PATH=VAULT_CERT_PATH \
      POSTGRES_INITDB_ARGS="--tde-kek-url=KEK_URL" \
      /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb

      替换以下内容:

      • POSTGRES_PASSWORD:数据库用户的密码。
      • DATA_DIR:要装载为 AlloyDB Omni 数据卷的本地目录,例如 /local/data
      • VAULT_AUTH_TYPE:用于 Vault 连接的身份验证类型。仅支持 jwt
      • JWT_AUTH_ENGINE_MOUNT:HashiCorp Vault 身份验证引擎的装载路径,例如 /auth/jwt
      • JWT_FILE_PATH:Vault JWT 在节点上的存储路径,例如 tde-tls/jwt-token
      • (可选)VAULT_ROLE:在 Vault 设置中定义的客户端角色,用于让 HashiCorp Vault 验证 JWT 令牌的真实性。
      • VAULT_CERT_PATH:Vault 连接的证书在容器中的路径,例如 /tde-tls。如果未设置,则使用默认受信任证书存储区中的证书。
      • KEK_URL:HashiCorp Vault 中 KEK 的完全限定网址。使用 vault 作为协议,将 HashiCorp Vault 指定为 KMS 提供方,例如 vault://127.0.0.1:8200/v1/secrets/data/alloydb_kek
    2. 如需为 alloydbomni.service in /etc/systemd/system/alloydbomni18.service.d/override.conf 创建替换文件,请将以下内容添加到 override.conf 文件:

      [Service]
      Environment="VAULT_AUTH_TYPE"
      Environment="VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT"
      Environment="VAULT_JWT_PATH=JWT_FILE_PATH"
      Environment="VAULT_ROLE=VAULT_ROLE"
      Environment="VAULT_CERT_PATH=VAULT_CERT_PATH"
    3. 如需应用更改,请重新加载 systemd 守护进程。

      sudo systemctl daemon-reload

    基于文件的 KMS

    此方法仅用于测试目的。

    如需使用基于文件的密钥在本地测试 TDE,您必须先在机器上生成 32 字节的 KEK。

    1. 创建目录,生成密钥,并设置适当的权限。

      KEK_DIR=KEK_DIR
      mkdir -p $KEK_DIR
      sudo chown 999:999 $KEK_DIR
      openssl rand -base64 32 | sudo tee $KEK_DIR/key
      sudo chmod 0755 $KEK_DIR/key
    2. 通过将本地文件 URI 作为 KEK 网址传递来初始化数据库。

      sudo PGPASSWORD=POSTGRES_PASSWORD \
      PGDATA=DATA_DIR \
      POSTGRES_INITDB_ARGS="--tde-kek-url=file:///$KEK_DIR/key" \
      /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb

      替换以下内容:

      • POSTGRES_PASSWORD:数据库用户的密码。
      • DATA_DIR:要装载为 AlloyDB Omni 数据卷的本地目录,例如 /local/data
      • KEK_DIR:本地基于文件的 KEK 的存储目录,例如 /tmp/alloydb/kms
  3. 数据库初始化后,请按照使用 RPM 安装 AlloyDB Omni中的说明准备数据库、设置主机并启动systemd服务。

查看 TDE 指标

集群初始化后,请完成以下步骤以验证 TDE 是否已启用并查看相关的 TDE 指标。

  1. 使用 psql 或您偏好的客户端连接到数据库。如需详细了解如何连接到实例,请参阅 运行并连接到 AlloyDB Omni
  2. 运行以下命令:

    select * FROM pgsnap.g$tde_stats;
    

    如果 TDE 成功启用,输出会显示 TDE 指标,例如 TDE 是否已启用、KEK 网址、KEK 版本和 KEK 创建时间戳。

    下表介绍了各项指标的含义。

    名称 说明 标签 单位 类型
    alloydb_omni_database_tde_data_blocks_decrypted_count_total 解密的数据块数。 不适用 计数器
    alloydb_omni_database_tde_data_blocks_encrypted_count_total 加密的数据块数。 不适用 计数器
    alloydb_omni_database_tde_data_decryption_time_us_total 数据块解密所用的总时间。 不适用 微秒 计数器
    alloydb_omni_database_tde_data_encryption_time_us_total 数据块加密所用的总时间。 不适用 微秒 计数器
    alloydb_omni_database_tde_enabled TDE 启用状态。 不适用 读数
    alloydb_omni_database_tde_kek_info TDE KEK 信息。
    • kek_version:用于密钥封装的 KEK 版本
    • kek_url:KMS 中 KEK 的完全限定路径
    • kek_creation_timestamp
      所用 KEK 版本的创建时间。
    读数
    alloydb_omni_database_tde_temp_blocks_decrypted_count_total 解密的临时块数。 不适用 计数器
    alloydb_omni_database_tde_temp_blocks_encrypted_count_total 加密的临时块数。 不适用 计数器
    alloydb_omni_database_tde_temp_decryption_time_us_total 临时块解密所用的总时间。 不适用 微秒 计数器
    alloydb_omni_database_tde_temp_encryption_time_us_total 临时块加密所用的总时间。 不适用 微秒 计数器
    alloydb_omni_database_tde_wal_blocks_decrypted_count_total 解密的 WAL 块数。 不适用 计数器
    alloydb_omni_database_tde_wal_blocks_encrypted_count_total 加密的 WAL 块数。 不适用 计数器
    alloydb_omni_database_tde_wal_decryption_time_us_total WAL 块解密所用的总时间。 不适用 微秒 计数器
    alloydb_omni_database_tde_wal_encryption_time_us_total WAL 块加密所用的总时间。 不适用 微秒 计数器