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
クラスターを起動します。
/usr/edb/as15/bin/pg_ctl -D /var/lib/edb/as15/data start
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