RDS for SQL Server での TDE 証明書のバックアップと復元 - Amazon Relational Database Service

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 つについては、「ネイティブバックアップおよび復元のセットアップ」を参照してください。

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

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

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

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

    SQL Server ネイティブのバックアップと復元に必要なアクセス許可に加えて、IAM ロールには次のアクセス許可も必要です。

    • S3 バケットリソースの s3:GetBucketAcls3:GetBucketLocation、およびs3:ListBucket

    • * リソースの s3:ListAllMyBuckets

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

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

  4. 対称暗号化 KMS キーであることを確認します。次のオプションがあります。

    • アカウントに既存の KMS キーがある場合は、それを使用できます。これ以上の操作は不要です。

    • アカウントに既存の対称暗号化 KMS キーがない場合は、AWS Key Management Serviceデベロッパーガイドの「キーの作成」の手順に従って KMS キーを作成します。

  5. 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';