AlloyDB Omni で透過的データ暗号化(TDE)を有効にすると、保存データを保護し、機密情報を保護できます。このドキュメントでは、データベースの初期化時に、必要な Key Management Service(KMS)環境変数(HashiCorp Vault または Thales CipherTrust Manager 用)と POSTGRES_INITDB_ARGS 環境変数の --tde-kek-url フラグを指定して、TDE 対応クラスタを作成する方法について説明します。
始める前に
HashiCorp Vault KMS
- AlloyDB Omni のインストールを計画するをご覧ください。
- TDE を有効にして AlloyDB Omni のデプロイを計画する場合は、予想されるワークロードとデータ量に基づいて、追加の CPU 使用量を考慮してください。暗号化と復号は、コンピューティング負荷の高いオペレーションです。
- HashiCorp Vault の KV-V2 シークレット エンジンを構成して、鍵暗号鍵(KEK)パスと JSON Web Token(JWT)が使用可能であることを確認します。
- AlloyDB Omni に、認証トークンである JSON ウェブトークン(JWT)ファイルの読み取り権限があることを確認します。
Thales CipherTrust KMS
- AlloyDB Omni のインストールを計画するを読みます。
- TDE を有効にして AlloyDB Omni のデプロイを計画する場合は、予測されるワークロードとデータ量に基づいて、追加の CPU 使用量を考慮してください。暗号化と復号は計算負荷の高いオペレーションです。
- Thales CipherTrust Manager を構成して、秘密の鍵暗号鍵(KEK)が作成され、エクスポート可能であることを確認します。
- KEK シークレットの認証とエクスポートの権限を持つ CipherTrust Manager ユーザー アカウント(
usernameとpassword)があることを確認します。
クラスタを作成する
TDE 対応クラスタを作成するには、データベースの初期化時に必要な Key Management Service(KMS)の構成と認証情報を渡す必要があります。HashiCorp Vault(jwt 認証を使用)または Thales CipherTrust Manager(ユーザー名とパスワード認証を使用)を構成できます。
RPM を使用して AlloyDB Omni をインストールするの手順に沿って、環境を準備し、AlloyDB Omni RPM パッケージをインストールします。
データベースを初期化します。
HashiCorp Vault KMS
HashiCorp Vault を使用する本番環境のワークロードには、この方法を使用します。
次のコマンドを実行して、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)。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: Vault 接続の証明書がノードに配置されているパス(例:/tde-tls)。設定しない場合、デフォルトのトラストストアの証明書が使用されます。KEK_URL: HashiCorp Vault の KEK の完全修飾 URL。vaultをプロトコルとして使用して、HashiCorp Vault を KMS プロバイダとして指定します(例:vault://127.0.0.1:8200/v1/secret/data/alloydb_kek)。
/etc/systemd/system/alloydbomni18.service.d/override.confでalloydbomni18.serviceのオーバーライド ファイルを作成するには、override.confファイルに以下を追加します。[Service] Environment="VAULT_AUTH_TYPE=jwt" 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"
次のように置き換えます。
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: Vault 接続の証明書がノードに配置されているパス(例:/tde-tls)。設定しない場合、デフォルトのトラストストアの証明書が使用されます。
変更を適用するには、systemd デーモンを再読み込みします。
sudo systemctl daemon-reload
Thales CipherTrust KMS
Thales CipherTrust Manager を使用する本番環境ワークロードには、この方法を使用します。
次のコマンドを実行して、TDE を有効にしてデータベースを初期化します。
sudo PGPASSWORD=POSTGRES_PASSWORD \ PGDATA=DATA_DIR \ CIPHERTRUST_USER=CIPHERTRUST_USERNAME \ CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \ CIPHERTRUST_CERT_PATH=CIPHERTRUST_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/dataCIPHERTRUST_USERNAME: Thales CipherTrust Manager での認証に使用されるユーザー名。CIPHERTRUST_PASSWORD: Thales CipherTrust Manager ユーザーのパスワード。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)。
/etc/systemd/system/alloydbomni18.service.d/override.confでalloydbomni18.serviceのオーバーライド ファイルを作成するには、override.confファイルに以下を追加します。[Service] Environment="CIPHERTRUST_USER=CIPHERTRUST_USERNAME" Environment="CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD" Environment="CIPHERTRUST_CERT_PATH=CIPHERTRUST_CERT_PATH"
次のように置き換えます。
CIPHERTRUST_USERNAME: Thales CipherTrust Manager での認証に使用されるユーザー名。CIPHERTRUST_PASSWORD: Thales CipherTrust Manager ユーザーのパスワード。CIPHERTRUST_CERT_PATH: CipherTrust Manager 接続の証明書(ca.crt、tls.crt、tls.key)がノードに配置されているパス(例:/tde-tls)。設定されていない場合は、デフォルトのトラストストアの証明書が使用されます。
変更を適用するには、systemd デーモンを再読み込みします。
sudo systemctl daemon-reload
ファイルベースの KMS
この方法はテストでのみ使用してください。
ファイルベースの鍵を使用して TDE をローカルでテストするには、まずマシンで 32 バイトの KEK を生成する必要があります。
ディレクトリを作成し、鍵を生成して、適切な権限を設定します。
KEK_DIR=KEK_DIR sudo mkdir -p $KEK_DIR openssl rand -base64 32 | sudo tee $KEK_DIR/key >/dev/null sudo chown -R postgres:postgres $KEK_DIR sudo chmod 0700 $KEK_DIR sudo chmod 0600 $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サービスを起動します。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 ストレージにスピルされたカラム型キャッシュ ブロックの復号に費やされた合計時間。 | 該当なし | マイクロ秒 | カウンタ |