【とうかてきでーたあんごうか】

透過的データ暗号化(TDE) とは?

最終更新:
💡 DB側で保存データを暗号化し、利用時に復号する

アプリケーションに暗号化処理を持たせず、DB側で保存データを暗号化・復号する機能。対象のデータファイルやログ、表領域などは製品と設定によって異なる。通信や、読み取り権限を持つ利用者のアクセスは別に保護する。

📌 このページのポイント
DB側で、保存データを暗号化するアプリ通常のSQLDBエンジン暗号化・復号保存先暗号化SQL書く読む結果鍵・証明書の保護と保存復元に必要なものを失わない通信・権限・CSV出力の保護は別暗号化の対象と鍵の仕組みは、製品・設定次第
矢印はSQLと結果、保存先への書込みと読込みです。緑は暗号化した保存データ、橙は鍵管理の注意点で、外部KMSを必須にする構成図ではありません。
ひよこ ひよこ
普通の暗号化と何が違うの?
ペンギン先生 ペンギン先生
アプリ側で値を暗号化するコードを書かず、DB側で保存データの暗号化を扱うところだよ。例えばSQL Serverでは、対象ページをディスクへ書く前に暗号化し、メモリへ読むときに復号する。ただし機能を有効にする設定や鍵の管理は必要なんだ
ひよこ ひよこ
暗号化されているのにSQLで読めるの?
ペンギン先生 ペンギン先生
必要な読み取り権限を持つユーザーやアプリには、DBが復号した結果を返すよ。TDEを有効にしても、権限のあるSQLを通じた持ち出しまで防げるわけではない。アプリとの通信を暗号化する仕組みも別に用意するんだ
ひよこ ひよこ
バックアップなら全部守れる?
ペンギン先生 ペンギン先生
暗号化された保存データだけが漏れ、必要な鍵が渡っていなければ読み取りを防ぐ助けになるよ。SQL ServerのTDE対象DBのバックアップも保護される。ただしCSVなどの出力や、TDEの対象外ファイルまで自動で暗号化されるとは限らないね
ひよこ ひよこ
どのDBでも保護範囲は同じ?
ペンギン先生 ペンギン先生
違うよ。SQL Serverにはデータとログの保護、Oracleには表領域や列の暗号化、MySQLのInnoDBには表領域やログの暗号化がある。例えばSQL ServerのFILESTREAMはTDEの対象外。製品、版、保存形式や設定を確認しよう
ひよこ ひよこ
鍵はどう管理するの?
ペンギン先生 ペンギン先生
対応する鍵管理の仕組みを使い、アクセス権や鍵の保護を設計するよ。KMSやHSMが使える構成もあるけれど、全製品で必須・同じ方式というわけではない。SQL Serverでは復元に必要な証明書と秘密鍵の保存も大切。鍵を失うと、自分でもデータを復元できなくなることがあるんだ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「透過的データ暗号化(TDE)」って出てきたら「DB側で保存データを暗号化する機能」と思えばだいたいOK!
📖 おまけ:英語の意味
「Transparent Data Encryption」 = 透過的データ暗号化
💬 Transparent(透過的=ユーザーには見えないところで動く)+Data Encryption(データ暗号化)。アプリ側には「透明」に見えるまま暗号化する仕組みだよ

参考資料

← 用語集にもどる