セキュリティコンプライアンスや保存データ暗号化などのシナリオでは、ApsaraDB RDS for SQL Serverインスタンスに透過的データ暗号化 (TDE) 機能を使用することを推奨します。 このトピックでは、TDEを使用してデータファイルに対してリアルタイムのI/O暗号化および復号化を実行し、機密データがディスクに書き込まれる前に暗号化され、ディスクからメモリに読み取られるときに復号化されるようにする方法について説明します。 これにより、攻撃者がデータベースをバイパスしてストレージから機密情報を読み取ることができなくなり、データベース内の機密データのセキュリティが向上します。 RDSインスタンスでTDEを有効にしても、インスタンス内のデータファイルのサイズは増加しません。 アプリケーションの設定を変更することなく、TDEを使用できます。
TDEのしくみ
このセクションでは、TDEがコンピュータシステムのさまざまなレベルでどのように機能するかについて説明します。
オペレーティングシステム層
Microsoft Data Protection API (DPAPI) は、Windowsオペレーティングシステムの組み込みAPIであり、データの暗号化または復号化に使用されます。 DPAPIは、暗号化キーとアルゴリズムに集中することから解放されます。
DPAPIはTDE階層のルートです。 DPAPIは、オペレーティングシステム層のキー階層とデータベースインスタンスのサービスマスターキー (SMK) を保護します。
SQL Serverインスタンス層
SQL Serverでは、SMKはデータベースエンジンで使用される高度な暗号化キーです。 SMKはSQL Serverエンジンのルートキーで、SQL Serverインスタンスの作成時に生成されます。 SMKは、低レベル鍵およびデータを暗号化するために使用される。
SMKはDPAPIによって保護され、データベースマスターキー (DMK) を暗号化するために使用されます。
データベース層
TDEは、データベース層のマスターデータベースとユーザーデータベースで実行されます。
マスターデータベース
RDSインスタンスのTDEを有効にすると、マスターデータベースにDMKが作成され、証明書の作成に使用されます。 DMKと証明書はマスターデータベースに保存されます。
DMKは、データベース内の機密情報を暗号化するために使用される対称鍵です。 DMKはSMKによって暗号化され、証明書の暗号化に使用されます。 マスターデータベースの証明書は、ユーザーデータベースのデータベース暗号化キー (DEK) を暗号化するために使用されます。
ユーザーデータベース
DEKは、ユーザーデータベースに作成および保存される暗号化キーであり、TDEと一緒にのみ機能します。
DEKは、マスターデータベースの証明書によって暗号化されます。 DEKが格納されるUserデータベース内のデータは、DEKによって暗号化される。 DEKは、証明書によって暗号化され、ユーザデータベースに格納される。 DEKが暗号化されていない場合、DEKはメモリに格納される。 データがデータベースに書き込まれたりデータベースから読み取られたりすると、SQL Serverは証明書の秘密鍵を使用して暗号化されたDEKを復号化し、復号化されたDEKをメモリにロードしてデータファイルをリアルタイムで暗号化または復号化します。 このプロセスは、アプリケーションおよびユーザに対して透過的である。
マスターデータベースに対してTDEの証明書が生成されない場合、DEKは復号化できません。 そのため、TDEが有効になっているデータベースのバックアップファイルを復元したり、データベースインスタンスに追加したりすることはできません。
前提条件
RDSインスタンスは、次のいずれかのデータベースエンジンバージョンを実行します。
SQL Server 2019 SE、SQL Server 2022 SE、およびSQL Server EE
RDSインスタンスは、汎用または専用インスタンスファミリーに属しています。 共有インスタンスファミリーはサポートされていません。
説明読み取り専用RDSインスタンスはこの機能をサポートしていません。
Bring Your Own Keys (BYOK) を使用する場合は、暗号化および復号化に使用する証明書、秘密鍵、およびパスワードを事前に取得してください。
Alibaba Cloudアカウントを使用して、RDSインスタンスにKey Management Service (KMS) へのアクセスを許可します。 詳細については、「ApsaraDB RDS For MySQLインスタンスのKMSへのアクセス許可」をご参照ください。
使用上の注意
Alibaba CloudがRDSインスタンスに対して提供するサービスキーを使用し、RDSインスタンスに対してTDEを有効にする場合、TDE機能を有効にした後に生成されたバックアップファイルを使用して、RDSインスタンスのデータをオンプレミスデバイスに復元することはできません。
TDEを有効にすると、データベースのパフォーマンスが影響を受けます。
パフォーマンスへの影響: Microsoftの公式ドキュメントに基づいて、全体的なパフォーマンスは約3% から5% に低下します。
メモリ内データへの影響: アクセスされたデータのほとんどがメモリに格納されている場合、パフォーマンスはわずかに影響を受けます。
CPU使用率とI/Oパフォーマンスへの影響: TDEの実行はCPU集約型のプロセスであり、I/O操作が含まれます。
サーバーまたはアプリケーションのI/O負荷が低く、CPU使用率が低い場合、パフォーマンスにわずかな影響があります。 アプリケーションのCPU使用率が高い場合、約28% のパフォーマンス損失が発生します。
サーバーまたはアプリケーションのI/O負荷が高いが、CPU使用率が十分に低い場合、パフォーマンスにわずかな影響があります。
制限事項
RDSインスタンスでTDEが有効になっている場合、ローカルディスクを含むRDSインスタンスをSQL Server 2008 R2からSQL Server 2012またはSQL Server 2016にアップグレードしたり、マイナーエンジンバージョンを更新したりすることはできません。 詳細については、「SQL Server 2008 R2からSQL Server 2012またはSQL Server 2016へのRDSインスタンスのアップグレード」および「マイナーエンジンバージョンの更新」をご参照ください。
RDSインスタンスに対してTDEが有効になっている場合、RDSインスタンスのバックアップファイルを使用してRDSインスタンスを再構築することはできません。 詳細については、「RDSインスタンスの再構築」をご参照ください。
TDE を有効化する
[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
左側のナビゲーションウィンドウで、セキュリティコントロール をクリックします。
TDE タブで、無効 の横にあるスイッチをオンにします。
説明RDSインスタンスが「前提条件」セクションで指定されたすべての条件を満たしている場合にのみ、TDEを有効にできます。
表示されるダイアログボックスで、キーの種類を選択し、[OK] をクリックします。
自動生成キーの使用
[選択していないデータベース] セクションからデータベースを選択し、アイコンをクリックして選択したデータベースを [選択したデータベース] セクションに移動し、[確認] をクリックします。
独自の SQL Server キーの使用
証明書ファイルと秘密鍵ファイルをOSSバケットにアップロードします。 詳細については、「オブジェクトのアップロード」をご参照ください。
次へ をクリックし、次のパラメーターを設定します。
パラメーター
説明
ОSS バケット
証明書ファイルと秘密鍵ファイルが格納されているOSSバケット。
証明書
OSSバケットにアップロードした証明書ファイル。
秘密鍵
OSSバケットにアップロードした秘密鍵ファイル。
パスワード
独自のSQL Serverキーのパスワード。
次へ をクリックして、[認証データベース] ステップに進みます。
[選択していないデータベース] セクションからデータベースを選択し、アイコンをクリックして選択したデータベースを [選択したデータベース] セクションに移動し、[確認] をクリックします。
TDEを無効にする
1つ以上のデータベースのTDEを無効にする場合は、[選択したデータベース] セクションからデータベースを削除できます。
RDSインスタンスのTDEを無効にする場合は、[選択したデータベース] セクションからRDSインスタンス上のすべてのデータベースを削除する必要があります。 次に、システムはRDSインスタンスのTDEを無効にします。
[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
左側のナビゲーションウィンドウで、セキュリティコントロール をクリックします。
TDE タブをクリックします。 次に、TDE 設定 をクリックします。
[選択したデータベース] セクションからデータベースを選択し、アイコンをクリックして、選択したデータベースを [未選択のデータベース] セクションに移動し、[OK] をクリックします。
TDEを無効にすると、最後のバックアップの完了待ち、データの復号化、ログの記録、メタデータの更新など、複数のデータベース操作が関与します。 データ復号化は、リソースを大量に消費する操作であり、多数のCPU、メモリ、およびI/Oリソースを消費する。 データの解読にかかる時間は、データベースのデータ量に比例します。 大量のデータが含まれているデータベースのTDEを無効にする場合は、長時間を要します。 たとえば、データベースに約200 GBのデータが含まれている場合、TDEを無効にするには40分以上かかる場合があります。
TDEを無効にした後のデータ復号化の進行状況を表示する場合は、次のSQL文を実行します。
SELECT
db_name(database_id) AS DatabaseName,
encryption_state,
percent_complete
FROM
sys.dm_database_encryption_keys;
関連ドキュメント
API操作を呼び出してTDEを有効にする方法の詳細については、「ModifyDBInstanceTDE」をご参照ください。
SSL暗号化を使用してRDSインスタンスへの接続を暗号化する方法の詳細については、「SSL暗号化機能の設定」をご参照ください。