Enabling TDE

を使用してデータベースクラスターを初期化するときに、透過的なデータ暗号化を有効にします。

initdb TDEオプションの使用

暗号化を有効にするには、 initdb コマンドまたはそのフォールバック環境変数で次のオプションを使用します。

-y, --data-encryption

透過的なデータ暗号化を使用して新しいデータベースクラスターを初期化します。詳細については、 Transparent Data Encryption を参照してください。

--copy-key-from=<file>

指定された場所からデータ暗号化キーをコピーします。 pg_upgradeのターゲットとして新しいクラスターを準備するときに、このオプションを使用して既存のクラスターからキーをコピーできます。 --key-wrap-command=<command> 生成したデータ暗号鍵をラップ(暗号化)するコマンドを指定します。コマンドには、ラップされたキーを書き込むファイルを指定するプレースホルダー %p を含める必要があります。ラップされていないキーは、標準入力でコマンドに提供されます。このオプションを指定しない場合、環境変数PGDATAKEYWRAPCMD が使用されます。キーラッピングコマンドを適用しない場合は、空の文字列を使用します。データ暗号化を使用している場合は、このオプションまたは環境変数 fallback を指定する必要があります。詳細については、 Securing the data encryption key を参照してください。

--key-unwrap-command=<command>

データ暗号化キーをアンラップ(復号化)するコマンドを指定します。コマンドには、ラップされたキーを読み取るファイルを指定するプレースホルダー%p を含める必要があります。このコマンドは、ラップされていないキーを標準出力に書き込む必要があります。このオプションを指定しない場合、環境変数PGDATAKEYUNWRAPCMD が使用されます。キーのラップ解除コマンドを適用しない場合は、空の文字列を使用します。データ暗号化を使用している場合は、このオプションまたは環境変数 fallback を指定する必要があります。詳細については、 [Securing the data encryption key を参照してください。 --no-key-wrap

キーラッピングを無効にします。代わりに、データ暗号化キーはデータディレクトリに平文で保存されます。 (このオプションは、 wrapコマンドとunwrapコマンドの両方を空の文字列に設定するためのショートカットです。) .. Note::

このオプションの使用は安全ではありません。テスト目的でのみ使用してください。データ暗号化を選択し、このオプションを指定しない場合、キーのラップおよびラップ解除コマンドを提供する必要があります。それ以外の場合、 initdb はエラー終了します。

環境変数の使用

操作を簡素化するために、環境変数にキーのラップコマンドとラップ解除コマンドを設定できます。

例:

PGDATAKEYWRAPCMD=openssl enc -e -aes128-wrap -pbkdf2 -out "%p"
PGDATAKEYUNWRAPCMD=openssl enc -d -aes128-wrap -pbkdf2 -in "%p"
export PGDATAKEYWRAPCMD PGDATAKEYUNWRAPCMD

postgresql.confにキーパラメーターを設定する

クラスターのTDEを有効にすると、 initdb コマンドはpostgresql.conf 構成ファイルのdata_encryption_key_unwrap_command パラメーターを初期化します。 data_encryption_key_unwrap_command で指定された文字列は、データ暗号化キーをアンラップ(復号化)します。

コマンドには、プレースホルダー%p を含める必要があります。これは、ラップを解除するキーを含むファイルの名前に置き換えられます。このコマンドは、ラップされていない(復号化された)キーを標準出力に出力する必要があります。

このパラメーターを指定しない場合、環境変数 PGDATAKEYUNWRAPCMD が使用されます。

キーのラップ解除コマンドを適用しない場合は、空の文字列を使用します。

データ暗号化を使用している場合は、このパラメーターまたは環境変数 fallback を指定する必要があります。詳細については、 Securing the data encryption key を参照してください。

このパラメーターは、サーバーの起動時にのみ設定できます。

このパラメーターは通常、initdb によって初期化されます。キーラップ方法を変更する場合にのみ変更してください。

構成ファイルの詳細については、 PostgreSQL File Locations documentation を参照してください。

例

この例では、Linuxプラットフォームで実行されているEDB Postgres Advanced Server 15を使用します。 opensslを使用して、生成されたデータ暗号化キーをラップおよびラップ解除するパスキーを定義します。

1.データ暗号化キー(ラップ)と復号化(アンラップ)環境変数を設定します。

   export PGDATAKEYWRAPCMD=openssl enc -e -aes-128-cbc -pass pass:ok -out %p
   export PGDATAKEYUNWRAPCMD=openssl enc -d -aes-128-cbc -pass pass:ok -in %p
``` !!!note Windowsを使用している場合、変数値を一重引用符で囲む必要はありません。

1.暗号化を有効にした`initdb` を使用してクラスターを初期化します。このコマンドは、 postgresql.confファイルに`data_encryption_key_unwrap_command` パラメーターを設定します。

```shell
   /usr/edb/as15/bin/initdb --data-encryption -D /var/lib/edb/as15/data
  1. クラスターを起動します。

/usr/edb/as15/bin/pg_ctl -D /var/lib/edb/as15/data start
  1. postgresql.confでgrepを実行して、data_encryption_key_unwrap_command の設定を確認します。

grep data_encryption_key_unwrap_command /var/lib/edb/as15/data/postgresql.conf
__OUTPUT__
data_encryption_key_unwrap_command = openssl enc -d -aes-128-cbc -pass pass:ok -in %p