TDE 보호 데이터베이스의 인증서를 Azure SQL Managed Instance로 마이그레이션

적용 대상:Azure SQL Managed Instance

원시 복원 옵션을 사용하여 TDE(투명한 데이터 암호화)로 보호되는 데이터베이스를 Azure SQL Managed Instance로 마이그레이션하는 경우 데이터베이스 복원 전에 SQL Server 인스턴스의 해당 인증서를 마이그레이션해야 합니다. 이 문서에서는 인증서를 Azure SQL Managed Instance로 수동으로 마이그레이션하는 프로세스를 안내합니다.

  • 인증서를 개인 정보 교환(.pfx) 파일로 내보내기
  • 파일에서 base-64 문자열로 인증서 추출
  • PowerShell cmdlet을 사용하여 업로드

완전히 관리되는 서비스를 사용하여 TDE 보호 데이터베이스와 해당 인증서를 원활하게 마이그레이션하는 대체 옵션은 Azure Database Migration Service를 사용하여 온-프레미스 데이터베이스를 Azure SQL Managed Instance로 마이그레이션하는 방법을 참조하세요.

중요

마이그레이션된 인증서는 TDE로 보호되는 데이터베이스의 복원에만 사용됩니다. 복원이 완료되면 마이그레이션된 인증서는 인스턴스에 설정한 TDE 유형에 따라 서비스 관리형 인증서 또는 키 자격 증명 모음의 비대칭 키 등 다른 보호기로 대체됩니다.

필수 조건

이 문서의 단계를 완료하려면 다음 필수 구성 요소가 필요합니다.

다음 사항이 있는지 확인합니다.

참고 항목

이 문서에서는 Azure와 상호 작용하는 데 권장되는 PowerShell 모듈인 Azure Az PowerShell 모듈을 사용합니다. Az PowerShell 모듈을 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.

중요

PowerShell Azure Resource Manager 모듈은 Azure SQL Managed Instance에서 계속 지원되지만 향후의 모든 개발은 Az.Sql 모듈을 위한 것입니다. 이러한 cmdlet은 AzureRM.Sql을 참조하세요. Az 모듈 및 AzureRM 모듈의 명령에 대한 인수는 사실상 동일합니다.

모듈을 설치/업데이트하려면 PowerShell에서 다음 명령을 실행하세요.

Install-Module -Name Az.Sql
Update-Module -Name Az.Sql

TDE 인증서를 .pfx 파일로 내보냅니다.

인증서는 원본 SQL Server 인스턴스에서 직접 내보낼 수 있으며, 인증서 저장소에 보관되는 경우 인증서 저장소에서 내보낼 수 있습니다.

원본 SQL Server 인스턴스에서 인증서 내보내기

다음 단계를 사용하여 SQL Server Management Studio를 사용하여 인증서를 내보내고 .pfx 형식으로 변환합니다. TDE_Certfull_path 일반 이름은 단계를 통해 인증서 및 파일 이름 및 경로에 사용됩니다. 실제 이름으로 바꿔야 합니다.

  1. SSMS에서 새 쿼리 창을 열고 원본 SQL Server 인스턴스에 연결합니다.

  2. 다음 스크립트를 사용하여 TDE 보호 데이터베이스를 나열하고 마이그레이션할 데이터베이스의 암호화를 보호하는 인증서의 이름을 가져옵니다.

    USE master
    GO
    SELECT db.name as [database_name], cer.name as [certificate_name]
    FROM sys.dm_database_encryption_keys dek
    LEFT JOIN sys.certificates cer
    ON dek.encryptor_thumbprint = cer.thumbprint
    INNER JOIN sys.databases db
    ON dek.database_id = db.database_id
    WHERE dek.encryption_state = 3
    

    List of TDE certificates

  3. 다음 스크립트를 실행하여 공개 키 및 프라이빗 키 정보를 유지하면서 인증서를 파일 쌍(.cer 및 .pvk)으로 내보냅니다.

    USE master
    GO
    BACKUP CERTIFICATE TDE_Cert
    TO FILE = 'c:\full_path\TDE_Cert.cer'
    WITH PRIVATE KEY (
      FILE = 'c:\full_path\TDE_Cert.pvk',
      ENCRYPTION BY PASSWORD = '<SomeStrongPassword>'
    )
    

    Backup TDE certificate

  4. Pvk2Pfx 도구를 사용하여 PowerShell 콘솔을 사용하여 새로 생성된 파일 쌍의 인증서 정보를 .pfx 파일에 복사합니다.

    .\pvk2pfx -pvk c:/full_path/TDE_Cert.pvk  -pi "<SomeStrongPassword>" -spc c:/full_path/TDE_Cert.cer -pfx c:/full_path/TDE_Cert.pfx
    

