この記事では、TDE (Transparent Data Encryption) の操作手順について説明します。データテーブルで TDE を有効にした後は、自動的に暗号化を解除することはできません。無効化の方法については、データテーブルの TDE 解除をご参照ください。
背景
TDE は Transparent Data Encryption の略で、透過的データ暗号化を指します。これは、データベース内の静的データ(すなわち、ディスクに保存されるデータ)を保護するための暗号化技術です。
OB Cloud では、サービス秘密鍵による TDE サポートが提供されており、この鍵は OceanBase Cloud によって生成および管理されます。また、クラウドベンダーの KMS 鍵の使用もサポートしています。対応するクラウドベンダーと詳細な使用方法については、クラウドベンダー アカウント認可をご参照ください。
概念
TDE (透過的データ暗号化) は、データベース層の暗号化ソリューションであり、ディスクに保存される静的データの保護に特化しています。主な特徴は以下の通りです:
自動暗号化と復号化:データがストレージに書き込まれる際に自動的に暗号化処理が実行され、データが読み取られる際にはアプリケーションに対して透過的に自動的に復号化されます(コードの変更は不要です)。
暗号化の範囲:テーブル領域ファイル、トランザクションログファイル、データベースバックアップなどの静的データを保護します。
鍵の管理:クラウドキーマネジメントサービス (KMS, Key Management Service) と連携し、暗号化鍵を安全に保存・管理します。
効率的かつ透過的:ユーザーおよびアプリケーションにとって「感じられない」ものであり、操作上の支障はありません。
OB Cloud は強力な TDE サポートを提供しており、そのクラウドネイティブな特性と組み合わせることで、ユーザーは機密データを効率的に暗号化しつつ、データサービスの高可用性と高性能を維持できます。
原理
TDE は、対称暗号化アルゴリズム(例:AES、Advanced Encryption Standard)を使用して、データベースまたは保存されるデータを暗号化します。暗号化と復号化のプロセスは通常、データベース管理システム (DBMS) によって自動的に完了し、アプリケーションやユーザーには透過的です。以下は TDE の核心原理とプロセスです:
マスターキー (Master Key)
マスターキーは最上位の鍵であり、他の鍵を保護(暗号化)するために使用されます。
マスターキーは通常、専用の安全な保存領域に格納されます(例:オペレーティングシステムの暗号化モジュール、ハードウェアセキュリティモジュール HSM、または Key Management Service KMS)。
マスターキー自体も強力な暗号化措置によって保護されます。
データベース暗号化キー (Database Encryption Key, DEK)
データベースは、専用の暗号化キー (DEK) を使用して対象データを暗号化します。
DEK はマスターキーで暗号化されるため、必要に応じて安全に保存または転送することができます。
データ暗号化
データベース暗号化キー (DEK) を使用して、TDE はデータベース内に保存されるデータを暗号化します。
暗号化の粒度は通常、データベースファイル全体(例:テーブルデータファイル)または特定のテーブルのページです。
データの復号化
データアクセス時、データベースサーバーはデータファイル内の暗号化された内容を自動的に復号化します。
復号化には保存されたデータベース暗号化キー(DEK)が使用され、ユーザーの介入は不要です。
暗号化データの書き込み
データをディスクに書き込む際、TDEはデータブロックを暗号化してから暗号化された形式で保存します。
たとえディスクやデータベースファイルが盗まれても、攻撃者は暗号化されたデータに直接アクセスすることはできません。
メモリ内のデータは依然として平文です
データがディスクからメモリに読み込まれると、自動的に復号化されて平文としてロードされます。
これは、暗号化が主に静的データを保護し、メモリ内や伝送途中のデータのセキュリティではないことを意味します。
使用上の制限
サービスキーの使用制限
TDE機能を有効にした後は無効にできません。
Oracle互換モードのテナントでサポートされているキーの種類はAES-256、AES-128、AES-192、SM4-CBCです。MySQLテナントでサポートされているキーの種類はAES-256です。設定後は変更できず、種類の変換もできません。
TDE機能を有効にすると、updateシナリオのパフォーマンスに影響はありませんが、他のシナリオではわずかなパフォーマンス低下が見られます。
操作手順
TDEを有効にした後、現在のページで暗号化テーブル領域を作成し、その後暗号化テーブルのDDL操作を実行してデータを暗号化することができます。暗号化テーブルのDDL:CREATE TABLE t1 (id1 int,id2 int) TABLESPACE sectest_ts1;。既存のデータテーブルを暗号化テーブル領域に追加する場合、追加後にフルコンパクションを1回実行してデータの永続化を図ってください。
TDE透過的データ暗号化の操作を有効にする
OB Cloudデータベースコンソールにログインします。
左側のナビゲーションペインでクラスターリストをクリックし、対象のクラスターを選択してクラスターワークスペースページに移動します。
左側のナビゲーションペインで**セキュリティ設定**をクリックします。
セキュリティ設定画面で、**透過的データ暗号化(TDE)**タブをクリックします。このタブにはTDEの設定リストが表示され、以下の操作を実行できます:
**操作列の暗号化を有効にする**をクリックして、TDE機能を有効にします。TDE透過的データ暗号化機能を有効にすると無効にできなくなり、パフォーマンスに一定の影響があるため、慎重に操作してください。
ポップアップウィンドウで、使用するキーのタイプを選択します。
OceanBase Cloudが提供するキーを使用する。
クラウドベンダーが提供するキーを使用する。
Huawei Cloud、AWS、Alibaba Cloudの自社チャネルのインスタンスでは、まずクラウドベンダーアカウントに紐づける必要があります。操作の詳細については、クラウドベンダーアカウントの認可をご参照ください。
Alibaba Cloudマーケットチャネルのインスタンスでは、Alibaba Cloudアカウントに紐づけた後、対応するキーを使用できます。
キーのタイプを選択したら、有効にする をクリックし、TDE機能の有効化を完了します。
テーブルスペースの暗号化の作成
アクション 列の 表領域を作成 をクリックします。
表領域を作成 のポップアップウィンドウで、暗号化された表領域名 と 暗号化アルゴリズム を入力します。
確認する をクリックし、テーブルスペースを作成します。
暗号化テーブルスペースの作成が完了したら、データ開発機能やその他のコマンドラインツールを使用してDDL操作を実行し、テーブルを作成して暗号化されたテーブルスペースに指定することもできます。例:
Oracleテナント
create table table_name (column1 int, column2 int) tablespace tablespace_name;MySQLテナント
create table table_name (column1 int, column2 int) tablespace tablespace_name;
テナント名の前の「+」記号をクリックすると、そのテナント配下のすべての暗号化テーブルスペース情報(暗号化テーブルスペース名、暗号化アルゴリズム、作成日時など)を確認できます。
暗号化テーブルスペース名をクリックすると、暗号化テーブルの状態、暗号化進捗状況などの情報を確認できます。暗号化進捗状況は、現在のデータテーブル内で、既に暗号化されたデータブロックの割合を示します。
古いデータテーブルに対するフルコンパクションの実行
古いデータテーブルに対するフルコンパクションの操作手順は以下の通りです。既存のテーブルt1を例に説明します:
パラメータ
progressive_merge_numの値を1に設定します。obclient> ALTER TABLE t1 set progressive_merge_num = 1;クラスタインスタンスのワークスペースページで、手動でデータコンパクションを1回トリガーします。詳細については、データコンパクションをご参照ください。
データコンパクションが完了したら、パラメータ
progressive_merge_numの値を0に設定します。obclient> ALTER TABLE t1 set progressive_merge_num = 0;