このトピックでは、ApsaraDB RDS for MySQLインスタンスに透過的データ暗号化 (TDE) を設定する方法について説明します。 TDEを使用して、データファイルに対してリアルタイムのI/O暗号化および復号化を実行したり、データベースレイヤーで保存中のデータ暗号化を実行したりして、攻撃者がデータベースをバイパスして機密情報をストレージから読み取ることを防ぐことができます。 これにより、データベース内の機密データのセキュリティが効果的に向上します。
背景情報
TDEは、データベース層で保存データ暗号化を実行します。 これにより、潜在的な攻撃者がデータベースをバイパスしてストレージから機密情報を読み取ることを防ぎます。 TDEは、テーブルスペース内の機密情報、ディスク上のデータ、およびバックアップデータを暗号化します。 また、TDEは、データベース認証に合格したアプリケーションとユーザーの情報とデータを平文に自動的に復号化します。 テーブルスペース内の機密情報を読み取りたいオペレーティングシステムユーザー、およびバックアップデータとオンディスクデータを読み取りたい不正ユーザーの場合、TDEは平文情報とデータへのアクセスを禁止します。
RDSインスタンスでTDEを有効にすると、データはディスクに書き込まれる前に暗号化され、ディスクからメモリに読み取られるときに復号化されます。 インスタンス内のデータファイルのサイズは増加しません。 アプリケーションの設定を変更することなく、TDEを使用できます。
TDEに使用されるキーは、key Management Service (KMS) によって作成および管理されます。 ApsaraDB RDSは、暗号化に必要なキーまたは証明書を提供しません。 KMSへのアクセスをApsaraDB RDSに許可する必要があります。 この方法では、自動的に生成されたキーまたはカスタムキーを使用できます。
TDEを有効にすると、暗号化アルゴリズムはMySQLのバージョンによって異なります。 次のリストは、MySQLバージョンと暗号化アルゴリズムの間のマッピングを示しています。
MySQL 8.0とMySQL 5.7: AES_256_CBC
MySQL 5.6: AES_128_ECB
前提条件
RDSインスタンスは、次のMySQLバージョンとRDSエディションのいずれかを実行します。
ローカルディスクを使用したRDS High-availability EditionでのMySQL 8.0 (マイナーエンジンバージョンの20191015以降)
ローカルディスクを使用したRDS High-availability EditionでのMySQL 5.7 (マイナーエンジンバージョンの20191015以降)
MySQL 5.6
説明マイナーエンジンバージョンの更新方法の詳細については、「ApsaraDB RDS For MySQLインスタンスのマイナーエンジンバージョンの更新」をご参照ください。
キー管理サービス (KMS) が有効化されています。 KMSがアクティブ化されていない場合、TDEを有効にするとKMSをアクティブ化できます。
使用上の注意
インスタンスの安定性を確保するため、RDSインスタンスのマイナーエンジンバージョンを最新バージョンに更新することを推奨します。 読み取り専用RDSインスタンスがRDSインスタンスにアタッチされている場合、RDSインスタンスのマイナーエンジンバージョンとすべての読み取り専用RDSインスタンスを最新バージョンに更新することを推奨します。 詳細については、「ApsaraDB RDS For MySQLインスタンスのマイナーエンジンバージョンの更新」をご参照ください。
TDEを有効にすると、RDSインスタンスが再起動し、インスタンスの切り替えが発生します。 影響を最小限に抑えるため、RDSインスタンスを再起動する前にビジネスを手配することを推奨します。 作業は慎重に行ってください。 インスタンスの切り替えの影響の詳細については、「インスタンスの切り替えの影響」をご参照ください。
TDEを有効にすると、TDEを無効にすることはできません。
TDEを有効にすると、TDEに使用されるキーを変更することはできません。
TDEを有効にした後、オンプレミスデータベースにデータを復元する場合は、RDSインスタンス上のデータを復号化する必要があります。 詳細については、「テーブルの復号化」をご参照ください。
TDEを有効にすると、RDSインスタンスのCPU使用率が大幅に増加します。
TDEに既存のカスタムキーを使用する場合は、次の情報に注意してください。
キーを無効にするか、キーを削除する計画を設定するか、キーマテリアルを削除すると、キーは使用できなくなります。
キーを取り消した後にRDSインスタンスが再起動すると、RDSインスタンスは使用できなくなります。
Alibaba CloudアカウントまたはAliyunSTSAssumeRoleAccessポリシーがアタッチされているアカウントを使用する必要があります。
説明KMSの詳細については、「」をご参照ください。 KMSとは何ですか?
自動生成されたキーを使用してTDEを有効にする
- [インスタンス] ページに移動します。 上部のナビゲーションバーで、RDSインスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
表示されるページの左側のナビゲーションウィンドウで、セキュリティコントロール をクリックします。
[TDE] タブで、[TDEステータス] をオンにします。
表示されるダイアログボックスで、[自動生成キーを使用] を選択し、[OK] をクリックします。
説明このメソッドで使用されるキー暗号化キー (KEK) は、KMSによって提供されるサービスキーです。
既存のカスタムキーを使用してTDEを有効にする
- [インスタンス] ページに移動します。 上部のナビゲーションバーで、RDSインスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
表示されるページの左側のナビゲーションウィンドウで、セキュリティコントロール をクリックします。
[TDE] タブで、[TDEステータス] をオンにします。
表示されるダイアログボックスで、[既存のカスタムキーを使用] を選択し、[OK] をクリックします。
説明カスタムキーがない場合は、[KMSコンソールに移動] をクリックしてCMKを作成し、独自のキーマテリアルをインポートする必要があります。 詳細については、CMK の作成をご参照ください。
テーブルを暗号化する
RDSインスタンスのテーブルを暗号化する場合は、RDSインスタンスにログインし、次のステートメントを実行する必要があります。
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インスタンスのデータを暗号化されたバックアップファイルからコンピュータに復元する前に、ファイルを復号化する必要があります。 詳細については、「テーブルの復号化」をご参照ください。
参考資料
SSLを使用してRDSインスタンスへの接続を暗号化する方法の詳細については、「SSL暗号化機能の設定」をご参照ください。
KMSの詳細については、「」をご参照ください。 KMSとは何ですか?
関連する操作
操作 | 説明 |
RDSインスタンスのTDEを有効にします。 RDSインスタンスのTDEを有効にするには、TDEStatusパラメーターを有効に設定し、ビジネス要件に基づいて他のパラメーターを設定する必要があります。 |