TDE 対応クラスタを作成する

ドキュメントのバージョンを選択してください。

AlloyDB Omni で透過的データ暗号化(TDE)を有効にすると、保存データを保護し、機密情報を保護できます。このドキュメントでは、データベースの初期化中に、必要な Key Management Service(KMS)環境変数(HashiCorp Vault または Thales CipherTrust Manager 用)と POSTGRES_INITDB_ARGS 環境変数の --tde-kek-url フラグを指定して、TDE 対応クラスタを作成する方法について説明します。

始める前に

HashiCorp Vault KMS

Thales CipherTrust KMS

  • Thales CipherTrust Manager を構成して、秘密の鍵暗号鍵(KEK)が作成され、エクスポート可能であることを確認します。
  • KEK シークレットの認証とエクスポートの権限を持つ CipherTrust Manager ユーザー アカウント(username と password)があることを確認します。

クラスタを作成する

TDE 対応クラスタを作成するには、データベースの初期化時に必要な Key Management Service(KMS)構成と認証情報を渡す必要があります。HashiCorp Vault KMS セクション(jwt 認証を使用)または Thales CipherTrust KMS セクション(ユーザー名とパスワード認証を使用)の手順に沿って操作します。

HashiCorp Vault KMS

コンテナ ランタイムのタブを選択して、HashiCorp Vault で AlloyDB Omni を初期化します。

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
  • JWT_AUTH_ENGINE_MOUNT: HashiCorp Vault 認証エンジンがマウントされているパス。例: /auth/jwt
  • JWT_FILE_PATH: Vault JWT がノードに保存されているパス。例: /tde-tls/jwt-token
  • 省略可: VAULT_ROLE: HashiCorp Vault が JWT トークンの信頼性を検証できるようにする、Vault の設定で定義されたクライアント ロール。
  • VAULT_CERT_PATH_ON_DISK: ホストマシン上の Vault 証明書のパス。例: /local/vault/config
  • VAULT_CERT_PATH: Vault 接続の証明書がコンテナに配置されているパス。例: /tde-tls設定されていない場合は、デフォルトのトラストストアの証明書が使用されます。
  • KEK_URL: HashiCorp Vault の KEK の完全修飾 URL。vault をプロトコルとして使用して、HashiCorp Vault を KMS プロバイダとして指定します(例: vault://127.0.0.1:8200/v1/secret/data/alloydb_kek)。
  • IMAGE_TAG: 最新の Debian イメージには 18.4.0 を使用し、最新の UBI イメージには 18.4.0-ubi を使用します。

Thales CipherTrust KMS

コンテナ ランタイムのタブを選択して、Thales CipherTrust Manager で AlloyDB Omni を初期化します。

Docker

docker run -d --name CONTAINER_NAME \
--network host \
-v DATA_DIR:/var/lib/postgresql/data \
-v CIPHERTRUST_CERT_PATH_ON_DISK:CIPHERTRUST_CERT_PATH \
-e CIPHERTRUST_USER=CIPHERTRUST_USERNAME \
-e CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \
-e CIPHERTRUST_CERT_PATH=CIPHERTRUST_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 CIPHERTRUST_CERT_PATH_ON_DISK:CIPHERTRUST_CERT_PATH \
-e CIPHERTRUST_USER=CIPHERTRUST_USERNAME \
-e CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \
-e CIPHERTRUST_CERT_PATH=CIPHERTRUST_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 CIPHERTRUST_CERT_PATH_ON_DISK:CIPHERTRUST_CERT_PATH \
-e CIPHERTRUST_USER=CIPHERTRUST_USERNAME \
-e CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \
-e CIPHERTRUST_CERT_PATH=CIPHERTRUST_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 CIPHERTRUST_CERT_PATH_ON_DISK:CIPHERTRUST_CERT_PATH \
-e CIPHERTRUST_USER=CIPHERTRUST_USERNAME \
-e CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \
-e CIPHERTRUST_CERT_PATH=CIPHERTRUST_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
  • CIPHERTRUST_USERNAME: Thales CipherTrust Manager での認証に使用されるユーザー名。
  • CIPHERTRUST_PASSWORD: Thales CipherTrust Manager ユーザーのパスワード。
  • CIPHERTRUST_CERT_PATH_ON_DISK: ホストマシン上の CipherTrust Manager TLS 証明書のパス。例: /local/ciphertrust/certs
  • CIPHERTRUST_CERT_PATH: CipherTrust Manager 接続の証明書(ca.crt、tls.crt、tls.key)がコンテナに配置されているパス。たとえば、/tde-tls のようにします。設定されていない場合は、デフォルトのトラストストアの証明書が使用されます。
  • KEK_URL: Thales CipherTrust Manager の KEK の完全修飾 URL。ciphertrust をプロトコルとして使用して、Thales CipherTrust Manager を KMS プロバイダとして指定します(例: ciphertrust://10.0.0.1:443/api/v1/vault/secrets/alloydb_kek)。
  • IMAGE_TAG: 最新の Debian イメージには 18.4.0 を使用し、最新の UBI イメージには 18.4.0-ubi を使用します。

SSD ストレージにスピルされたカラム型エンジン キャッシュデータの TDE を有効にするには、データベース インスタンスに接続して次のクエリを実行します。

ALTER SYSTEM SET google_columnar_engine.enable_tde_for_storage_cache = 'on';

変更を反映させるためにデータベース サーバーを再起動します。

TDE 指標のリファレンス

すべての TDE 指標は、AlloyDB Omni のモニタリング エージェントで確認できます。次の表に、各指標の説明を示します。

名前 説明 ラベル 単位 種類
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 ストレージにスピルされたカラム型キャッシュ ブロックの復号に費やされた合計時間。 該当なし マイクロ秒 カウンタ