Transparent Data Encryption

透過的データ暗号化(TDE)は、高可用性を備えたEDB Postgres Advanced ServerおよびEDB Postgres Extended Serverのバージョン15でサポートされているオプション機能です。

データベースシステムに保存されているユーザーデータを暗号化します。この暗号化はユーザーに対して透過的です。ユーザーデータには、オブジェクトの名前などのシステムカタログデータだけでなく、テーブルやその他のオブジェクトに格納されている実際のデータが含まれます。

Architecture diagram

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