透過的なデータ暗号化 (TDE) は、データファイルがディスクに書き込まれる際にリアルタイムで暗号化し、メモリに読み込まれる際に復号します。アプリケーションの変更は不要です。セキュリティコンプライアンス要件を満たすために保存時の暗号化が必要な場合、ストレージへの直接アクセスから機密性の高いデータベース内容を保護する場合、またはバックアップファイルをサードパーティと安全に共有する場合は、TDE を使用してください。
TDE を有効化しても、データファイルのサイズは増加しません。
仕組み
TDE は階層化されたキー階層を使用してデータを保護します。
オペレーティングシステム層:Windows Data Protection API (DPAPI) は、暗号化キーとアルゴリズムを透過的に管理する Windows 組み込み API です。DPAPI は TDE キー階層のルートであり、サービスマスターキー (SMK) を保護します。
SQL Server インスタンス層:サービスマスターキー (SMK) は、SQL Server インスタンスの作成時に生成されます。SMK はデータベース エンジンのルート暗号化キーとして機能し、DPAPI によって保護されます。SMK はデータベースマスターキー (DMK) を暗号化します。
データベース層:TDE は master データベースとユーザーデータベースの両方で動作します:
-
master データベース:TDE を有効化すると、master データベースに DMK と証明書が作成されます。DMK は SMK によって暗号化される対称キーです。証明書は、ユーザーデータベースに保存されるデータベース暗号化キー (DEK) を暗号化します。
-
ユーザーデータベース:各ユーザーデータベースには、master データベースの証明書によって暗号化された DEK が保存されます。SQL Server がデータを読み書きする際、証明書の秘密鍵を使用してメモリ上で DEK を復号し、その後 DEK を使用してデータファイルをリアルタイムで暗号化または復号します。この処理はアプリケーションとユーザーに対して透過的です。
master データベースに TDE 証明書が存在しない場合、SQL Server は DEK を復号できません。つまり、TDE が有効なデータベースのバックアップファイルを復元したり、別のインスタンスにデータベースをアタッチしたりできません。
前提条件
開始する前に、次の事項を確認してください:
-
RDS インスタンスが次のすべての条件を満たしていること:
-
インスタンスが汎用または専用のインスタンスファミリーに属していること。共有パフォーマンスインスタンスはサポートされていません。詳細については、「Instance families」をご参照ください。
-
課金方法がサブスクリプションまたは従量課金であること。サーバーレスインスタンスはサポートされていません。詳細については、「Serverless ApsaraDB RDS for SQL Server instances」をご参照ください。
-
インスタンスが次のいずれかの SQL Server バージョンを実行していること:SQL Server 2019 SE、SQL Server 2022 SE、SQL Server 2025 SE、または SQL Server EE。
-
インスタンスが読み取り専用 RDS インスタンスではないこと。
-
-
Alibaba Cloud アカウントで、RDS インスタンスの Key Management Service (KMS) へのアクセスが承認されていること。詳細については、「Authorize ApsaraDB RDS to access KMS」をご参照ください。
-
(Bring Your Own Key (BYOK) のみ必須) 証明書ファイル、秘密鍵ファイル、パスワードが準備されていること。
制限事項と使用上の注意
制限事項
RDS インスタンスで TDE を有効化すると、次の制限が適用されます:
-
インスタンスのマイナーエンジンバージョンを更新できません。
-
インスタンスが Premium Local SSD を使用しており、SQL Server 2008 R2 を実行している場合、SQL Server 2008 R2 から SQL Server 2012 または SQL Server 2016 へのメジャーエンジンバージョンのアップグレードはできません。
-
バックアップファイルを使用して新しい RDS インスタンスにデータを復元できますが、RDS インスタンスを再構築することや、別の既存 RDS インスタンスにデータを復元することはできません。
-
Alibaba Cloud のサービスキーを使用している場合、TDE を有効化した後に生成されたバックアップファイルを使用して、オンプレミスデバイスにデータを復元することはできません。
パフォーマンスへの影響
TDE は CPU 負荷が高く、I/O 操作を伴います。Microsoft の公式ドキュメントによると、次のとおりです:
-
一般的な条件では、全体的なパフォーマンスが約 3%~5% 低下します。
-
アクセスされるデータの大半がメモリ上にある場合、影響は最小限です。
-
CPU 使用率がすでに高い場合、パフォーマンス低下が約 28% に達する可能性があります。
TDE の有効化
-
Instances ページに移動します。上部メニューで RDS インスタンスが存在するリージョンを選択し、インスタンス ID をクリックします。
-
左側のナビゲーションペインで、[データセキュリティ] をクリックします。
-
[TDE] タブで、無効の横にあるスイッチをオンにします。
TDE は、すべての前提条件を満たしている場合にのみ有効化できます。
-
ダイアログボックスで、キータイプを選択し、[OK] をクリックします。
Alibaba Cloud によって自動生成されるキーの使用
[未選択のデータベース] セクションからデータベースを選択し、
アイコンをクリックして [選択済みのデータベース] セクションに移動してから、[確認] をクリックします。
独自の SQL Server キー (BYOK) による暗号化
-
証明書ファイルと秘密鍵ファイルを OSS バケットにアップロードします。詳細については、「Upload objects」をご参照ください。
[独自の SQL Server キーで暗号化] ウィザードの [ファイルを OSS にアップロード] ステップでは、次の推奨事項にご注意ください。
-
単一ファイルの場合は、OSS コンソールからアップロードすることを推奨します。
-
複数ファイルの場合は、レジューム可能なアップロードを使用し、OSS OpenAPI を呼び出してアップロードすることを推奨します。
-
クライアントツールを使用して OSS にファイルをアップロードすることもできます。
-
-
[次のステップ] をクリックして、以下のパラメーターを設定します。
パラメーター 説明 [OSS Bucket] 証明書ファイルと秘密鍵ファイルをアップロードした OSS バケット。 [Certificate] OSS バケットにアップロードした証明書ファイル。 [Private key] OSS バケットにアップロードした秘密鍵ファイル。 [Password] SQL Server キーのパスワード。 -
[次のステップ] をクリックして、[データベースの承認] ステップに進みます。
-
[未選択のデータベース] セクションからデータベースを選択し、
アイコンをクリックして [選択済みのデータベース] セクションに移動させ、[確認] をクリックします。
TDE の無効化
TDE を無効化するとすべてのデータが復号されます。これはリソース負荷の高い操作であり、CPU、メモリ、I/O リソースを大きく消費します。復号時間はデータ量に比例します。たとえば、約 200 GB のデータを含むデータベースの場合、復号に 40 分以上かかることがあります。
-
[特定のデータベース] に対して TDE を無効にするには、[選択済みデータベース] セクションからそれらのデータベースを削除します。
-
[インスタンス全体] の TDE を無効にするには、[選択済みデータベース] セクションからすべてのデータベースを削除します。これにより、インスタンスの TDE が無効になります。
手順:
-
Instances ページに移動します。上部メニューで RDS インスタンスが存在するリージョンを選択し、インスタンス ID をクリックします。
-
左側のナビゲーションペインで、[データセキュリティ] をクリックします。
-
[TDE] タブをクリックし、[TDE 設定] をクリックします。
-
[選択済みデータベース] セクションからデータベースを選択し、
アイコンをクリックしてデータベースを [未選択データベース] セクションに移動し、次に [OK] をクリックします。
TDE を無効化した後の復号の進捗を確認するには、次の SQL 文を実行します:
SELECT
db_name(database_id) AS DatabaseName,
encryption_state,
percent_complete
FROM
sys.dm_database_encryption_keys;
次のステップ
-
API を呼び出して TDE を有効化するには、「ModifyDBInstanceTDE」をご参照ください。
-
SSL を使用して RDS インスタンスへの接続を暗号化するには、「Configure the SSL encryption feature」をご参照ください。