온프레미스 환경으로부터 암호화된 백업 파일 또는 암호화된 Microsoft Azure 백업을 RDS for SQL Server에 복원하려면 어떻게 해야 합니까?

4분 분량
0

온프레미스 환경과 Amazon Relational Database Service(Amazon RDS) for Microsoft SQL Server 사이에서 암호화된 백업 파일 또는 암호화된 Microsoft Azure 백업을 복원하려고 합니다. 기본 백업 및 복원 기능을 사용하여 이 작업을 수행하려면 어떻게 해야 하나요?

간략한 설명

백업 암호화는 SQL Server 2014(12.x) 이상에서 사용할 수 있습니다. 백업을 생성할 때 암호화 알고리즘과 암호화기(인증서 또는 비대칭 키)를 지정할 수 있습니다. 이렇게 하면 암호화된 백업 파일이 만들어집니다.

참고: 이 기능은 TDE 암호화와는 다릅니다.

해결 방법

암호화된 백업

참고: 다음 해결 단계를 시작하기 전에 다음을 생성했는지 확인하세요.

  • Amazon Simple Storage Service(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 Management Console을 사용하여 암호화된 백업을 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(S3) 버킷.
  • TDE 및 SQLSERVER_BACKUP_RESTORE 옵션 그룹으로 구성된 RDS 인스턴스.
  • 백업을 암호화하는 인증서로 구성된 온프레미스 계정.
  • 유효한 Microsoft Azure 계정.

1.    Microsoft Azure에서 스토리지 계정을 생성합니다. 자세한 내용은 Microsoft 설명서 웹 사이트의 스토리지 계정 생성을 참조하세요.

2.    공유 액세스 서명을 기반으로 보안 인증을 생성합니다. 자세한 내용은 Microsoft 설명서 웹 사이트의 스토리지 컨테이너에 대한 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';

관련 정보

TDE를 지원하는 SQL Server 데이터베이스를 Amazon RDS for SQL Server로 마이그레이션

온프레미스 환경으로부터 KMS로 암호화된 백업 파일을 RDS for SQL Server에 복원하려면 어떻게 해야 합니까?