Database Support Blog

  • EDB
2023.05.18

EPAS15の新機能TDE(Transparent Data Encryption)を徹底解剖【前編】

はじめに

企業は日々膨大な量のデータを収集しており、このデータの中には、金融情報、個人情報、取引履歴などの貴重な情報を含んでいることも少なくありません。これらの情報が悪意のある第三者に盗まれると、個人情報が悪用されるリスクはもちろんのこと、企業の評判や信用に大きな損害をもたらすため、セキュリティで保護される必要があります。

そんなユーザーの大切なデータを保護するために、EDB Postgres Advanced Server 15(EPAS15) では待望の「透過的データ暗号化(Transparent Data Encryption、以下TDE)」機能が登場しました。

TDEを使うことでユーザーデータを保護できる一方で、「パフォーマンス」や「周辺ツール」へ与える影響を心配されている方も多いと思います。今回はそんな期待と不安の声が聞こえてくる「TDE」について徹底解剖した結果を全2回(前編/後編)でお届けいたします!


1. TDEとは?

TDEは、ユーザーが暗号化と復号処理を意識することなく暗号化データを扱うことができるDBMSの機能です。TDEを有効にするとディスク上に保存されているユーザーデータが全て透過的に暗号化されるため、不正アクセスによる情報漏洩のリスクからユーザーの大切なデータを保護することができます。また、データの暗号化/復号処理はDBMSが透過的に行いますので、アプリケーションやストレージシステムの設定変更が不要なのもTDEの魅力の一つです。


2. TDEのアーキテクチャ

2-1. 暗号化の対象

TDEの暗号化対象は、データベースに保存されている全てのユーザーデータ(リレーションファイル、WALファイル、一時ファイル)です。メモリからファイルシステムにデータを書き出す前に透過的に暗号化が行われます。それ以外のサーバログ、設定ファイル、外部テーブルやファイルシステムのメタデータ(ファイルサイズ、ファイル数、最終更新時間)等は暗号化の対象ではありません。


2-2. 内部動作

TDEは、下図の①で示すように「メモリ上のデータをファイルに書き出す時」「ファイルからメモリ上にデータを読み込む時」それぞれに暗号化/復号処理を追加できる仕組みを提供することで実装されています。これらの仕組みを使い、単純なパスフレーズの暗号化/復号、またはエンタープライズキー管理ソリューションとの統合を可能にしています。

また下図②で示すように、TDEを有効にしても正しい経路で(データベースを介して)データにアクセスするアプリケーションは一切の変更を必要としません。

一方で、下図③で示すように、ファイルシステム上に書き出されたデータは暗号化されているため、悪意のある第三者がファイルにアクセスしても内容を解読することができません。

TDE 内部動作


2-3. 暗号化方式

TDEではAES(Advanced Encryption Standard)による暗号化方式が採用されています。
AESは米国が標準暗号化方式として採用している、非常に安全性が高い暗号化方式です。
各ファイルごとの暗号化方式は下記の通りです。

  • リレーションファイル:AES-128-XTS
  • WALファイル:AES-128-CTR
  • 一時ファイル:AES-128-XTS


  ※AES - [鍵長] - [ブロック暗号モードの種類] を表しています。
   暗号化方式の詳細については本記事では割愛させていただきます。


3. TDEの有効化方法

TDEを有効化するには、initdb でデータベースクラスタを初期化する時に専用のオプションを指定します。以下は、openssl を使った単純なパスフレーズでデータ暗号化キーをWRAP、UNWRAP(データ暗号化キー自体を暗号化、復号)する一例です。機能を有効化する際に指定可能なオプションや手順の詳細は公式のドキュメント(EDB Docs - Transparent Data Encryption)をご参照ください。

1.データ暗号化キーのWRAP、UNWRAPコマンドを環境変数に設定
 
  # export PGDATAKEYWRAPCMD='openssl enc -e -aes-128-cbc -pass pass:enterprisedb -out %p'
  # export PGDATAKEYUNWRAPCMD='openssl enc -d -aes-128-cbc -pass pass:enterprisedb -in %p'
 

2.initdbを使用してデータベースクラスタを初期化
 
   # /usr/edb/as15/bin/initdb --data-encryption -D /var/lib/edb/as15/data
 

3.データベースクラスタを起動
 
  # /usr/edb/as15/bin/pg_ctl -D /var/lib/edb/as15/data start
 

4.postgresql.conf に data_encryption_key_unwrap_command が設定されていることを確認
 
   # grep data_encryption_key_unwrap_command /var/lib/edb/as15/data/postgresql.conf
 

