RDS for SQL Server の暗号化されたバックアップファイルまたは暗号化された Microsoft Azure バックアップをオンプレミス環境から復元するにはどうすればよいですか?

所要時間3分
0

オンプレミス環境と Amazon Relational Database Service (Amazon RDS) for Microsoft SQL Server インスタンスの間で、暗号化されたバックアップファイルまたは暗号化された Microsoft Azure バックアップを復元したいと考えています。ネイティブのバックアップと復元機能を使用してこれを実行するにはどうすればよいですか?

簡単な説明

バックアップ暗号化は SQL Server 2014 (12.x) 以降で使用できます。バックアップを作成するときに、暗号化アルゴリズムとエンクリプタ (証明書または非対称キー) を指定できます。これにより、暗号化されたバックアップファイルが作成されます。

注: この機能は TDE 暗号化とは異なります。

解決方法

暗号化されたバックアップ

注: 次の解決方法のステップを開始する前に、次を作成していることを確認してください。

  • Amazon Simple Storage Service (Amazon S3) バケット。
  • オプショングループで TDE と SQLSERVER_BACKUP_RESTORE を使用して設定された Amazon RDS インスタンス。

1.    オンプレミスアカウントで次のスクリプトを使用してマスターキーを作成します。

USE Master;
GO
CREATE MASTER KEY ENCRYPTION
BY PASSWORD='InsertStrongPasswordHere';
GO

2.    オンプレミスアカウントのマスターキーで保護された証明書を作成します。

CREATE CERTIFICATE TDE_Cert
WITH 
SUBJECT='Database_Encryption';
GO

3.    次のスクリプトを使用してネイティブバックアップを開始します。

注: RDS に復元する際の問題を避けるため、圧縮をオンにします

BACKUP DATABASE [TestDB] TO DISK =N'E:\Backup\EncryptedBackupFromOnpremise.bak' WITH COMPRESSION,
ENCRYPTION( ALGORITHM = AES_256, SERVER CERTIFICATE = [TDE_Cert] ), STATS = 10
GO

4.    AWS マネジメントコンソールを使用して、暗号化されたバックアップを S3 バケット tde-db にアップロードします。

5.    次のコマンドを実行してデータベースを復元します。

exec msdb.dbo.rds_restore_database 
@restore_db_name='onpremdb',
@s3_arn_to_restore_from='arn:aws:s3:::tde-db/EncryptedBackupFromOnpremise.bak';

暗号化された Microsoft Azure バックアップ

注: この解決方法では、前述のセクションと同様のステップを実行します。ただし、暗号化されたバックアップは、ローカルストレージではなく Microsoft Azure バックアップコンテナに対して開始されます。次の解決方法のステップを開始する前に、次を作成していることを確認してください。

  • Amazon Simple Storage Service (Amazon S3) バケット。
  • TDE と SQLSERVER_BACKUP_RESTORE オプショングループを使用して設定された RDS インスタンス。
  • バックアップを暗号化するための証明書で設定されたオンプレミスアカウント。
  • アクティブな Microsoft Azure アカウント。

1.    Microsoft Azure でストレージアカウントを作成します。詳細については、Microsoft のドキュメントのウェブサイトの「Create a storage account」(ストレージアカウントを作成する) を参照してください。

2.    共有アクセス署名に基づいて認証情報を作成します。詳細については、Microsoft のドキュメントのウェブサイトの「Create SAS tokens for your storage containers」(ストレージコンテナ用の SAS トークンを作成する) を参照してください。

USE master  
CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>] 
  -- this name must match the container path, start with https and must not contain a forward slash at the end
WITH IDENTITY='SHARED ACCESS SIGNATURE' 
  -- this is a mandatory string and should not be changed   
 , SECRET = 'sharedaccesssignature'
GO

3.    Microsoft Azure ストレージへのネイティブ暗号化バックアップを開始します。

BACKUP DATABASE [TestDB] TO  URL = N'https://backuptestsanketh.blob.core.windows.net/backup/TestDB_backup_2022_09_29_112330.bak' 
WITH  COPY_ONLY, NOFORMAT, NOINIT,  NAME = N'BackupEnc-Full Database Backup', NOSKIP, NOREWIND, NOUNLOAD, COMPRESSION, 
ENCRYPTION(ALGORITHM = AES_128, SERVER CERTIFICATE = [On_PremTDE_Cert]),  STATS = 10
GO

