AlloyDB Omni で透過的データ暗号化(TDE)を有効にすると、保存データを保護し、機密情報を保護できます。このドキュメントでは、データベースの初期化中に、必要な Key Management Service(KMS)環境変数(HashiCorp Vault または Thales CipherTrust Manager 用)と POSTGRES_INITDB_ARGS 環境変数の --tde-kek-url フラグを指定して、TDE 対応クラスタを作成する方法について説明します。
始める前に
HashiCorp Vault KMS
- HashiCorp Vault の KV-V2 シークレット エンジンを構成して、鍵暗号鍵(KEK)パスと JSON Web Token(JWT)が使用可能であることを確認します。
- AlloyDB Omni に、認証トークンである JSON ウェブトークン(JWT)ファイルの読み取り権限があることを確認します。
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-tdeDATA_DIR: AlloyDB Omni のデータ ボリュームとしてマウントするローカル ディレクトリ。例:/local/dataJWT_AUTH_ENGINE_MOUNT: HashiCorp Vault 認証エンジンがマウントされているパス。例:/auth/jwtJWT_FILE_PATH: Vault JWT がノードに保存されているパス。例:/tde-tls/jwt-token- 省略可:
VAULT_ROLE: HashiCorp Vault が JWT トークンの信頼性を検証できるようにする、Vault の設定で定義されたクライアント ロール。 VAULT_CERT_PATH_ON_DISK: ホストマシン上の Vault 証明書のパス。例:/local/vault/configVAULT_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-tdeDATA_DIR: AlloyDB Omni のデータ ボリュームとしてマウントするローカル ディレクトリ。例:/local/dataCIPHERTRUST_USERNAME: Thales CipherTrust Manager での認証に使用されるユーザー名。CIPHERTRUST_PASSWORD: Thales CipherTrust Manager ユーザーのパスワード。CIPHERTRUST_CERT_PATH_ON_DISK: ホストマシン上の CipherTrust Manager TLS 証明書のパス。例:/local/ciphertrust/certsCIPHERTRUST_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 の情報。 |
|
ゲージ | |
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 ストレージにスピルされたカラム型キャッシュ ブロックの復号に費やされた合計時間。 | 該当なし | マイクロ秒 | カウンタ |