このトピックでは、ApsaraDB RDS for MySQL インスタンスの透過データ暗号化(TDE)を構成する方法について説明します。 TDE を使用すると、データファイルに対してリアルタイムの I/O 暗号化と復号を実行し、データベース層で保存時データ暗号化を実行して、攻撃者がデータベースをバイパスしてストレージから機密情報を読み取るのを防ぐことができます。 これにより、データベース内の機密データのセキュリティが効果的に向上します。 データベース暗号化テクノロジーの詳細については、「さまざまなデータベース暗号化テクノロジーの比較」をご参照ください。
背景情報
概要: TDE は、データベース層で保存時データ暗号化を実行します。 これにより、潜在的な攻撃者がデータベースをバイパスしてストレージから機密情報を読み取るのを防ぎます。 RDS インスタンスで TDE を有効にすると、データはディスクに書き込まれる前に暗号化され、ディスクからメモリに読み取られるときに復号されます。 TDE を使用すると、認証されたアプリケーションとユーザーは、アプリケーションコードや構成を変更することなく、プレーンテキストのアプリケーションデータにアクセスできます。 TDE は、表領域内の機密情報を読み取ろうとするオペレーティングシステム(OS)ユーザーと、バックアップデータおよびディスク上のデータを読み取ろうとする権限のないユーザーがプレーンテキストデータにアクセスするのを防ぎます。
キー: TDE に使用されるキーは、Key Management Service(KMS)によって作成および管理されます。 ApsaraDB RDS は、暗号化に必要なキーまたは証明書を提供しません。 自動生成されたキーを使用できます。 カスタムキーを使用し、ApsaraDB RDS に KMS へのアクセスを承認することもできます。
暗号化アルゴリズム: TDE を有効にした後、暗号化アルゴリズムは MySQL のバージョンによって異なります。 次の表は、MySQL のバージョンと暗号化アルゴリズム間のマッピングを示しています。
データベースエンジン | サポートされている暗号化アルゴリズム | 構成方法 |
MySQL 5.6 |
| サポートされていません |
MySQL 5.7 および MySQL 8.0 |
|
|
innodb_encrypt_algorithm
パラメーターの設定により、暗号化されたテーブルとログを含む、インスタンス内のすべての暗号化データの暗号化アルゴリズムと復号アルゴリズムが決まります。 パラメーターの設定が実際の暗号化アルゴリズムと一致しない場合、解析は失敗します。 注意して進めてください。 innodb_encrypt_algorithm
パラメーターの値を変更する前に、すべての暗号化データを復号し、暗号化アルゴリズムを変更してから、データを再度暗号化することをお勧めします。innodb_encrypt_algorithm
注意:
前提条件
RDS インスタンスの RDS エディション、ストレージタイプ、およびデータベースエンジンのバージョンは、次のいずれかの要件を満たしている必要があります。
RDS インスタンスが、プレミアムローカル SSD とクラウドディスクを搭載した RDS Cluster Edition または High-availability Edition で MySQL 8.0(マイナーエンジンバージョン 20191015 以降)を実行している
RDS インスタンスが、プレミアムローカル SSD とクラウドディスクを搭載した RDS Cluster Edition または High-availability Edition で MySQL 5.7(マイナーエンジンバージョン 20191015 以降)を実行している
RDS インスタンスが MySQL 5.6 を実行している
説明RDS インスタンスでクラウドディスクを使用している場合は、クラウドディスク暗号化機能を使用して RDS インスタンス上のデータを暗号化することもできます。 詳細については、「ディスク暗号化」をご参照ください。
マイナーエンジンバージョンの更新方法の詳細については、「マイナーエンジンバージョンの更新」をご参照ください。
Alibaba Cloud アカウントを使用して、ApsaraDB RDS に KMS へのアクセスを承認します。 詳細については、「ApsaraDB RDS for MySQL インスタンスに KMS へのアクセスを承認する」をご参照ください。
KMS がアクティブ化されています。 KMS がアクティブ化されていない場合は、TDE を有効にする際に KMS をアクティブ化できます。
使用上の注意
TDE を有効にした後、TDE を無効にしたり、TDE に使用されるキーを変更したりすることはできません。 この場合、RDS インスタンスの CPU 使用率が大幅に増加します。
インスタンスのスイッチオーバー: TDE が有効になっている場合、RDS インスタンスが再起動し、インスタンスのスイッチオーバーがトリガーされます。 TDE 機能はオフピーク時に有効にし、アプリケーションが RDS インスタンスに自動的に再接続するように構成することをお勧めします。 インスタンスのスイッチオーバーの影響の詳細については、「インスタンスのスイッチオーバーの影響」をご参照ください。
コードの変更: TDE を有効にした後、データファイルのサイズは増加しません。 アプリケーションコードや構成を変更することなく、TDE を使用できます。
データの復元: インスタンスで TDE を有効にした後、インスタンスのデータを別のリージョンの別のインスタンスに復元することはできません。 TDE を有効にした後にデータをオンプレミス データベースに復元する場合は、RDS インスタンス上のデータを復号する必要があります。 詳細については、「データの復号」をご参照ください。
マイナーエンジンバージョン: インスタンスの安定性を確保するために、RDS インスタンスのマイナーエンジンバージョンを最新バージョンに更新することをお勧めします。 読み取り専用の RDS インスタンスが RDS インスタンスに接続されている場合は、RDS インスタンスとすべての読み取り専用の RDS インスタンスのマイナーエンジンバージョンを最新バージョンに更新することをお勧めします。 詳細については、「マイナーエンジンバージョンの更新」をご参照ください。
構成の変更: RDS High-availability Edition を実行する RDS インスタンスで TDE を有効にした場合、インスタンスを RDS Cluster Edition にアップグレードすることはできません。
カスタムキー: 既存のカスタムキーを TDE に使用する場合は、次の点に注意してください。
キーを無効にするか、キーを削除する計画を構成するか、キーマテリアルを削除すると、キーは使用できなくなります。 対応する KMS インスタンスの有効期限が切れた場合、または削除された場合も、キーは使用できなくなります。
キーを取り消した後に RDS インスタンスが再起動すると、RDS インスタンスは使用できなくなります。
Alibaba Cloud アカウント、または
AliyunSTSAssumeRoleAccess
権限を持つアカウントを使用する必要があります。キーまたは対応する KMS インスタンスが使用できなくなると、RDS インスタンスのデータを復元できません。
説明KMS とは何ですか?KMS の詳細については、 をご参照ください。
TDE を有効にする
自動生成されたキーを使用して TDE を有効にすることができます。 カスタムキーを使用し、ApsaraDB RDS に KMS へのアクセスを承認することもできます。
[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDS インスタンスを見つけて、インスタンスの ID をクリックします。
左側のナビゲーションウィンドウで、セキュリティコントロール をクリックします。
[TDE] タブで、[TDE ステータス] をオンにします。
表示されるダイアログボックスで、必要な暗号鍵タイプを選択します。
[自動生成キーを使用する]: このメソッドで使用されるキー暗号化キー(KEK)は、KMS によって提供されるサービスキーです。
[既存のカスタムキーを使用する]: カスタムキーが使用されます。 カスタムキーがない場合は、[KMS コンソールに移動] をクリックしてカスタムキーを作成し、独自のキーマテリアルをインポートする必要があります。 詳細については、「CMK を作成する」をご参照ください。
[OK] をクリックします。
TDE を使用してデータを暗号化および復号する
データを暗号化する
RDS インスタンス上のテーブルを暗号化する場合は、RDS インスタンスにログインし、必要な文を実行する必要があります。
TDE を有効にした後、既存のデータテーブルは自動的に暗号化されません。 データを暗号化するには、必要な文を実行する必要があります。
MySQL 5.6
alter table <tablename> engine=innodb,block_format=encrypted;
MySQL 5.7 または MySQL 8.0
alter table <tablename> encryption='Y';
データを復号する
RDS インスタンス上のテーブルを復号する場合は、RDS インスタンスにログインし、必要な文を実行する必要があります。
MySQL 5.6
alter table <tablename> engine=innodb,block_format=default;
MySQL 5.7 または MySQL 8.0
alter table <tablename> encryption='N';
よくある質問
TDE を有効にした後、Navicat などの一般的なデータベースツールを使用できますか?
はい、TDE を有効にした後、Navicat などの一般的なデータベースツールを使用できます。
TDE を有効にした後、RDS インスタンスから別の RDS インスタンスにデータを移行できますか?
はい、TDE を有効にした後、RDS インスタンスから別の RDS インスタンスにデータを移行できます。
TDE を有効にした後、データがプレーンテキストのままなのはなぜですか?
TDE を有効にすると、データは暗号文で保存されます。 ただし、データがクエリされると、復号されてプレーンテキストでメモリにロードされます。 TDE はバックアップファイルを暗号化してデータの漏洩を防ぎます。 暗号化されたバックアップファイルからコンピューターに RDS インスタンスのデータを復元する前に、ファイルを復号する必要があります。
関連情報
RDS インスタンスへの接続を暗号化する場合は、SSL 暗号化機能を有効にすることができます。 詳細については、「SSL 暗号化機能の構成」をご参照ください。
KMS の詳細については、KMS とは をご参照ください。
関連操作
操作 | 説明 |
RDS インスタンスの TDE を有効にします。 RDS インスタンスの TDE を有効にするには、TDEStatus パラメーターを 有効 に設定し、ビジネス要件に基づいて他のパラメーターを構成する必要があります。 |