注: Amazon RDS は Microsoft Azure ストレージコンテナからの直接バックアップの復元をサポートしていません。そのため、バックアップを中間システムにダウンロードする必要があります。

4.    バックアップファイルを S3 バケット (tde-db) にアップロードします。

5.    プライベートキーと証明書を RDS インスタンスにバックアップして復元するには、「「Cannot find server certificate with thumbprint」(サムプリント付きのサーバー証明書が見つかりません) というエラーを解決する」のセクションのステップに従ってください。

6.     前提条件が整ったら、次のコマンドを実行して暗号化されたバックアップを復元します。

exec msdb.dbo.rds_restore_database
@restore_db_name='AzureBackupEncrypted',
@s3_arn_to_restore_from='arn:aws:s3:::tde-db/backup/azure-encrypted.bak'

「Cannot find server certificate with thumbprint」(サムプリント付きのサーバー証明書が見つかりません) というエラーを解決する

証明書が設定されていない別の環境で暗号化されたバックアップを復元すると、次のエラーが発生します。

Cannot find server certificate with thumbprint '0xBA01F2AF71C3FB4A92C5F69BDE3EC8DB318D7D0E'

前述のエラーを回避するには、次の操作を実行します。

1.    ネイティブ復元を実行する AWS アカウントで、新しい AWS Key Management Service (AWS KMS) キーを作成します。

2.    AWS KMS データキーを生成して、証明書のバックアップを開始します。

aws kms generate-data-key --key-id KMS-Key-ID --key-spec AES_256 --region us-west-2

前述のコマンドの出力例を次に示します。

{
"Plaintext": "Gve+VE1JV8aufhDkPKeWceEt+vZaTYZCH25/OLPo+a4=", 
"KeyId": "arn:aws:kms:us-west-2:289799745972:key/eee4d613-4871-4cee-87d8-a54ad8d5251b", 
"CiphertextBlob": "AQIDAHiojOaIcTtQGK4gqEf6QcYuVUutMiW0y52tG63GqOknSgF0ZtnfmfqadzhfWUlRSx15AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQM/U3+BkE/yN5Jf0ckAgEQgDtoG9coTwG7bnPGx3c4hND8LAc4LEPnxd2BLQdJDOjqXU0LgudNfVUw4xNfWy2XCDgmSYV0nHU9EVbwkQ=="
}

3.    ソースインスタンス (オンプレミスまたは EC2 インスタンス) で証明書とプライベートキーのバックアップを開始します。

use master 
BACKUP CERTIFICATE TDE_Cert TO
FILE= 'C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\DATA\certificatename.cer'
WITH PRIVATE KEY (
FILE= 'C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\DATA\privatekey.pvk',
ENCRYPTION BY PASSWORD='Gve+VE1JV8aufhDkPKeWceEt+vZaTYZCH25/OLPo+a4=')

4.    バックアップ証明書ファイルを S3 バケット tde-bkt にアップロードします。

5.    プライベートキーファイルを S3 バケット tde-bkt にアップロードします。アップロード後、プライベートキーファイルのメタデータを編集し、次の値を指定します。

  • キー: x-amz-meta-rds-tde-pwd
  • 値: ステップ 2 で取得した CipertexBlob。

6.    RDS インスタンスで証明書を復元します。

exec
msdb.dbo.rds_restore_tde_certificate
@certificate_name='UserTDECertificate_ec2_tde_cert',
@certificate_file_s3_arn='arn:aws:s3:::tde-bkt/certificatename.cer',
@private_key_file_s3_arn='arn:aws:s3:::tde-bkt/privatekey.pvk',
@kms_password_key_arn='arn:aws:kms:us-west-2:aws-account-id:key/key-id';

7.    次のコマンドを実行してデータベースを復元します。

exec msdb.dbo.rds_restore_database 
@restore_db_name='onpremdb',
@s3_arn_to_restore_from='arn:aws:s3:::tde-db/EncryptedBackupFromOnpremise.bak';

関連情報

Migrate TDE-enabled SQL Server databases to Amazon RDS for SQL Server (TDE 対応の SQL Server データベースを Amazon RDS for SQL Server に移行する)

How do I restore a KMS-encrypted backup file in RDS for SQL Server from an on-premises environment? (KMS で暗号化されたバックアップファイルをオンプレミス環境から RDS for SQL Server に復元するにはどうすればよいですか?)

AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