

# SQL サーバーの透過的なデータの暗号化サポート
<a name="Appendix.SQLServer.Options.TDE"></a>

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

Amazon RDS は、次の SQL Server のバージョンおよびエディションの TDE をサポートしています。
+ SQL Server 2022: Standard および Enterprise Edition
+ SQL Server 2019: Standard および Enterprise Edition
+ SQL Server 2017 Enterprise Edition
+ SQL Server 2016 Enterprise Edition

**注記**  
RDS for SQL Server は、読み取り専用データベースの TDE をサポートしていません。

SQL Server の 透過的データ暗号化では、2 階層キーアーキテクチャを使用して暗号化キーの管理を行っています。証明書は、データベースマスターキーから生成され、データ暗号化キーの保護に使用されます。データベース暗号化キーにより、ユーザーデータベースのデータの実際の暗号化と復号が実行されます。データベースマスターキーと TDE 証明書は、Amazon RDS によりバックアップおよび管理されます。

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

透過的データ暗号化の詳細はこのガイドの範囲外ですが、暗号化アルゴリズムとキーのそれぞれのセキュリティ上の長所と短所を理解しておく必要があります。SQL Server の透過的データ暗号化の詳細については、Microsoft のドキュメントで「[透過的データ暗号化 (TDE)](http://msdn.microsoft.com/en-us/library/bb934049.aspx)」を参照してください。

**Topics**
+ [RDS for SQL Server の TDE をオンにする](#TDE.Enabling)
+ [RDS for SQL Server でのデータの暗号化](TDE.Encrypting.md)
+ [RDS for SQL Server での TDE 証明書のバックアップと復元](TDE.BackupRestoreRDS.md)
+ [オンプレミスデータベースの TDE 証明書のバックアップと復元](TDE.BackupRestoreOnPrem.md)
+ [RDS for SQL Server の TDE をオフにする](TDE.Disabling.md)

## RDS for SQL Server の TDE をオンにする
<a name="TDE.Enabling"></a>

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

1. DB インスタンスが、TDE オプションが含まれているオプショングループにすでに関連付けられているかどうかを確認します。DB インスタンスが関連付けられているオプショングループを表示するには、RDS コンソール、AWS CLI コマンド ([describe-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html))、または API オペレーション [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html) を使用します。

1.  TDE がオンになっているオプショングループに DB インスタンスが関連付けられていない場合は、2 つのオプションから選択できます。オプショングループを作成して TDE オプションを追加するか、オプションを追加するように関連するオプショングループを変更することもできます。
**注記**  
RDS コンソールの場合、このオプション名は `TRANSPARENT_DATA_ENCRYPTION` です。AWS CLI と RDS API の場合、名前は `TDE` です。

   オプショングループの作成または変更の詳細については、「[オプショングループを使用する](USER_WorkingWithOptionGroups.md)」を参照してください。オプショングループへのオプションの追加の詳細については、「[オプショングループにオプションを追加する](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)」を参照してください。

1.  [TDE] オプションを持つオプショングループに DB インスタンスを関連付けます。オプショングループへの DB インスタンスの関連付けの詳細については、「[Amazon RDS DB インスタンスを変更する](Overview.DBInstance.Modifying.md)」を参照してください。

### オプショングループに関する考慮事項
<a name="TDE.Options"></a>

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

TDE オプションは永続オプションであるため、オプショングループおよび関連付けられている DB インスタンスとの間に競合が生じることがあります。次の状況で競合が生じることがあります。
+ TDE オプションを含む現在のオプショングループを、TDE オプションを含まないオプショングループに置き換えた。
+ DB スナップショットから復元した先の新しい DB インスタンスに TDE オプションを含むオプショングループがない。このシナリオの詳細については、「[オプショングループの考慮事項](USER_CopySnapshot.md#USER_CopySnapshot.Options)」を参照してください。

### SQL Server のパフォーマンスに関する考慮事項
<a name="TDE.Perf"></a>

透過的データ暗号化の使用は、SQL Server DB インスタンスのパフォーマンスに影響を与えることがあります。

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

# RDS for SQL Server でのデータの暗号化
<a name="TDE.Encrypting"></a>

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

以下の例では、RDS によって生成された `RDSTDECertificateName` という証明書を使用して、`myDatabase` というデータベースを暗号化しています。

```
 1. ---------- Turning on TDE -------------
 2. 
 3. -- Find an RDS TDE certificate to use
 4. USE [master]
 5. GO
 6. SELECT name FROM sys.certificates WHERE name LIKE 'RDSTDECertificate%'
 7. GO
 8. 
 9. USE [myDatabase]
10. GO
11. -- Create a database encryption key (DEK) using one of the certificates from the previous step
12. CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256
13. ENCRYPTION BY SERVER CERTIFICATE [RDSTDECertificateName]
14. GO
15. 
16. -- Turn on encryption for the database
17. ALTER DATABASE [myDatabase] SET ENCRYPTION ON
18. GO
19. 
20. -- Verify that the database is encrypted
21. USE [master]
22. GO
23. SELECT name FROM sys.databases WHERE is_encrypted = 1
24. GO
25. SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys
26. GO
```

TDE を使用した SQL Server データベースの暗号化にかかる時間は、いくつかの要因によって異なります。例えば、DB インスタンスのサイズ、プロビジョンド IOPS ストレージがインスタンスに対して有効になっているかどうか、データ量などです。

# RDS for SQL Server での TDE 証明書のバックアップと復元
<a name="TDE.BackupRestoreRDS"></a>

RDS for SQL Server には、TDE 証明書のバックアップ、復元、および削除のためのストアドプロシージャが用意されています。RDS for SQL Server には、復元されたユーザー TDE 証明書を表示するための機能も用意されています。

ユーザー TDE 証明書は、オンプレミスで TDE がオンになっている RDS for SQL Server にデータベースを復元するために使用されます。これらの証明書には、プレフィックス `UserTDECertificate_` が付いています。データベースを復元した後、それらを使用できるようにする前に、RDS は、TDE を オンにしたデータベースを変更し、RDS で生成された TDE 証明書を使用するようにします。これらの証明書には、プレフィックス `RDSTDECertificate` が付いています。

ユーザー TDE 証明書は、`rds_drop_tde_certificate` ストアドプロシージャを使って削除しない限り、RDS for SQL Server DB インスタンスに残ります。(詳しくは、「[復元された TDE 証明書の削除](#TDE.BackupRestoreRDS.Drop)」を参照してください。)

ユーザー TDE 証明書を使用して、移行元 DB インスタンスから他のデータベースを復元できます。復元するデータベースは同じ TDE 証明書を使用し、TDE がオンになっている必要があります。同じ証明書を再度インポート (復元) する必要はありません。

**Topics**
+ [前提条件](#TDE.BackupRestoreRDS.Prereqs)
+ [制限事項](#TDE.Limitations)
+ [TDE 証明書のバックアップ](#TDE.BackupRestoreRDS.Backup)
+ [TDE 証明書の復元](#TDE.BackupRestoreRDS.Restore)
+ [復元された TDE 証明書の表示](#TDE.BackupRestoreRDS.Show)
+ [復元された TDE 証明書の削除](#TDE.BackupRestoreRDS.Drop)

## 前提条件
<a name="TDE.BackupRestoreRDS.Prereqs"></a>

RDS for SQL Server で TDE 証明書をバックアップまたは復元する前に、次のタスクを実行してください。最初の 3 つについては、「[ネイティブバックアップおよび復元のセットアップ](SQLServer.Procedural.Importing.Native.Enabling.md)」を参照してください。

1. バックアップおよび復元するファイルを保存するための Amazon S3 汎用バケットまたはディレクトリバケットを作成します。

   データベースバックアップと TDE 証明書のバックアップには、別々のバケットを使用することをお勧めします。

1. ファイルのバックアップと復元用の IAM ロールを作成します。

   IAM ロールは、AWS KMS key のユーザーおよび管理者の両方である必要があります。

   ディレクトリバケットを使用する場合、ディレクトリバケットで [ネイティブバックアップおよび復元用の IAM ロールの手動作成](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM) に必要なアクセス許可以外、追加のアクセス許可は必要ありません。

   S3 リソースを使用する場合、[ネイティブバックアップおよび復元用の IAM ロールの手動作成](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM) に必要なアクセス許可に加えて、IAM ロールには次のアクセス許可も必要です。
   + S3 バケットリソースの `s3:GetBucketAcl`、`s3:GetBucketLocation`、および`s3:ListBucket`

1. DB インスタンスのオプショングループに追加された `SQLSERVER_BACKUP_RESTORE` オプション。

   これは、`TRANSPARENT_DATA_ENCRYPTION` (`TDE`) オプションへの追加です。

1. 対称暗号化 KMS キーであることを確認します。次のオプションがあります。
   + アカウントに既存の KMS キーがある場合は、それを使用できます。これ以上の操作は不要です。
   + アカウントに既存の対称暗号化 KMS キーがない場合は、*AWS Key Management Serviceデベロッパーガイド*の「[キーの作成](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)」の手順に従って KMS キーを作成します。

1. Amazon S3 統合を有効にして、DB インスタンスと Amazon S3 の間でファイルを転送します。

   Amazon S3 統合を有効にするための詳細については、「[Amazon RDS for SQL Server DB インスタンスと Amazon S3 の統合](User.SQLServer.Options.S3-integration.md)」を参照してください。

   ディレクトリバケットは S3 統合ではサポートされていないことにご注意ください。このステップは、[オンプレミスデータベースの TDE 証明書のバックアップと復元](TDE.BackupRestoreOnPrem.md) にのみ必要です。

## 制限事項
<a name="TDE.Limitations"></a>

ストアドプロシージャを使用して TDE 証明書をバックアップおよび復元する場合、次の制限があります。
+ `SQLSERVER_BACKUP_RESTORE` および `TRANSPARENT_DATA_ENCRYPTION` (`TDE`) オプションはどちらも DB インスタンスに関連付けられたオプショングループに追加されている必要があります。
+ TDE 証明書のバックアップと復元は、マルチ AZ DB インスタンスではサポートされていません。
+ TDE 証明書のバックアップおよび復元タスクのキャンセルはサポートされていません。
+ RDS for SQL Server DB インスタンス上の他のデータベースの TDE 暗号化にユーザー TDE 証明書を使用することはできません。これを使用して復元できるのは、TDE がオンになっていて、同じ TDE 証明書を使用する移行元 DB インスタンスから他のデータベースのみです。
+ 削除できるのはユーザー TDE 証明書のみです。
+ RDS でサポートされているユーザー TDE 証明書の最大数は 10 です。数が 10 を超える場合は、未使用の TDE 証明書を削除して、もう一度試してください。
+ 証明書名を空または null にすることはできません。
+ 証明書を復元する場合、証明書名にキーワード `RDSTDECERTIFICATE` を含めることはできません。また、プレフィックス `UserTDECertificate_` で始まる必要があります。
+ `@certificate_name` パラメータには、a ～ z、0 ～ 9、@、\$1、\$1、下線 (\$1) の文字のみを含めることができます。
+ `@certificate_file_s3_arn` のファイル拡張子は .cer (大文字小文字を区別しない) にする必要があります。
+ `@private_key_file_s3_arn` のファイル拡張子は .pvk (大文字小文字を区別しない) にする必要があります。
+ プライベートキーファイルの S3 メタデータには、`x-amz-meta-rds-tde-pwd` タグが含まれる必要があります。詳細については、「[オンプレミスデータベースの TDE 証明書のバックアップと復元](TDE.BackupRestoreOnPrem.md)」を参照してください。
+ RDS for SQL Server は、TDE のクロスアカウントキーの使用をサポートしていません。

## TDE 証明書のバックアップ
<a name="TDE.BackupRestoreRDS.Backup"></a>

TDE 証明書をバックアップするには、`rds_backup_tde_certificate` ストアドプロシージャを使用します。これには、以下の構文があります。

```
EXECUTE msdb.dbo.rds_backup_tde_certificate
    @certificate_name='UserTDECertificate_certificate_name | RDSTDECertificatetimestamp',
    @certificate_file_s3_arn='arn:aws:s3:::bucket_name/certificate_file_name.cer',
    @private_key_file_s3_arn='arn:aws:s3:::bucket_name/key_file_name.pvk',
    @kms_password_key_arn='arn:aws:kms:region:account-id:key/key-id',
    [@overwrite_s3_files=0|1];
```

以下のパラメータは必須です。
+ `@certificate_name` — バックアップする TDE 証明書の名前。
+ `@certificate_file_s3_arn` — Amazon S3 の証明書バックアップファイルの送信先 Amazon リソースネーム (ARN)。
+ `@private_key_file_s3_arn` — TDE 証明書を保護するぷらいべーとキーファイルの送信先 S3 ARN。
+ `@kms_password_key_arn` — プライベートキーのパスワードの暗号化に使用される対称 KMS キーの ARN。

次のパラメータはオプションです。
+ `@overwrite_s3_files` — S3 内の既存の証明書および秘密キーファイルを上書きするかどうかを示します。
  + `0` – 既存のファイルを上書きしません。この値はデフォルト値です。

    設定 `@overwrite_s3_files` を 0 にすると、ファイルが既に存在している場合はエラーが返されます。
  + `1` – バックアップファイルではない場合でも、指定された名前を持つ既存のファイルを上書きします。

**Example TDE 証明書のバックアップ**  

```
EXECUTE msdb.dbo.rds_backup_tde_certificate
    @certificate_name='RDSTDECertificate20211115T185333',
    @certificate_file_s3_arn='arn:aws:s3:::TDE_certs/mycertfile.cer',
    @private_key_file_s3_arn='arn:aws:s3:::TDE_certs/mykeyfile.pvk',
    @kms_password_key_arn='arn:aws:kms:us-west-2:123456789012:key/AKIAIOSFODNN7EXAMPLE',
    @overwrite_s3_files=1;
```

## TDE 証明書の復元
<a name="TDE.BackupRestoreRDS.Restore"></a>

ユーザー TDE 証明書を復元 (インポート) するには `rds_restore_tde_certificate` ストアドプロシージャを使用します。これには、以下の構文があります。

```
EXECUTE msdb.dbo.rds_restore_tde_certificate
    @certificate_name='UserTDECertificate_certificate_name',
    @certificate_file_s3_arn='arn:aws:s3:::bucket_name/certificate_file_name.cer',
    @private_key_file_s3_arn='arn:aws:s3:::bucket_name/key_file_name.pvk',
    @kms_password_key_arn='arn:aws:kms:region:account-id:key/key-id';
```

以下のパラメータは必須です。
+ `@certificate_name` — 復元する TDE 証明書の名前。名前はプレフィックス `UserTDECertificate_` で開始する必要があります。
+ `@certificate_file_s3_arn` — TDE 証明書を復元するために使用されるバックアップファイルの S3 ARN。
+ `@private_key_file_s3_arn` — 復元する TDE 証明書のプライベートキーバックアップファイルの S3 ARN。
+ `@kms_password_key_arn` — プライベートキーのパスワードの暗号化に使用される対称 KMS キーの ARN。

**Example TDE 証明書の復元**  

```
EXECUTE msdb.dbo.rds_restore_tde_certificate
    @certificate_name='UserTDECertificate_myTDEcertificate',
    @certificate_file_s3_arn='arn:aws:s3:::TDE_certs/mycertfile.cer',
    @private_key_file_s3_arn='arn:aws:s3:::TDE_certs/mykeyfile.pvk',
    @kms_password_key_arn='arn:aws:kms:us-west-2:123456789012:key/AKIAIOSFODNN7EXAMPLE';
```

## 復元された TDE 証明書の表示
<a name="TDE.BackupRestoreRDS.Show"></a>

復元 (インポート) したユーザー TDE 証明書を表示するには `rds_fn_list_user_tde_certificates` 関数を使用します。これには、以下の構文があります。

```
SELECT * FROM msdb.dbo.rds_fn_list_user_tde_certificates();
```

出力は以下のようになります。すべての列がここに表示されるわけではありません。


|  |  |  |  |  |  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| name | certificate\$1id | principal\$1id | pvt\$1key\$1encryption\$1type\$1desc | issuer\$1name | cert\$1serial\$1number | thumbprint | subject | start\$1date | expiry\$1date | pvt\$1key\$1last\$1backup\$1date | 
| UserTDECertificate\$1tde\$1cert | 343 | 1 | ENCRYPTED\$1BY\$1MASTER\$1KEY | AnyCompany Shipping | 79 3e 57 a3 69 fd 1d 9e 47 2c 32 67 1d 9c ca af | 0x6BB218B34110388680B FE1BA2D86C695096485B5 | AnyCompany Shipping | 2022-04-05 19:49:45.0000000 | 2023-04-05 19:49:45.0000000 | NULL | 

## 復元された TDE 証明書の削除
<a name="TDE.BackupRestoreRDS.Drop"></a>

使用していない復元された (インポートされた) ユーザー TDE 証明書を削除するには、`rds_drop_tde_certificate` ストアドプロシージャを使用します。これには、以下の構文があります。

```
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_certificate_name';
```

以下のパラメータは必須です。
+ `@certificate_name`— 削除する TDE 証明書の名前。

復元された (インポートされた) TDE 証明書のみを削除できます。RDS で作成された証明書は削除できません。

**Example TDE 証明書の削除**  

```
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_myTDEcertificate';
```

# オンプレミスデータベースの TDE 証明書のバックアップと復元
<a name="TDE.BackupRestoreOnPrem"></a>

オンプレミスデータベースの TDE 証明書をバックアップし、後でそれらを RDS for SQL Server に復元できます。RDS for SQL Server TDE 証明書をオンプレミス DB インスタンスに復元することもできます。

**注記**  
RDS for SQL Server は、TDE のクロスアカウントキーの使用をサポートしていません。

次の手順では、TDE 証明書とプライベートキーをバックアップします。プライベートキーは、対称暗号化 KMS キーから生成されたデータキーを使用して暗号化されます。

**オンプレミスの TDE 証明書をバックアップするには**

1. AWS CLI [generate-data-key](https://docs.aws.amazon.com/cli/latest/reference/kms/generate-data-key.html) コマンドを使用して、データキーを生成します。

   ```
   aws kms generate-data-key \
       --key-id my_KMS_key_ID \
       --key-spec AES_256
   ```

   出力は以下のようになります。

   ```
   {
   "CiphertextBlob": "AQIDAHimL2NEoAlOY6Bn7LJfnxi/OZe9kTQo/XQXduug1rmerwGiL7g5ux4av9GfZLxYTDATAAAAfjB8BgkqhkiG9w0B
   BwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMyCxLMi7GRZgKqD65AgEQgDtjvZLJo2cQ31Vetngzm2ybHDc3d2vI74SRUzZ
   2RezQy3sAS6ZHrCjfnfn0c65bFdhsXxjSMnudIY7AKw==",
   "Plaintext": "U/fpGtmzGCYBi8A2+0/9qcRQRK2zmG/aOn939ZnKi/0=",
   "KeyId": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-00ee-99ff-88dd-aa11bb22cc33"
   }
   ```

   次のステップで、プレーンテキスト出力をプライベートキーのパスワードとして使用します。

1. 次の例に示すように、TDE 証明書をバックアップします。

   ```
   BACKUP CERTIFICATE myOnPremTDEcertificate TO FILE = 'D:\tde-cert-backup.cer'
   WITH PRIVATE KEY (
   FILE = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\cert-backup-key.pvk',
   ENCRYPTION BY PASSWORD = 'U/fpGtmzGCYBi8A2+0/9qcRQRK2zmG/aOn939ZnKi/0=');
   ```

1. 証明書のバックアップファイルを Amazon S3 証明書バケットに保存します。

1. プライベートキーのバックアップファイルを S3 証明書バケットに保存し、ファイルのメタデータに次のタグを付けます。
   + キー – `x-amz-meta-rds-tde-pwd`
   + 値 — データキーの生成による `CiphertextBlob` 値、以下の例を参照。

     ```
     AQIDAHimL2NEoAlOY6Bn7LJfnxi/OZe9kTQo/XQXduug1rmerwGiL7g5ux4av9GfZLxYTDATAAAAfjB8BgkqhkiG9w0B
     BwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMyCxLMi7GRZgKqD65AgEQgDtjvZLJo2cQ31Vetngzm2ybHDc3d2vI74SRUzZ
     2RezQy3sAS6ZHrCjfnfn0c65bFdhsXxjSMnudIY7AKw==
     ```

次の手順では、RDS for SQL Server TDE 証明書をオンプレミス DB インスタンスに復元します。証明書のバックアップ、対応するプライベートキーファイル、およびデータキーを使用して、移行先 DB インスタンスに TDE 証明書をコピーして復元します。復元された証明書は、新しいサーバーのデータベースマスターキーによって暗号化されます。

**TDE 証明書を復元するには**

1. TDE 証明書のバックアップファイルとプライベートキーファイルを Amazon S3 から移行先インスタンスにコピーします。Amazon S3 からのファイルコピーの詳細については、「[RDS for SQL Server と Amazon S3 間のファイル転送](Appendix.SQLServer.Options.S3-integration.using.md)」を参照してください。

1. KMS キーを使用して出力暗号テキストを復号化し、データキーのプレーンテキストを取得します。暗号テキストは、プライベートキーバックアップファイルの S3 メタデータにあります。

   ```
   aws kms decrypt \
       --key-id my_KMS_key_ID \
       --ciphertext-blob fileb://exampleCiphertextFile | base64 -d \
       --output text \
       --query Plaintext
   ```

   次のステップで、プレーンテキスト出力をプライベートキーのパスワードとして使用します。

1. 次の SQL コマンドを使用して、TDE 証明書を復元します。

   ```
   CREATE CERTIFICATE myOnPremTDEcertificate FROM FILE='D:\tde-cert-backup.cer'
   WITH PRIVATE KEY (FILE = N'D:\tde-cert-key.pvk',
   DECRYPTION BY PASSWORD = 'plain_text_output');
   ```

KMS の復号化の詳細については、「*AWS CLI コマンドリファレンス*」の KMS セクションの「[復号](https://docs.aws.amazon.com/cli/latest/reference/kms/decrypt.html)」を参照してください。

TDE 証明書が移行先 DB インスタンスで復元された後、その証明書を使用して暗号化されたデータベースを復元できます。

**注記**  
同じ TDE 証明書を使用して、移行元 DB インスタンス上の複数の SQL Server データベースを暗号化できます。複数のデータベースを移行先インスタンスに移行するには、それらに関連付けられた TDE 証明書を移行先インスタンスに一度だけコピーします。

# RDS for SQL Server の TDE をオフにする
<a name="TDE.Disabling"></a>

RDS for SQL Server DB インスタンスの TDE をオフにするには、まず、DB インスタンスに暗号化されたオブジェクトが残っていないようにします。これを行うには、オブジェクトを復号化するか、削除します。暗号化されたオブジェクトが DB インスタンスに残っている場合は、DB インスタンスに対して TDE をオフにすることはできません。暗号化用のユーザー TDE 証明書が復元 (インポート) された場合は、削除する必要があります。コンソールを使用してオプショングループから TDE オプションを削除すると、処理中であることがコンソールに示されます。さらに、オプショングループが暗号化された DB インスタンスまたは DB スナップショットに関連付けられている場合は、エラーイベントが作成されます。

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

```
 1. ------------- Removing TDE ----------------
 2. 
 3. USE [customerDatabase]
 4. GO
 5. 
 6. -- Turn off encryption of the database
 7. ALTER DATABASE [customerDatabase]
 8. SET ENCRYPTION OFF
 9. GO
10. 
11. -- Wait until the encryption state of the database becomes 1. The state is 5 (Decryption in progress) for a while
12. SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys
13. GO
14. 
15. -- Drop the DEK used for encryption
16. DROP DATABASE ENCRYPTION KEY
17. GO
18. 
19. -- Drop a user TDE certificate if it was restored (imported)
20. EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_certificate_name';
21. 
22. -- Alter to SIMPLE Recovery mode so that your encrypted log gets truncated
23. USE [master]
24. GO
25. ALTER DATABASE [customerDatabase] SET RECOVERY SIMPLE
26. GO
```

すべてのオブジェクトを復号すると、2 つのオプションを使用できます。

1. DB インスタンスを変更して TDE オプションが含まれていないオプショングループに関連付けることができます。

1. オプショングループから TDE オプションを削除できます。