RDS for SQL Server での TDE 証明書のバックアップと復元
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 証明書を使用して、移行元 DB インスタンスから他のデータベースを復元できます。復元するデータベースは同じ TDE 証明書を使用し、TDE がオンになっている必要があります。同じ証明書を再度インポート (復元) する必要はありません。
前提条件
RDS for SQL Server で TDE 証明書をバックアップまたは復元する前に、次のタスクを実行してください。最初の 3 つについては、「ネイティブバックアップおよび復元のセットアップ」を参照してください。
-
バックアップおよび復元するファイルを保存するための Amazon S3 バケットを作成します。
データベースバックアップと TDE 証明書のバックアップには、別々のバケットを使用することをお勧めします。
-
ファイルのバックアップと復元用の IAM ロールを作成します。
IAM ロールは、AWS KMS key のユーザーおよび管理者の両方である必要があります。
SQL Server ネイティブのバックアップと復元に必要なアクセス許可に加えて、IAM ロールには次のアクセス許可も必要です。
-
S3 バケットリソースの
s3:GetBucketAcl
、s3:GetBucketLocation
、およびs3:ListBucket
-
*
リソースのs3:ListAllMyBuckets
-
-
DB インスタンスのオプショングループに追加された
SQLSERVER_BACKUP_RESTORE
オプション。これは、
TRANSPARENT_DATA_ENCRYPTION
(TDE
) オプションへの追加です。 -
対称暗号化 KMS キーであることを確認します。次のオプションがあります。
-
アカウントに既存の KMS キーがある場合は、それを使用できます。これ以上の操作は不要です。
-
アカウントに既存の対称暗号化 KMS キーがない場合は、AWS Key Management Serviceデベロッパーガイドの「キーの作成」の手順に従って KMS キーを作成します。
-
-
Amazon S3 統合を有効にして、DB インスタンスと Amazon S3 の間でファイルを転送します。
Amazon S3 統合を有効にするための詳細については、「Amazon RDS for SQL Server DB インスタンスと Amazon S3 の統合」を参照してください。
制限
ストアドプロシージャを使用して 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、@、$、#、下線 (_) の文字のみを含めることができます。 -
@certificate_file_s3_arn
のファイル拡張子は .cer (大文字小文字を区別しない) にする必要があります。 -
@private_key_file_s3_arn
のファイル拡張子は .pvk (大文字小文字を区別しない) にする必要があります。 -
プライベートキーファイルの S3 メタデータには、
x-amz-meta-rds-tde-pwd
タグが含まれる必要があります。(詳しくは、「オンプレミスデータベースの TDE 証明書のバックアップと復元」を参照してください。)
TDE 証明書のバックアップ
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
– バックアップファイルではない場合でも、指定された名前を持つ既存のファイルを上書きします。
-
例 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 証明書の復元
ユーザー 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。
例 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 証明書の表示
復元 (インポート) したユーザー TDE 証明書を表示するには rds_fn_list_user_tde_certificates
関数を使用します。これには、以下の構文があります。
SELECT * FROM msdb.dbo.rds_fn_list_user_tde_certificates();
出力は以下のようになります。すべての列がここに表示されるわけではありません。
name |
certificate_id |
principal_id |
pvt_key_encryption_type_desc |
issuer_name |
cert_serial_number |
thumbprint |
subject |
start_date |
expiry_date |
pvt_key_last_backup_date |
UserTDECertificate_tde_cert |
343 |
1 |
ENCRYPTED_BY_MASTER_KEY |
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 証明書の削除
使用していない復元された (インポートされた) ユーザー TDE 証明書を削除するには、rds_drop_tde_certificate
ストアドプロシージャを使用します。これには、以下の構文があります。
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_
certificate_name
';
以下のパラメータは必須です。
-
@certificate_name
— 削除する TDE 証明書の名前。
復元された (インポートされた) TDE 証明書のみを削除できます。RDS で作成された証明書は削除できません。
例 TDE 証明書の削除
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_
myTDEcertificate
';