Transparent Data Encryption¶
透過的データ暗号化(TDE)は、高可用性を備えたEDB Postgres Advanced ServerおよびEDB Postgres Extended Serverのバージョン15でサポートされているオプション機能です。
データベースシステムに保存されているユーザーデータを暗号化します。この暗号化はユーザーに対して透過的です。ユーザーデータには、オブジェクトの名前などのシステムカタログデータだけでなく、テーブルやその他のオブジェクトに格納されている実際のデータが含まれます。
Architecture diagram¶
TDEで暗号化されるのは何ですか?¶
TDEは以下を暗号化します。
TOASTテーブルとシステムカタログを含み、すべてのフォークを含むテーブル、シーケンス、インデックスの基礎となるファイル。これらのファイルは_データファイル_と呼ばれます。
ログ先行書き込み(WAL)。
・ クエリ処理やデータベースシステムの運用時に使用される各種一時ファイル。
以下は、TDEによって暗号化または偽装されません。
トランザクションステータス(たとえば、 pg_subtransおよびpg_xact)などのユーザデータを含まないデータベースシステムの操作内部のメタデータ。
データディレクトリ内のファイル名とファイルシステム構造。これは、データベースシステムの全体的なサイズ、データベースの数、テーブルの数、それらの相対的なサイズ、および最終アクセス時間などのファイルシステムのメタデータがすべて復号化されないことを意味します。
外部テーブルのデータ。
サーバー診断ログ。
構成ファイル。
TDEはパフォーマンスにどのように影響しますか?¶
パフォーマンスは、AESの一般的なオーバーヘッドと一致しています。
TDEはどのように機能しますか?¶
TDEは、データベースサーバーおよびバックアップストレージ上のオペレーティングシステムファイルのデータの不正表示を防ぎます。データは、盗まれたり紛失したりすると、権限のないユーザーには理解できなくなります。
データの暗号化と復号化はデータベースによって管理されるため、アプリケーションの変更やクライアントドライバーの更新は必要ありません。
EDB Postgres Advanced ServerとEDB Postgres Extended Serverは、データベース外部のキー管理へのフックを提供します。これらのフックにより、単純なパスフレーズの暗号化/復号化、またはエンタープライズキー管理ソリューションとの統合が可能になります。詳細については、 Securing the data encryption key を参照してください。
TDEはどのようにデータを暗号化しますか?¶
TDEは、AES-128-XTSを使用してデータファイルを暗号化します。 XTS「微調整」はデータベースOID、relfilenode、およびブロック番号を使用します。
WALはAES-128-CTRを使用して暗号化されます。 「カウンター」にはWAL LSNが含まれます。
ブロックによってアクセスされる一時ファイルもAES-128-XTSを使用して暗号化されます。その他の一時ファイルは AES-128-CBC を使用して暗号化されます。
TDEでデータはディスクにどのように保存されますか?¶
この例では、 tbfoo テーブルのデータは暗号化されています。
pg_relation_filepath ファンクションは、 tbfoo
テーブルに対応するデータファイルを見つけます。
insert into tbfoo values (abc,123);
INSERT 0 1
select pg_relation_filepath(tbfoo);
pg_relation_filepath
- ---------------------
base/5/16416
文字を探してデータをgreppしても何も返されません。最後の 5 行を表示すると、暗号化されたデータが返されます。
$ hexdump -C 16416 | grep abc
$
$ hexdump -C 16416 | tail -5
00001fc0 c8 0f 1d c8 9a 63 3d dc 7d 4e 68 98 b8 f2 5e 0a |.....c=.}Nh...^.|
00001fd0 9a eb 20 1d 59 ad be 94 6e fd d5 6e ed 0a 72 8c |.. .Y...n..n..r.|
00001fe0 7b 14 7f de 5b 63 e3 84 ba 6c e7 b0 a3 86 aa b9 |{...[c...l......|
00001ff0 fe 4f 07 50 06 b7 ef 6a cd f9 84 96 b2 4b 25 12 |.O.P...j.....K%.|
00002000