保存データの暗号化に関するセキュリティおよびコンプライアンス要件を満たすために、透過的データ暗号化 (TDE) 機能を使用してデータファイルのリアルタイムで暗号化および復号を行うことを推奨します。TDE はデータベース層でデータを暗号化することにより、攻撃者がデータベースをバイパスしてストレージから直接機密情報を読み取ることを防ぎます。
概要
はじめに: TDE を有効にすると、データはディスクに書き込まれる前に暗号化され、ディスクからメモリに読み込まれる際に復号されます。認証されたアプリケーションやユーザーは、アプリケーションのコードや設定を変更することなく、透過的にデータにアクセスできます。一方、OS ユーザーを含む権限のないユーザーは、テーブルスペースファイル、ディスク、またはバックアップファイルからプレーンテキストの機密データを読み取ることはできません。
キー: TDE 暗号化で使用されるキーは、Key Management Service (KMS) によって生成および管理されます。RDS は暗号化に必要なキーや証明書を提供しません。Alibaba Cloud によって自動的に生成されたキーを使用するか、独自のカスタマーマスターキー (CMK) を使用するよう RDS に権限を付与することができます。
暗号化アルゴリズム: TDE を有効にすると、データベースエンジンのバージョンによって使用される暗号化アルゴリズムが異なります。詳細は以下の表をご参照ください。
データベースエンジンバージョン | サポートされている暗号化アルゴリズム | アルゴリズムの変更方法 |
MySQL 5.6 |
| アルゴリズムは変更できません。 |
MySQL 5.7, 8.0 |
|
|
innodb_encrypt_algorithm パラメーターの変更は、リスクの高い操作です。このパラメーターは、暗号化されたテーブルやログを含む、インスタンス内のすべての暗号化データの暗号化および復号アルゴリズムに影響します。このパラメーターをデータの実際の暗号化アルゴリズムと異なる値に設定すると、復号に失敗します。innodb_encrypt_algorithm パラメーターはコンソールに表示されません。このパラメーターを変更するには、サポートチケットを起票してください。
前提条件
TDE を使用するには、インスタンスが次の条件を満たしている必要があります:
データベースエンジンバージョン: MySQL 8.0、5.7、または 5.6 (いずれのバージョンも、マイナーエンジンバージョンが 20191015 以降である必要があります)。
エディション: High-availability Edition または Cluster Edition。
Key Management Service (KMS) が有効化されていること。KMS を有効化していない場合、TDE を有効にする際に有効化を促すメッセージが表示されます。
Alibaba Cloud アカウントを使用して、RDS に KMS へのアクセスを権限付与していること。
注意事項
TDE を有効にすると、無効化やキーの変更はできなくなり、CPU 使用率も大幅に増加します。
スイッチオーバー: TDE を有効にすると、インスタンスが再起動され、スイッチオーバーが発生します。インスタンスは約 30 秒間利用できなくなります。この操作はオフピーク時に実行し、アプリケーションに自動再接続メカニズムがあることを確認することを推奨します。
アプリケーションの変更は不要: TDE を有効にしても、データファイルのサイズは増加しません。アプリケーションのコードや設定を変更する必要はありません。
データ復元の制限: TDE を有効にすると、クロスリージョンリストアはサポートされません。データをローカルマシンに復元するには、まずデータを復号化する必要があります。
設定変更の制限: TDE を有効にすると、インスタンスのエディションを High-availability Edition から Cluster Edition に変更することはできません。
CMK の制限: 既存の CMK を使用する場合は、次の点に注意してください:
CMK は対称キーである必要があります。非対称キーはサポートされていません。
KMS インスタンスの期限切れや削除、キーの無効化、キー削除のスケジューリング、またはキーマテリアルの削除が発生した場合、キーは使用不能となり、ApsaraDB RDS インスタンス上のデータは回復不能になります。
権限付与を取り消してから RDS インスタンスを再起動すると、インスタンスは利用できなくなります。
マイナーエンジンバージョンのアップグレード: インスタンスの安定性を確保するために、プライマリインスタンスおよびすべての読み取り専用インスタンスのマイナーエンジンバージョンを最新バージョンに更新することを推奨します。
TDE の有効化
Alibaba Cloud によって自動的に生成されたキーまたは独自の CMK を使用して TDE を有効にできます。この操作を行うには、Alibaba Cloud アカウントまたは AliyunSTSAssumeRoleAccess 権限を持つアカウントを使用する必要があります。
インスタンス ページに移動します。上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。次に、対象のインスタンスを見つけ、インスタンス ID をクリックします。
左側のナビゲーションウィンドウで、[データセキュリティ] をクリックし、[TDE] タブを選択します。
セクションで、[TDE ステータス] を有効にします。
キーのタイプを選択します:
自動生成キーを使用: このオプションは KMS のサービスキーを使用します。
既存のカスタマーマスターキーを使用: 既存の CMK を選択します。対称キーのみがサポートされています。
説明キーが利用できない場合は、[KMS コンソールに移動] をクリックしてキーを作成し、独自のキーマテリアルをインポートします。キーを作成する際、[暗号化キータイプ] には [対称キー] を選択します。
[OK] をクリックします。
TDE を使用したデータの暗号化と復号化
データの暗号化
データベースにログオンし、次のコマンドを実行してテーブルを暗号化します。
TDE を有効にしても、既存のテーブルは自動的に暗号化されません。暗号化したい各テーブルに対して、手動で次のコマンドを実行する必要があります。
MySQL 5.6
ALTER TABLE <tablename> engine=innodb,block_format=encrypted;MySQL 5.7 または 8.0
ALTER TABLE <tablename> encryption='Y';
データの復号化
データベースにログオンし、次のコマンドを実行してテーブルを復号化します。
MySQL 5.6
ALTER TABLE <tablename> engine=innodb,block_format=default;MySQL 5.7 または 8.0
ALTER TABLE <tablename> encryption='N';
よくある質問
Q1: TDE を有効にした後でも、Navicat のようなツールで ApsaraDB for MySQL インスタンスに接続できますか?
A: はい、接続できます。TDE は認証された接続に対して透過的に動作します。Navicat のようなデータベースツールは権限のあるユーザーとして接続するため、データにアクセスするとメモリ内で自動的に復号されます。クライアントツール側での変更は必要ありません。
Q2: TDE が有効な ApsaraDB for MySQL インスタンスから別の RDS インスタンスにデータを移行するにはどうすればよいですか?
A: 追加の手順なしで、標準的な方法を使用してデータを移行できます。データ移行ツールは認証されたユーザーとしてソースデータベースに接続し、データベースエンジンによって透過的に復号化された後のデータを読み取ります。移行プロセスは、暗号化されていないインスタンスの場合と同じです。
Q3: TDE で暗号化されたテーブルをクエリすると、なぜデータがプレーンテキストで表示されるのですか?
A: これは TDE の期待される動作です。TDE は、使用中のデータ (メモリ内) ではなく、保存データ (ディスク上) を保護します。
認可されたユーザーが暗号化されたテーブルをクエリすると、データベースエンジンは結果を返す前にメモリ内でデータを自動的に復号化します。
ディスク上の実際のデータファイルとその後のバックアップは暗号化されたままです。これにより、誰かが物理ストレージやバックアップファイルにアクセスした場合でも、機密情報への不正アクセスを防ぐことができます。
暗号化されたバックアップは、ローカル環境へ直接復元することはできません。ローカルに復元するには、まずソースデータベースでデータを復号してからバックアップを作成する必要があります。
関連ドキュメント
さまざまなデータベース暗号化技術の比較については、「さまざまなデータベース暗号化技術の比較」をご参照ください。
転送中のデータを暗号化するには、SSL 暗号化を有効にします。詳細については、「クラウド証明書を使用して SSL 暗号化を迅速に有効にする」をご参照ください。
キー関連の操作の詳細については、「Key Management Service」をご参照ください。
関連 API
API 操作 | 説明 |
RDS インスタンスで TDE を有効にする場合は、TDEStatus パラメーターを Enabled に設定します。必要に応じて他のパラメーターを設定します。 |