始める前に
Key Encryption Key(KEK)パスと JSON Web Token(JWT) が使用可能になるように、HashiCorp Vault の KV-V2 シークレット エンジンを構成します。
AlloyDB Omni に 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/alloydbomni18-setup initdb
次のように置き換えます。
POSTGRES_PASSWORD: データベース ユーザーのパスワード。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: Vault 接続の証明書がコンテナに配置されているパス(例:/tde-tls)。設定されていない場合は、デフォルトのトラストストアの証明書が使用されます。KEK_URL: HashiCorp Vault の KEK の完全修飾 URL。KMS プロバイダとして HashiCorp Vault を指定するには、プロトコルとしてvaultを使用します(例:vault://127.0.0.1:8200/v1/secrets/data/alloydb_kek)。
alloydbomni.service in /etc/systemd/system/alloydbomni18.service.d/override.confのオーバーライド ファイルを作成するには、override.confファイルに次のように追加します。[Service] Environment="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"
変更を適用するには、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/alloydbomni18-setup initdb
次のように置き換えます。
POSTGRES_PASSWORD: データベース ユーザーのパスワード。DATA_DIR: AlloyDB Omni のデータボリュームとしてマウントするローカル ディレクトリ(例:/local/data)。KEK_DIR: ローカル ファイルベースの KEK が保存されているディレクトリ(例:/tmp/alloydb/kms)。
データベースが初期化されたら、RPM を使用して AlloyDB Omni をインストールするの手順に沿って、データベースを準備し、ホストを設定して、
systemdサービスを開始します。
TDE 指標を表示する
クラスタが初期化されたら、次の手順を完了して、TDE が有効になっていることを確認し、関連する TDE 指標を表示します。
psqlまたは任意のクライアントを使用してデータベースに接続します。インスタンスへの接続方法の詳細については、 AlloyDB Omni を実行して接続するをご覧ください。次のコマンドを実行します。
select * FROM pgsnap.g$tde_stats;出力には、TDE が有効になっているかどうか、KEK URL、KEK バージョン、KEK 作成タイムスタンプなどの 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_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_totalWAL ブロックの復号に費やされた合計時間。 該当なし マイクロ秒 カウンタ alloydb_omni_database_tde_wal_encryption_time_us_totalWAL ブロックの暗号化に費やされた合計時間。 該当なし マイクロ秒 カウンタ