以上の手順でTDEが有効なデータベースクラスタを構築できます。次の章ではデータファイルのユーザーデータが本当に暗号化されているのかを確認していきます。


4. 暗号化結果の確認

ファイルシステムに書き出されたデータファイルの内容がTDEで暗号化されていることを確認してみます。「tab01」テーブルを作成した後、「tab01」のリレーションファイルのデータをバイナリダンプで出力し、データが暗号化されていることを確認します。

1.「tab01」テーブルを作成
 
  edb=# CREATE TABLE tab01 (col1 INTEGER, col2 TEXT); 
  edb=# INSERT INTO tab01 VALUES (12345,'hogehoge');
 

2.「tab01」テーブルのリレーションファイルのパスを確認
 
  edb=# select pg_relation_filepath('tab01');
   pg_relation_filepath
   ----------------------
   base/15314/16389
   (1 row) 
 

3.バイナリダンプ(hexdump)でリレーションファイルをダンプしても、暗号化されているため、文字列 ”hogehoge” を見つけることができません
 
  [enterprisedb@tde01 ~]$ hexdump -C $PGDATA/base/15314/16389 | grep hogehoge
  [enterprisedb@tde01 ~]$
 

4.TDEが無効の環境の場合、次のようにバイナリダンプの内容から文字列データ ”hogehoge” を見つけることができてしまいます
 
  [enterprisedb@tde01 ~]$ hexdump -C $PGDATA/base/15314/16384 | grep hogehoge
   00001ff0 39 30 00 00 13 68 6f 67 65 68 6f 67 65 00 00 00 |90...hogehoge...|
  [enterprisedb@tde01 ~]$
 

以上の結果から、万が一ファイルシステム上のデータファイルが悪意のある第三者の手に渡ってしまっても、TDEでデータが暗号化されていれば、内容を読み解くことができないということを確認できました。


まとめ(前編)

前編では、EPAS15に追加された透過的データ暗号化(TDE)について、そのアーキテクチャや有効化方法、暗号化方式等を解説しました。

TDEを有効にすることで、データベースに保存されているユーザーデータが暗号化されるため、不正アクセスによる情報漏洩のリスクから保護することができます。また、透過的に暗号化や復号処理が行われるため、アプリケーションの改修が不要なのも魅力的ですね。

後編では、多くのユーザーが懸念している、TDEを利用する際のパフォーマンスへの影響や周辺ツールへの影響についての情報をお届けいたします。


執筆者情報

やすだこうき プロフィール画像

2017年に中途入社。Oracle Database、EDB Postgres/PostgreSQL のサポート経験を経て、2020年からバックサポートを担当。DBとアプリケーションを繋ぐミドルウェア製品のスペシャリスト。トレンドな技術は積極的に触れるほど好奇心旺盛。最近はプロアクティブなサポートを目指して粉骨砕身。趣味はボードゲーム。...show more


■本記事の内容について
 本記事に示した定義及び条件は変更される場合があります。あらかじめご了承ください。

■商標に関して
 ・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
 ・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
  文中の社名、商品名等は各社の商標または登録商標である場合があります。

関連している記事

  • EDB
  • PostgreSQL
2024.01.16

EDBがもたらすデータベースの新たな価値 ~ EDB社Field CTO Ajit Gadge氏来日、セミナー講演レポート ~

EDB社のAjit Gadge氏を招き「PostgreSQLユーザーに捧ぐ、EDBを使ったDB機能向上とコスト削減の両立」セミナーを開催しました。DB市場の現状やトレンド、EDBの最新動向について紹介しております。アシストセッションのアーカイブ配信の視聴申し込みも可能です。ぜひご覧ください。

  • PostgreSQL
  • EDB
2023.12.20

PostgreSQLのSQLチューニングを体験してみよう!

35年以上教育事業を展開しているアシストが新たに取り組み始めた「ポスグレ学園」。連載最終回となる9回目の記事では、「PostgreSQL SQLチューニング実践」のワークショップ主管である 田中 健一朗 にインタビューしました。

  • PostgreSQL
  • EDB
2023.10.30

データベースの健康診断! ~ PostgreSQL DB稼働分析体験 ~

35年以上教育事業を展開しているアシストが新たに取り組み始めた「ポスグレ学園」。連載8回目となる今回の記事では、PostgreSQL DB稼働分析ワークショップの主管である保田 公貴にインタービューしました。

ページの先頭へ戻る