透過的データ暗号化(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 |