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、または論理レプリケーションを使用したアップグレードプロセスでデータディレクトリを実行する必要があります。