Working with encrypted WAL files#
TDEが有効になっている場合、WALファイルは暗号化されます。暗号化されたWALファイルで操作を実行する場合は、操作でファイルを復号化することを許可する必要があります。
暗号化されたWALファイルを使用してトラブルシューティングを行う場合、WALコマンドオプションを使用できます。
TDE暗号化されたWALファイルのダンプ#
暗号化されたWALファイルを操作するには、 pg_waldump ユーティリティがunwrapキーにアクセスし、復号化できることを確認する必要があります。この目的のために、ユーティリティは3つの値の意識を必要とします。
次のオプションを使用してこれらの値をpg_waldump
コマンドに渡します。
TDE対応クラスターを初期化するときに使用したものと同じ値を使用してください。
–data-encryption#
WALファイルが透過的データ暗号化で暗号化された場合に、このオプションを指定します。
--data-encryption または-y
オプションは、コマンドが暗号化を認識できるようにします。それ以外の場合、pg_waldump
は、WALファイルが暗号化されているかどうかを検出できません。
TDE対応データベースクラスターを初期化するときに使用したのと同じ暗号化構成を提供します。たとえば、クラスターの作成中にAESキー長を指定した場合、ここでも同様に指定する必要があります。それ以外の場合、値を指定せずにフラグを実行します。詳細については、 initdb TDE options を参照してください。
–key-file-name=#
--key-file-name=<file>
オプションを使用して、WALファイルの復号化に必要なデータ暗号化キーを含むファイルを参照します。
pg_encryption/key.bin
ファイルの場所を提供します。このファイルは、暗号化を有効にしてクラスターを初期化するときに生成されます。
コマンドは、指定された場所からデータ暗号化キーをロードできます。
–key-unwrap-command=#
--key-unwrap-command=<command>
オプションの場合、TDEクラスターの初期化時にデータ暗号化キーをアンラップ(復号)するように指定したdecryptionコマンドを提供します。詳細については、
initdb TDE options を参照してください。
または、 pg_waldump コマンドを実行する前にPGDATAKEYUNWRAPCMD
環境変数を設定できます。 --key-unwrap-command=<command>
オプションが指定されていない場合、pg_waldump
はPGDATAKEYUNWRAPCMD
にフォールバックします。この Creating a database with TDE は、環境変数をエクスポートする方法を示しています。
例#
この例では、 pg_waldump を使用して、 openssl
を使用してデータ暗号化キーをラップする暗号化されたクラスターのWALログを表示します。
pg_waldump --data-encryption --key-file-name=pg_encryption/key.bin --key-unwrap-command=openssl enc -d -aes-128-cbc -pass pass:<passphrase> -in %p
破損したTDE暗号化されたWALファイルのリセット#
破損した暗号化されたWALファイルをリセットするには、
pg_resetwal コマンドがunwrapキーにアクセスし、復号化できることを確認する必要があります。次のオプションを使用してunwrapコマンドのキーをpg_resetwal
コマンドに渡すか、フォールバック環境変数に依存することができます。
–key-unwrap-command=#
--key-unwrap-command=<command>
オプションの場合、TDEクラスターの初期化時にデータ暗号化キーをアンラップ(復号)するように指定したdecryptionコマンドを提供します。詳細については、
initdb TDE options を参照してください。
または、 pg_resetwal コマンドを実行する前にPGDATAKEYUNWRAPCMD
環境変数を設定できます。 --key-unwrap-command=<command>
オプションが指定されていない場合、 pg_resetwal
はPGDATAKEYUNWRAPCMD
にフォールバックします。この Creating a database with TDE は、環境変数をエクスポートする方法を示しています。
例#
この例では、 pg_resetwal を使用して、 openssl
を使用してデータ暗号化キーをラップする暗号化クラスターの破損した暗号化されたWALログをリセットします。
pg_resetwal --key-unwrap-command=openssl enc -d -aes-128-cbc -pass pass:<passphrase> -in %p