このページでは、TDE(Transparent Data Encryption)透過的データ暗号化の操作手順について説明します。データテーブルでTDEを有効にした後は、自動的に暗号化を解除することはできません。無効化の方法については、データテーブルのTDE解除を参照してください。
背景情報
TDEはTransparent Data Encryptionの略であり、透過的データ暗号化を指します。データベース内の静的データ(つまり、ディスクに保存されているデータ)を保護するための暗号化技術です。
OceanBase Cloudでは、サービスキーによるTDEをサポートしており、このキーはOceanBase Cloudが生成・管理します。また、クラウドベンダーのKMSキーの使用もサポートしています。対応するクラウドベンダーと詳細な使用方法については、クラウドベンダーのアカウント認証を参照してください。
概念の説明
TDE(透過的データ暗号化)は、データベース層で提供される暗号化ソリューションであり、ディスク上に保存される静的データの保護に特化しています。主な特徴は以下の通りです:
自動的な暗号化と復号化:データがストレージに書き込まれる際に自動的に暗号化処理が実行され、データが読み取られる際には自動的に復号化されます。これはアプリケーションに対して透過的であり、コードの変更は一切不要です。
暗号化の範囲:テーブルスペースファイル、トランザクションログファイル、データベースバックアップなどの静的データを保護します。
キーの管理:クラウドキーマネジメントサービス(KMS、Key Management Service)と連携し、暗号化キーを安全に保存・管理します。
効率的かつ透過的:ユーザーやアプリケーションにとって「意識することなく利用できる」仕組みであり、操作への影響はありません。
OceanBase 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機能を有効にした後、更新シナリオでのパフォーマンスに影響はありませんが、その他のシナリオではわずかなパフォーマンス低下が見られます。
操作手順
TDEを有効にした後、現在のページで暗号化テーブルスペースを作成し、その後暗号化テーブルのDDL操作を実行することでデータの暗号化を行えます。暗号化テーブルのDDL:CREATE TABLE t1 (id1 int,id2 int) TABLESPACE sectest_ts1;。既存のデータテーブルをテーブル暗号化スペースに追加した場合は、追加後にフルコンパクションを1回実行して、データを永続化してください。
TDE透過的データ暗号化の操作を有効にする
OceanBase Cloudコンソールにログインします。
左側のナビゲーションバーでクラスターリストをクリックし、対象のクラスターを選択して、クラスターワークベンチページに移動します。
左側のナビゲーションバーでセキュリティ設定をクリックします。
セキュリティ設定画面で、TDE透過的データ暗号化タブをクリックします。このタブにはTDEの設定リストが表示され、以下の操作を実行できます:
操作列の暗号化を有効にするをクリックして、TDE機能を有効にします。TDE機能を有効にすると無効にできなくなり、パフォーマンスにも一定の影響があるため、慎重に操作してください。
ポップアップウィンドウで使用するキーのタイプを選択します。
OceanBase Cloudが提供するキーを使用します。
クラウドベンダーが提供するキーを使用します。
Huawei Cloud、AWS、およびAlibaba Cloudの自社チャネルのインスタンスでは、まずクラウドベンダーアカウントに紐づける必要があります。操作の詳細については、クラウドベンダーアカウントの認可を参照してください。
Alibaba Cloudマーケットチャネルのインスタンスでは、Alibaba Cloudアカウントに紐づけた後、該当するキーを使用できます。
キーのタイプを選択したら、開始をクリックして、TDE機能の有効化を完了します。
テーブルスペースの暗号化を作成する
操作列のテーブルスペースの作成をクリックします。
テーブルスペースの作成ポップアップウィンドウで、暗号化テーブルスペース名と暗号化アルゴリズムを入力します。
OKをクリックして、テーブルスペースを作成します。
暗号化テーブルスペースの作成が完了したら、データ開発機能やその他のコマンドラインツールを使用して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;