このトピックでは、ApsaraDB RDS for MySQLインスタンスに透過的データ暗号化 (TDE) を設定する方法について説明します。 TDEを使用して、データファイルに対してリアルタイムのI/O暗号化および復号化を実行したり、データベースレイヤーで保存中のデータ暗号化を実行したりして、攻撃者がデータベースをバイパスして機密情報をストレージから読み取ることを防ぐことができます。 これにより、データベース内の機密データのセキュリティが効果的に向上します。 データベース暗号化テクノロジの詳細については、「異なるデータベース暗号化テクノロジの比較」をご参照ください。
背景情報
概要: データベース層で保存データの暗号化を実行します。 これにより、潜在的な攻撃者がデータベースをバイパスしてストレージから機密情報を読み取ることを防ぎます。 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
パラメーターの値を変更する前に、すべての暗号化データを復号し、暗号化アルゴリズムを変更してから、データを再度暗号化することを推奨します。
前提条件
RDSインスタンスのRDSエディション、ストレージタイプ、およびデータベースエンジンバージョンは、次の要件を満たす必要があります。
ローカルディスクを使用したRDS High-availability EditionでのMySQL 8.0 (マイナーエンジンバージョンの20191015以降)
ローカルディスクを使用したRDS 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を有効にした後にオンプレミスデータベースにデータを復元する場合は、RDSインスタンスのデータを復号化する必要があります。 詳細については、「データの復号化」をご参照ください。
マイナーエンジンバージョン: RDSインスタンスのマイナーエンジンバージョンを最新バージョンに更新して、インスタンスの安定性を確保することを推奨します。 読み取り専用RDSインスタンスがRDSインスタンスにアタッチされている場合、RDSインスタンスのマイナーエンジンバージョンとすべての読み取り専用RDSインスタンスを最新バージョンに更新することを推奨します。 詳細については、「マイナーエンジンバージョンの更新」をご参照ください。
カスタムキー: TDEに既存のカスタムキーを使用する場合は、次の項目に注意してください。
キーを無効にするか、キーを削除する計画を設定するか、キーマテリアルを削除すると、キーは使用できなくなります。
キーを取り消した後にRDSインスタンスが再起動すると、RDSインスタンスは使用できなくなります。
Alibaba Cloudアカウントまたは
AliyunSTSAssumeRoleAccess
権限を持つアカウントを使用する必要があります。
説明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とは何ですか?」をご参照ください。
関連する API 操作
API 操作 | 説明 |
RDSインスタンスのTDEを有効にします。 RDSインスタンスのTDEを有効にするには、TDEStatusパラメーターを有効に設定し、ビジネス要件に基づいて他のパラメーターを設定する必要があります。 |