创建启用了 TDE 的集群

选择文档版本:

您可以在 AlloyDB Omni 中启用透明数据加密 (TDE),以保护静态数据并保护敏感信息。本文档介绍了如何在数据库初始化期间在 POSTGRES_INITDB_ARGS 环境变量中提供所需的 Vault 环境变量和 --tde-kek-url 标志,以创建启用 TDE 的集群。

准备工作

创建集群

如需创建启用 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.3.0 表示最新的 Debian 映像,使用 18.3.0-ubi 表示最新的 UBI 映像。

如需为溢出到 SSD 存储空间的列式引擎缓存数据启用 TDE,请连接到数据库实例并运行以下查询:

ALTER SYSTEM SET google_columnar_engine.enable_tde_for_storage_cache = 'on';

重启数据库服务器以使更改生效。

TDE 指标参考文档

您可以在 AlloyDB Omni 的监控代理中查看所有 TDE 指标。 下表介绍了每个指标。

名称 说明 标签 单位 类型
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 块所用的总时间。 不适用 微秒 计数器
tde_chill_cache_blocks_encrypted 加密的冷缓存块数。 不适用 计数器
tde_chill_cache_blocks_decrypted 解密的冷缓存块数。 不适用 计数器
tde_chill_cache_blocks_total_encryption_time_us 加密冷缓存块所用的总时间。 不适用 微秒 计数器
tde_chill_cache_blocks_total_decryption_time_us 解密冷缓存块所用的总时间。 不适用 微秒 计数器
tde_ce_cache_ssd_blocks_encrypted 溢出到 SSD 存储空间的加密列式缓存块数。 不适用 计数器
tde_ce_cache_ssd_blocks_decrypted 溢出到 SSD 存储空间的解密列式缓存块数。 不适用 计数器
tde_ce_cache_ssd_blocks_total_encryption_time_us 加密溢出到 SSD 存储空间的列式缓存块所用的总时间。 不适用 微秒 计数器
tde_ce_cache_ssd_blocks_total_decryption_time_us 解密溢出到 SSD 存储空间的列式缓存块所用的总时间。 不适用 微秒 计数器