如需启用透明数据加密 (TDE),您必须提供所需的 Vault 环境变量,并在 POSTGRES_INITDB_ARGS 中添加 --tde-kek-url 标志。
准备工作
- 配置 HashiCorp Vault 的 KV-V2 Secret 引擎,以确保密钥加密密钥 (KEK) 路径和 JSON Web 令牌 (JWT) 可用。
- 确保 AlloyDB Omni 具有读取 JWT 令牌文件的权限。
创建集群
如需创建启用 TDE 的集群,您必须在初始化数据库期间传递必要的密钥管理服务 (KMS) 配置和身份验证凭据。唯一受支持的身份验证类型是 jwt。
选择您的容器运行时对应的标签页。
Docker
docker run -d --name CONTAINER_NAME \ --network host \ -v DATA_DIR:/var/lib/postgresql/data \ -v VAULT_CERT_PATH_ON_DISK:VAULT_CERT_PATH \ -e VAULT_AUTH_TYPE=jwt \ -e VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \ -e VAULT_JWT_PATH=JWT_FILE_PATH \ -e VAULT_ROLE=VAULT_ROLE \ -e VAULT_CERT_PATH=VAULT_CERT_PATH \ -e POSTGRES_INITDB_ARGS=" \ --tde-kek-url=KEK_URL" \ google/alloydbomni:IMAGE_TAG
Docker
docker run -d --name CONTAINER_NAME \ --network host \ -v DATA_DIR:/var/lib/postgresql/data \ -v VAULT_CERT_PATH_ON_DISK:VAULT_CERT_PATH \ -e VAULT_AUTH_TYPE=jwt \ -e VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \ -e VAULT_JWT_PATH=JWT_FILE_PATH \ -e VAULT_ROLE=VAULT_ROLE \ -e VAULT_CERT_PATH=VAULT_CERT_PATH \ -e POSTGRES_INITDB_ARGS=" \ --tde-kek-url=KEK_URL" \ google/alloydbomni:IMAGE_TAG
Podman
podman run -d --name CONTAINER_NAME \ --network host \ -v DATA_DIR:/var/lib/postgresql/data \ -v VAULT_CERT_PATH_ON_DISK:VAULT_CERT_PATH \ -e VAULT_AUTH_TYPE=jwt \ -e VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \ -e VAULT_JWT_PATH=JWT_FILE_PATH \ -e VAULT_ROLE=VAULT_ROLE \ -e VAULT_CERT_PATH=VAULT_CERT_PATH \ -e POSTGRES_INITDB_ARGS=" \ --tde-kek-url=KEK_URL" \ google/alloydbomni:IMAGE_TAG
Podman
podman run -d --name CONTAINER_NAME \ --network host \ -v DATA_DIR:/var/lib/postgresql/data \ -v VAULT_CERT_PATH_ON_DISK:VAULT_CERT_PATH \ -e VAULT_AUTH_TYPE=jwt \ -e VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \ -e VAULT_JWT_PATH=JWT_FILE_PATH \ -e VAULT_ROLE=VAULT_ROLE \ -e VAULT_CERT_PATH=VAULT_CERT_PATH \ -e POSTGRES_INITDB_ARGS=" \ --tde-kek-url=KEK_URL" \ google/alloydbomni:IMAGE_TAG
替换以下内容:
CONTAINER_NAME:要创建的容器的名称。 例如,alloydb-tde。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_ON_DISK:主机上 Vault 证书的路径。例如,/local/vault/config。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。IMAGE_TAG:使用18.1.0表示最新的 Debian 映像,使用18.1.0-ubi表示最新的 UBI 映像。
查看 TDE 指标
集群初始化后,请完成以下步骤以验证 TDE 是否已启用并查看相关的 TDE 指标。
- 使用
psql或您偏好的客户端连接到数据库。如需详细了解如何连接到实例,请参阅 运行并连接到 AlloyDB Omni。 运行以下命令:
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_enabledTDE 启用状态。 不适用 读数 alloydb_omni_database_tde_kek_infoTDE 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 块所用的总时间。 不适用 微秒 计数器