透過的データ暗号化(TDE)は、ディスクに保存される機密データを暗号化できます。データはストレージデバイスに書き込まれる前に自動的に暗号化され、読み取り時には自動的に復号化されます。このプロセスはユーザーに対して透過的であり、データベースで認証されたユーザーは制限なくデータにアクセスできます。ストレージ媒体が盗まれた場合でも、TDEにより媒体に保存された機密データは、認証されていないユーザーがアクセスできないように保証されます。
機能の適用範囲
OceanBaseデータベースCommunity Editionは、現在透過的データ暗号化をサポートしていません。
二層鍵体系
透過的データ暗号化は、二層鍵体系を用いて暗号化および復号化機能を実装します。暗号化を有効にする最小単位はデータベース内のテーブルであり、暗号化が必要なテーブルは暗号化テーブル領域(tablespace)に配置する必要があります。各暗号化テーブル領域には暗号化アルゴリズムと対応するデータ鍵が設定され、そのテーブル領域内のデータを暗号化するために使用されます。各テナントには主鍵が1つずつ存在し、テーブル領域の鍵を暗号化するために使用されます。不正な復号化操作を防ぐため、主鍵は通常外部キーマネジメントサービス(KMS)に格納されます。
暗号化を有効にすると、主鍵を用いてデータ鍵を暗号化し、暗号化されたデータ鍵の暗号文を生成します。この暗号文は内部テーブル、マクロブロックヘッダ、clogヘッダに格納され、データ鍵自体はどこにも平文で保存されません。データの暗号化・復号化が必要な場合、主鍵を用いてこの暗号文を復号化し、データ鍵を取得した後、マクロブロックやclog内のユーザーデータに対して暗号化・復号化操作を行います。
暗号化の有効化メカニズム
ユーザーがディスクに保存するデータには、clogとマクロブロックの2種類があります。暗号化はデータが実際にディスクに書き込まれる際にのみ有効になり、メモリ内のデータは暗号化されません。元々暗号化されていないテーブルを暗号化に変更しても、既にディスクに保存されている未暗号化のclogやマクロブロックデータは暗号化されません。後からディスクに新規に書き込まれるデータのみが暗号化されます。各clogと各マクロブロックには暗号化メタ情報が記録されるため、暗号化されたデータと未暗号化のデータは同時に存在可能です。
clogは追記書き込み方式でディスクに書き込まれるため、古い未暗号化のclogは永遠に暗号化されません。暗号化を有効にしてしばらくすると、古いclogはすべて回収され、ディスク上のclogデータはすべて暗号化されたデータになります。マクロブロックデータについては、ダンプやメジャーコンパクション時にのみ書き込みが発生するため、手動でフルコンパクションをトリガーすることで、未暗号化のマクロブロックデータを暗号化されたものに書き直すことができます。
サポートされている暗号化アルゴリズム
アルゴリズム |
鍵長 |
モード |
|---|---|---|
| AES | 128 bits 192 bits 256 bits | ecb、gcm |
| SM4 | 128 bits | cbc、gcm |