Amazon Relational Database Service
ユーザーガイド (API バージョン 2014-10-31)

Microsoft SQL Server Transparent Data Encryption のサポート

Amazon RDS は、透過的なデータ暗号化 (TDE) を使用して、Microsoft SQL Server を実行する DB インスタンスのデータの暗号化をサポートします。TDE は、ストレージへの書き込み前に自動的にデータを暗号化し、ストレージからのデータの読み取り時に自動的にデータを復号します。

Amazon RDS は、次の SQL Server のバージョンおよびエディションの TDE をサポートしています。

  • SQL Server 2017 Enterprise Edition

  • SQL Server 2016 Enterprise Edition

  • SQL Server 2014 Enterprise Edition

  • SQL Server 2012 Enterprise Edition

  • SQL Server 2008 R2 Enterprise Edition

RDS SQL Server DB インスタンスに対して透過的なデータ暗号化 (TDE) を有効にするには、DB インスタンスに関連付けられている RDS オプショングループで TDE オプションを指定します。

SQL Server の Transparent Data Encryption では、2 層キーアーキテクチャを使用して暗号化キーを管理できます。証明書は、データベースマスターキーから生成され、データ暗号化キーの保護に使用されます。データベース暗号化キーは、ユーザーデータベースのデータの実際の暗号化と復号に使用されます。Amazon RDS​ では、データベースマスターキーと TDE 証明書がバックアップおよび管理されます。いくつかのセキュリティ規格に準拠するために、Amazon RDS にはマスターキーの定期的な自動ローテーションが実装されています。

透過的なデータ暗号化 (TDE) は、機密データの暗号化が必要なシナリオで使用されます。たとえば、データファイルとバックアップをサードパーティーに提供したり、セキュリティ関連の規制遵守の問題に対処したりすることができます。Model データベースや Model データベースなど、SQL Server のシステムデータベースを暗号化することはできません。

Transparent Data Encryption の詳細はこのガイドの範囲外ですが、暗号化アルゴリズムとキーのそれぞれのセキュリティ上の長所と短所を理解しておく必要はあります。SQL Server の透過的なデータ暗号化の詳細については、Microsoft のウェブサイトで「透過的なデータ暗号化 (TDE)」を参照してください。

TDE オプションを含むオプショングループに DB インスタンスがすでに関連付けられているかどうかを調べる必要があります。DB インスタンスが関連付けられているオプショングループを表示するには、RDS コンソール、AWS CLI コマンド (describe-db-instance)、または API オペレーション DescribeDBInstances を使用します。

SQL Server DB インスタンスに対して Transparent Data Encryption を有効にするプロセスは、以下のとおりです。

  1. TDE が有効になっているオプショングループに DB インスタンスが関連付けられていない場合は、2 つのオプションから選択できます。オプショングループを作成して TDE オプションを追加するか、オプションを追加するように関連するオプショングループを変更することもできます。オプショングループの作成または変更の詳細については、「オプショングループを使用する」を参照してください。オプショングループへのオプションの追加の詳細については、「オプショングループにオプションを追加する」を参照してください。

  2. [TDE] オプションを含むオプショングループに DB インスタンスを関連付けます。オプショングループへの DB インスタンスの関連付けの詳細については、「Microsoft SQL Server データベースエンジンを実行する DB インスタンスの変更」を参照してください。

TDE オプションがオプショングループに追加されると、暗号化プロセスに使用される証明書が Amazon RDS によって生成されます。その後、証明書を使用して、DB インスタンス上のデータベースのデータを暗号化する SQL ステートメントを実行できます。以下の例では、RDS によって生成された RDSTDECertificateName という証明書を使用して、customerDatabase というデータベースを暗号化しています。

---------- Enabling TDE ------------- -- Find a RDSTDECertificate to use USE [master] GO SELECT name FROM sys.certificates WHERE name LIKE 'RDSTDECertificate%' GO USE [customerDatabase] GO -- Create DEK using one of the certificates from the previous step CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE [RDSTDECertificateName] GO -- Enable encryption on the database ALTER DATABASE [customerDatabase] SET ENCRYPTION ON GO -- Verify that the database is encrypted USE [master] GO SELECT name FROM sys.databases WHERE is_encrypted = 1 GO SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys GO

TDE を使用した SQL Server データベースの暗号化にかかる時間は、いくつかの要因によって異なります。たとえば、DB インスタンスのサイズ、PIOPS がインスタンスに対して有効になっているかどうか、データの量などの要因があります。

TDE オプションは、永続オプションのため、すべての DB インスタンスおよびバックアップとオプショングループとの関連付けが解除されない限り、オプショングループから削除することはできません。オプショングループに TDE オプションを追加したら、そのオプショングループは、TDE を使用する DB インスタンスにのみ関連付けることができます。オプショングループの永続オプションの詳細については、「オプショングループの概要」を参照してください。

TDE オプションは永続オプションであるため、オプショングループおよび関連付けられている DB インスタンスとの間に競合が生じることがあります。以下の場合に、オプショングループおよび関連付けられている DB インスタンスとの間に競合が生じます。

  • TDE オプションを含む現在のオプショングループを、TDE オプションを含まないオプショングループに置き換えた。

  • DB スナップショットから復元した先の新しい DB インスタンスに TDE オプションを含むオプショングループがない。このシナリオの詳細については、「オプショングループに関する考慮事項」を参照してください。

DB インスタンスに対して TDE を無効にするには、まず、オブジェクトを復号するかドロップすることで、DB インスタンスに暗号化されたオブジェクトが残っていないようにします。暗号化されたオブジェクトが DB インスタンスに残っている場合は、DB インスタンスに対して TDE を無効にすることはできません。コンソールを使用してオプショングループから TDE オプションを削除すると、処理中であることがコンソールに示されます。さらに、オプショングループが暗号化された DB インスタンスまたは DB スナップショットに関連付けられている場合は、エラーイベントが作成されます。

以下の例では、customerDatabase というデータベースから TDE 暗号化を削除しています。

------------- Removing TDE ---------------- USE [customerDatabase] GO -- Disable encryption on the database ALTER DATABASE [customerDatabase] SET ENCRYPTION OFF GO -- Wait until the encryption state of the database becomes 1. The state is 5 (Decryption in progress) for a while SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys GO -- Drop the DEK used for encryption DROP DATABASE ENCRYPTION KEY GO -- Alter to SIMPLE Recovery mode so that your encrypted log gets truncated USE [master] GO ALTER DATABASE [customerDatabase] SET RECOVERY SIMPLE GO

すべてのオブジェクトが暗号化されていないと、TDE オプションを使用せずにオプショングループに関連付けられるように DB インスタンスを変更するか、オプショングループから TDE オプションを削除できます。