Rotating the data encryption key#
マスターキーを変更するには、古いキーを指定してunwrapコマンドを手動で実行します。次に、結果をwrapコマンドにフィードして、新しいキーを指定します。同様に、データキーがパスフレーズで保護されている場合、パスフレーズを変更するには、古いパスフレーズを使用してunwrapコマンドを実行します。次に、新しいパスフレーズを使用して結果をwrapコマンドにフィードします。データベースサーバーの実行中にこれらの操作を実行できます。ファイル内のラップされたデータキーは、起動時にのみ使用されます。サーバーの実行中は使用されません。
パスフレーズのローテーション#
opensslを使用する Using a passphrase の例を基にパスフレーズを変更すると、次のことができます。
cd $PGDATA/pg_encryption/
openssl enc -d -aes-128-cbc -pbkdf2 -in key.bin | openssl enc -e -aes-128-cbc -pbkdf2 -out key.bin.new
mv key.bin.new key.bin
この方法では、復号化と暗号化コマンドが端末でパスフレーズを同時に要求しますが、これは厄介で混乱を招きます。 代替案は次のとおりです。
cd $PGDATA/pg_encryption/
openssl enc -d -aes-128-cbc -pbkdf2 -in key.bin -pass pass:<replaceable>ACTUALPASSPHRASE</replaceable> | openssl enc -e -aes-128-cbc -pbkdf2 -out key.bin.new
mv key.bin.new key.bin
この手法は、古いパスフレーズを漏洩させますが、いずれにせよ置き換えられます。 opensslは、パスフレーズを提供する他の多くの方法をサポートしています。
キーストアのラッピングキーのローテーション#
Using a key store を使用する場合、たとえば、 unwrapおよびwrapコマンドを同様に接続できます。
cd $PGDATA/pg_encryption/
crypt decrypt aws --in key.bin --region us-east-1 | crypt encrypt aws --out key.bin.new --region us-east-1 --kms alias/pg-tde-master-2
mv key.bin.new key.bin
注釈
既存のデータディレクトリのデータキーマスターキーによってラップされたキーは変更できません。それを行う必要がある場合は、 pg_dump、pg_upgrade、または論理レプリケーションを使用したアップグレードプロセスでデータディレクトリを実行する必要があります。