ApsaraDB RDS for SQL Serverは、データセキュリティを強化するために透過的データ暗号化 (TDE) をサポートしています。 TDEを使用すると、Alibaba CloudまたはBring Your Own keys (BYOK) によって自動的に生成されたキーをデータ暗号化に使用できます。 TDEを有効にした後にApsaraDB RDS for SQL Serverインスタンスをバックアップすると、バックアップファイルは自動的に暗号化され、データの復元に直接使用することはできません。 このトピックでは、RDSインスタンスのTDEを有効にする方法と、さまざまな暗号化シナリオでTDEが有効になっているRDSインスタンスのデータをオンプレミスデバイスに復元する方法について説明します。 TDEを有効にし、データの暗号化にBYOKを使用する場合は、シナリオ2の方法に基づいて、独自の証明書とパスワードを使用してデータを復元できます。
TDE暗号化
TDEは、データベースに対して保存データ暗号化を実行します。 これにより、攻撃者がデータベースをバイパスしてストレージから機密情報を読み取ることができなくなります。 TDEは、認証されたアプリケーションおよびユーザが、復号化のためにアプリケーションコードまたは構成を変更する必要なく、平文アプリケーションデータにアクセスできるようにする。 ただし、TDEは、テーブルスペース内の機密情報を読み取ろうとするオペレーティングシステム (OS) ユーザーや、バックアップデータやディスク上のデータを読み取ろうとする権限のないユーザーが平文データにアクセスすることを防ぎます。 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が有効になっているデータベースのバックアップファイルを復元したり、データベースインスタンスに追加したりすることはできません。
TDEの有効化または無効化
TDE を有効化する
前提条件
RDSインスタンスが次の条件を満たしていること。
RDSインスタンスは、汎用または専用インスタンスファミリーに属しています。 共有インスタンスファミリーはサポートされていません。 詳細については、「インスタンスタイプの概要」をご参照ください。
RDSインスタンスの課金方法は、サブスクリプションまたは従量課金です。 サーバーレスインスタンスはサポートされていません。 詳細については、「Serverless ApsaraDB RDS For SQL Serverインスタンス」をご参照ください。
RDSインスタンスは、SQL Serverバージョン、SQL Server 2019 SE、SQL Server 2022 SE、およびSQL Server EEのいずれかを実行します。
説明読み取り専用RDSインスタンスはこの機能をサポートしていません。
Bring Your Own Keys (BYOK) を使用する場合は、暗号化および復号化に使用する証明書、秘密鍵、およびパスワードを事前に取得してください。
Alibaba Cloudアカウントを使用して、RDSインスタンスにKey Management Service (KMS) へのアクセスを許可します。 詳細については、「ApsaraDB RDSによる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インスタンスの再構築」をご参照ください。
手順
[インスタンス] ページに移動します。 上部のナビゲーションバーで、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;シナリオ1: Alibaba Cloudによって自動的に生成されたキーを使用してRDSインスタンスのデータをオンプレミスデバイスに復元するTDEを有効にした後に生成されたバックアップファイルを使用する
ステップ1: TDEの無効化
RDSインスタンスの [データセキュリティ] ページで、[保護されたデータベース] セクションからバックアップするデータベースを削除します。
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;ステップ2: 完全バックアップの実行
TDEを無効にすると、暗号化されたトランザクションログがいくつか存在します。 バックアップファイルをダウンロードすると、バックアップファイルは暗号化され、データの復元には使用できません。 TDEを無効にした後、完全バックアップを実行する必要があります。 詳細については、「SQL Server 2008 Enterprise Editionのデータベース暗号化」をご参照ください。
手動で完全バックアップを実行できます。 詳細については、「手動バックアップの設定」をご参照ください。
手動でバックアップを作成する場合、ビジネス要件に基づいて、RDSインスタンス全体のデータをバックアップしたり、RDSインスタンス上の特定のデータベースをバックアップしたりできます。 物理バックアップ方法を使用する場合にのみ、特定のデータベースをバックアップできます。
ステップ3: バックアップファイルをダウンロードし、バックアップファイルを使用してオンプレミスデバイスにデータを復元
RDSインスタンスの [バックアップと復元] ページで、最新の完全バックアップファイルをオンプレミスデバイスにダウンロードします。 次に、. bakファイルをダウンロードしてデータを復元します。 詳細については、「データバックアップファイルとログバックアップファイルのダウンロード」をご参照ください。
シナリオ2: BYOKを使用してRDSインスタンスのデータをオンプレミスデバイスに復元するTDEを有効にした後に生成されたバックアップファイルを使用する
シナリオ1の方法に基づいて、必要なデータベースのTDEを無効にできます。 次に、完全バックアップを実行し、完全バックアップファイルをオンプレミスのデバイスにダウンロードします。 別のデータ復元方法について説明します。 ビジネス要件に基づいてメソッドを使用できます。
ステップ1: MEKの作成
カスタムパスワードを使用して、RDSインスタンスのmasterデータベースが作成されているサーバーにマスター暗号化キー (MEK) を作成します。 カスタムパスワードは、自己管理型SQL serverデータベースが作成されるサーバーでMEKを作成するために使用されるパスワードとは異なる場合があります。
開始する前に、クライアントを使用してRDSインスタンスに接続する必要があります。 詳細については、「ApsaraDB RDS For SQL Serverインスタンスへの接続」をご参照ください。
次のSQL文を実行して、RDSインスタンスが存在するサーバーにMEKが作成されているかどうかを確認します。 MEKが存在する場合、ステップ2に進む。 MEKが存在しない場合、MEKが作成される。
USE master;
GO
IF NOT EXISTS (SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = 101)
BEGIN
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'YourPassword'; --Specify the custom password.
END;ステップ2: 証明書の作成
TDEを有効にして証明書を作成し、RDSインスタンスが存在するサーバーに証明書を適用するときに指定された証明書と秘密鍵を使用します。
USE MASTER;
GO
CREATE CERTIFICATE TDE_Certificate
FROM FILE = 'C:\cert\tde_cert.cer' -- Change the value to the actual path to the created certificate.
WITH PRIVATE KEY (FILE = 'C:\cert\tde_privatekey.pvk', -- Change the value to the actual path to the private key.
DECRYPTION BY PASSWORD='YourTDEPassword ' ); -- Change the value to the actual password.ステップ3: バックアップファイルをダウンロードし、バックアップファイルを使用してオンプレミスデータベースにデータを復元
On theバックアップと復元RDSインスタンスのページで、必要なバックアップセットを見つけ、バックアップセットをオンプレミスデバイスにダウンロードし、. bakファイルをダウンロードしてデータを復元します。 詳細については、「データバックアップファイルとログバックアップファイルのダウンロード」をご参照ください。
オンプレミスデータベースにデータを復元すると、次のエラーが報告されることがあります: デバイス '<backup file name>' 上のメディアファミリが正しく形成されていません。 SQL Serverはこのメディアファミリーを処理できません。 これは、TDEが有効になっているRDS for SQL Serverインスタンスに対して生成された圧縮バックアップファイルが、以前のマイナーエンジンバージョンを実行しているRDS for SQL Serverインスタンスと互換性がないためです。 これらの圧縮バックアップファイルを使用して、以前のマイナーエンジンバージョンを実行しているオンプレミスRDS for SQL Serverインスタンスにデータを復元すると、このエラーが報告されます。 詳細については、「SQL Server公式ドキュメント」をご参照ください。
このエラーを回避するには、オンプレミスデータベースのメジャーエンジンバージョンとマイナーエンジンバージョンがRDS for SQL Serverインスタンスと同じであることを確認します。 RDS for SQL Serverインスタンスのエンジンバージョンは、コンソールのインスタンスの [基本情報] ページで確認できます。
関連ドキュメント
ApsaraDB RDS For SQL Serverでサポートされているその他のデータ暗号化方法の詳細については、「データセキュリティと暗号化」をご参照ください。