メニュー
Amazon Relational Database Service
ユーザーガイド (API Version 2014-10-31)

Microsoft SQL Server Transparent Data Encryption のサポート

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

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

  • SQL Server 2016 Enterprise Edition

  • SQL Server 2014 Enterprise Edition

  • SQL Server 2012 Enterprise Edition

  • SQL Server 2008 R2 Enterprise Edition

SQL Server を実行する DB インスタンスに対して Transparent Data Encryption を有効にするには、DB インスタンスに関連付けられている Amazon RDS オプショングループで [TDE] オプションを指定します。

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

Transparent Data Encryption は、データファイルとバックアップが第三者によって取得される場合や、セキュリティ関連の規制遵守の問題に対処する必要があるときに、機密データを暗号化する必要のあるシナリオで使用されます。Model データベースや Model データベースなど、SQL Server のシステムデータベースを暗号化することはできません。

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

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

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

  1. [TDE] オプションが有効になっているオプショングループに DB インスタンスが関連付けられていない場合は、オプショングループを作成して [TDE] オプションを追加するか、関連付けられているオプショングループを変更して [TDE] オプションを追加する必要があります。オプショングループの作成または変更の詳細については、「オプショングループを使用する」を参照してください。オプショングループへのオプションの追加の詳細については、「オプショングループにオプションを追加する」を参照してください。

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

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

Copy
---------- 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] オプションを含まないオプショングループに置き換えた。

  • TDE を使用している DB インスタンスから作成したポイントインタイム DB スナップショットから、TDE を使用しない DB インスタンスを復元した。TDE を使用しない DB インスタンスのオプショングループは、TDE を使用する復元された DB インスタンスと競合するようになります。

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

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

Copy
------------- 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 will be 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] オプションを削除できます。

パフォーマンスに関する考慮事項

SQL Server DB インスタンスのパフォーマンスは、Transparent Data Encryption の使用によって影響を受けることがあります。

暗号化されていないデータベースが DB インスタンスにあり、そのインスタンスに暗号化されたデータベースが 1 つでもあれば、暗号化されていないデータベースのパフォーマンスも低下することがあります。したがって、暗号化されたデータベースと暗号化されていないデータベースは別々の DB インスタンスに維持することをお勧めします。

暗号化の性質上、データベースとトランザクションログのサイズは、暗号化されていないデータベースのサイズよりも大きくなります。その結果、無料で割り当てられているバックアップ領域のサイズを超えることがあります。TDE の性質上、パフォーマンスヒットも避けることはできません。高パフォーマンスと TDE の両方が必要な場合は、そのニーズを満たせるように、TDE によるパフォーマンスへの影響を評価してください。プロビジョンド IOPS を使用しており、DB インスタンスクラスが M3.Large 以上の場合、パフォーマンスへの影響はあまりありません。