공용 인증서에서 인증서 내보내기

인증서가 SQL Server 로컬 컴퓨터 인증서 저장소에 유지되는 경우 다음 단계를 사용하여 내보낼 수 있습니다.

  1. PowerShell 콘솔을 열고 다음 명령을 실행하여 Microsoft Management Console의 인증서 스냅인을 엽니다.

    certlm
    
  2. 인증서 MMC 스냅인에서 개인 > 인증서 경로를 확장하여 인증서 목록을 확인합니다.

  3. 인증서를 마우스 오른쪽 단추로 클릭하고 내보내기를 클릭합니다.

  4. 마법사에 따라 인증서 및 프라이빗 키를 .pfx 형식으로 내보냅니다.

Azure PowerShell cmdlet을 사용하여 Azure SQL Managed Instance에 인증서 업로드

  1. PowerShell에서 준비 단계를 시작합니다.

    # import the module into the PowerShell session
    Import-Module Az
    # connect to Azure with an interactive dialog for sign-in
    Connect-AzAccount
    # list subscriptions available and copy id of the subscription target the managed instance belongs to
    Get-AzSubscription
    # set subscription for the session
    Select-AzSubscription <subscriptionId>
    
  2. 모든 준비 단계가 완료되면 다음 명령을 실행하여 Base-64로 인코딩된 인증서를 대상 Managed Instance에 업로드합니다.

    # If you are using PowerShell 6.0 or higher, run this command:
    $fileContentBytes = Get-Content 'C:/full_path/TDE_Cert.pfx' -AsByteStream
    # If you are using PowerShell 5.x, uncomment and run this command instead of the one above:
    # $fileContentBytes = Get-Content 'C:/full_path/TDE_Cert.pfx' -Encoding Byte
    $base64EncodedCert = [System.Convert]::ToBase64String($fileContentBytes)
    $securePrivateBlob = $base64EncodedCert  | ConvertTo-SecureString -AsPlainText -Force
    $password = "<password>"
    $securePassword = $password | ConvertTo-SecureString -AsPlainText -Force
    Add-AzSqlManagedInstanceTransparentDataEncryptionCertificate -ResourceGroupName "<resourceGroupName>" `
        -ManagedInstanceName "<managedInstanceName>" -PrivateBlob $securePrivateBlob -Password $securePassword
    

이제 지정된 관리형 인스턴스에서 인증서를 사용할 수 있으며 TDE로 보호된 데이터베이스의 백업을 복원할 수 있습니다.

참고 항목

업로드된 인증서는 sys.certificates 카탈로그 뷰에 표시되지 않습니다. 인증서가 성공적으로 업로드되었는지 확인하려면 RESTORE FILELISTONLY 명령을 실행할 수 있습니다.

다음 단계

이 문서에서는 온-프레미스 또는 IaaS SQL Server 인스턴스에서 Azure SQL Managed Instance로 투명한 데이터 암호화 사용하여 데이터베이스의 암호화 키를 보호하는 인증서를 마이그레이션하는 방법을 알아보았습니다.

Azure SQL Managed Instance로 데이터베이스 백업을 복원하는 방법을 알아보려면 Azure SQL Managed Instance에 데이터베이스 백업 복원을 참조하세요.