AlloyDB Omni で透過的なデータ暗号化(TDE)を有効にすると、保存データを保護し、機密情報を保護できます。このドキュメントでは、データベースの初期化時に POSTGRES_INITDB_ARGS 環境変数に必要な Vault 環境変数と --tde-kek-url フラグを指定して、TDE 対応クラスタを作成する方法について説明します。
始める前に
- AlloyDB Omni のインストールを計画するを読みます。
- TDE を有効にして AlloyDB Omni デプロイを計画する場合は、想定されるワークロードとデータ量に基づいて、追加の CPU 使用量を考慮してください。暗号化と復号化は、コンピューティング負荷の高いオペレーションです。
- HashiCorp Vault の KV-V2 Secret エンジンを構成して 、鍵暗号鍵(KEK)パスと JSON ウェブトークン(JWT) が使用可能であることを確認します。
- AlloyDB Omni に、認証トークンである JSON ウェブトークン(JWT)ファイルを読み取る権限があることを確認します。
クラスタを作成する
TDE 対応クラスタを作成するには、データベースの初期化時に必要な Key Management Service(KMS)構成と認証情報を渡す必要があります。サポートされている認証タイプは jwt のみです。
RPM を使用して AlloyDB Omni をインストール し、環境を準備して AlloyDB Omni RPM パッケージをインストールします。
データベースを初期化します。
HashiCorp Vault KMS
この方法は、本番環境ワークロードに使用します。
次のコマンドを実行して、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/alloydbomniproduct_major_version_numeric-setup initdb
次のように置き換えます。
POSTGRES_PASSWORD: データベース ユーザーのパスワード。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: Vault の設定で定義されたクライアント ロール。HashiCorp Vault はこのロールを使用して JWT トークンの信頼性を検証します。 VAULT_CERT_PATH: Vault 接続の証明書がノードに配置されているパス(例:/tde-tls)。設定されていない場合は、デフォルトのトラストストアの証明書が使用されます。KEK_URL: HashiCorp Vault の KEK の完全修飾 URL。KMS プロバイダとして HashiCorp Vault を指定するには、プロトコルとしてvaultを使用します(例:vault://127.0.0.1:8200/v1/secrets/data/alloydb_kek)。
/etc/systemd/system/alloydbomni18.service.d/override.confにalloydbomni18.serviceのオーバーライド ファイルを作成するには、次のコードをoverride.confファイルに追加します。[Service] Environment="VAULT_AUTH_TYPE=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"
次のように置き換えます。
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)。設定されていない場合は、デフォルトのトラストストアの証明書が使用されます。
変更を適用するには、systemd デーモンを再読み込みします。
sudo systemctl daemon-reload
ファイルベースの KMS
この方法はテスト目的でのみ使用してください。
ファイルベースの鍵を使用して TDE をローカルでテストするには、まずマシンで 32 バイトの KEK を生成する必要があります。
ディレクトリを作成し、鍵を生成して、適切な権限を設定します。
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
ローカル ファイル URI を KEK URL として渡して、データベースを初期化します。
sudo PGPASSWORD=POSTGRES_PASSWORD \ PGDATA=DATA_DIR \ POSTGRES_INITDB_ARGS="--tde-kek-url=file:///$KEK_DIR/key" \ /usr/lib/postgresql/18/bin/alloydbomniproduct_major_version_numeric-setup initdb
次のように置き換えます。
POSTGRES_PASSWORD: データベース ユーザーのパスワード。DATA_DIR: AlloyDB Omni のデータボリュームとしてマウントするローカル ディレクトリ(例:/local/data)。KEK_DIR: ローカル ファイルベースの KEK が保存されているディレクトリ(例:/tmp/alloydb/kms)。
データベースが初期化されたら、RPM を使用して AlloyDB Omni をインストールするの手順に沿って、データベースを準備し、ホストを設定して、
systemdサービスを開始します。カラム型エンジン キャッシュデータが 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 情報。 |
|
ゲージ | |
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 ストレージにスピルされたカラム型キャッシュ ブロックの復号化に費やした合計時間。 | 該当なし | マイクロ秒 | カウンタ |