PowerShell을 사용하여 TDE(Transparent Data Encryption) 보호기 제거

적용 대상:Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics(전용 SQL 풀만 해당)

이 문서에서는 Azure Key Vault - BYOK(Bring Your Own Key) 지원에서 고객 관리형 키와 함께 TDE를 사용하는 Azure SQL Database 또는 Azure Synapse Analytics에 대해 잠재적으로 손상된 TDE 보호에 응답하는 방법을 설명합니다. TDE를 사용하는 BYOK 지원에 대한 자세한 내용은 개요 페이지를 참조하세요.

주의

다음 절차는 극단적인 경우 또는 테스트 환경에서만 수행해야 합니다. Azure Key Vault에서 적극적으로 사용되는 TDE 보호기를 삭제하면 데이터베이스를 사용할 수 없는 상황이 발생하므로 관련 단계를 신중하게 검토하세요.

키가 손상되어 서비스나 사용자가 키에 무단 액세스한 것으로 의심될 경우 키를 삭제하는 것이 가장 좋습니다.

Key Vault에서 TDE 보호기가 삭제되면 최대 10분 안에 암호화된 모든 데이터베이스가 해당 오류 메시지와 함께 모든 연결을 거부하기 시작하고 해당 상태를 액세스할 수 없음으로 변경합니다.

이 방법 가이드에서는 손상된 인시던트 응답 후에 데이터베이스를 액세스할 수 없는 상태로 렌더링하는 방법을 안내합니다.

참고 항목

이 문서는 Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics(전용 SQL 풀(이전의 SQL DW))에 적용됩니다. Synapse 작업 영역 내의 전용 SQL 풀을 위한 투명한 데이터 암호화에 대한 문서는 Azure Synapse Analytics 암호화를 참조하세요.

필수 조건

  • Azure 구독 및 해당 구독에 대한 관리자 권한이 있어야 합니다.
  • Azure PowerShell이 설치되어 작동해야 합니다.
  • 이 방법 가이드에서는 이미 Azure SQL Database나 Azure Synapse에 대해 Azure Key Vault의 키를 TDE 보호기로 사용하고 있다고 가정합니다. 자세한 내용은 BYOK 지원을 통한 투명한 데이터 암호화를 참조하세요.

Az 모듈 설치 지침은 Azure PowerShell 설치를 참조하세요. 특정 cmdlet은 AzureRM.Sql을 참조하세요. 새로운 Azure PowerShell Az 모듈을 사용합니다.

TDE 보호기 지문 확인

다음 단계에서는 지정된 데이터베이스의 VLF(가상 로그 파일)에서 여전히 사용 중인 TDE 보호기 지문을 검사하는 방법을 간략하게 설명합니다. 데이터베이스에서 현재 TDE 보호기의 지문 및 데이터베이스 ID는 다음을 실행하여 찾을 수 있습니다.

SELECT [database_id],
       [encryption_state],
       [encryptor_type], /*asymmetric key means AKV, certificate means service-managed keys*/
       [encryptor_thumbprint]
 FROM [sys].[dm_database_encryption_keys]

다음 쿼리는 사용 중인 각 VLF 및 TDE 보호기를 반환합니다. 여러 가지 각 지문은 Azure Key Vault(AKV)에서 서로 다른 키를 참조합니다.

SELECT * FROM sys.dm_db_log_info (database_id)

또는 PowerShell이나 Azure CLI를 사용할 수 있습니다.

PowerShell 명령 Get-AzureRmSqlServerKeyVaultKey에서는 쿼리에 사용된 TDE 보호기의 지문을 제공하므로 AKV에서 유지할 키와 삭제할 키를 확인할 수 있습니다. 데이터베이스에서 더 이상 사용하지 않는 키만 Azure Key Vault에서 안전하게 삭제할 수 있습니다.

암호화된 리소스에 액세스할 수 있도록 유지

  1. Key Vault에서 새로운 키를 생성합니다. 액세스 제어가 자격 증명 모음 수준에서 프로비전되므로 잠재적으로 손상된 TDE 보호기에서 이 새 키가 별도의 키 자격 증명 모음에서 생성되는지 확인합니다.

  2. Add-AzSqlServerKeyVaultKeySet-AzSqlServerTransparentDataEncryptionProtector cmdlet을 사용하여 서버에 새 키를 추가하고 서버의 새 TDE 보호기로 업데이트합니다.

    # add the key from Key Vault to the server  
    Add-AzSqlServerKeyVaultKey -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -KeyId <KeyVaultKeyId>
    
    # set the key as the TDE protector for all resources under the server
    Set-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> `
        -ServerName <LogicalServerName> -Type AzureKeyVault -KeyId <KeyVaultKeyId>
    
  3. Get-AzSqlServerTransparentDataEncryptionProtector cmdlet을 사용하여 서버와 복제본(replica)이 새 TDE 보호기로 업데이트되었는지 확인합니다.

    참고 항목

    새 TDE 보호기가 서버의 모든 데이터베이스 및 보조 데이터베이스로 전파되는 데 몇 분 정도 걸릴 수 있습니다.

    Get-AzSqlServerTransparentDataEncryptionProtector -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    
  4. Key Vault에 새 키의 백업을 작성합니다.

    # -OutputFile parameter is optional; if removed, a file name is automatically generated.
    Backup-AzKeyVaultKey -VaultName <KeyVaultName> -Name <KeyVaultKeyName> -OutputFile <DesiredBackupFilePath>
    
  5. Remove-AzKeyVaultKey cmdlet을 사용하여 Key Vault에서 손상된 키를 삭제합니다.

    Remove-AzKeyVaultKey -VaultName <KeyVaultName> -Name <KeyVaultKeyName>
    
  6. Restore-AzKeyVaultKey cmdlet을 사용하여 나중에 Key Vault로 키를 복원합니다.

    Restore-AzKeyVaultKey -VaultName <KeyVaultName> -InputFile <BackupFilePath>
    

암호화된 리소스에 액세스할 수 없도록 설정

  1. 손상 가능성이 있는 키로 암호화된 데이터베이스를 삭제합니다.

    데이터베이스 및 로그 파일은 자동으로 백업되므로 키를 제공하는 한 언제든지 데이터베이스의 특정 시점 복원을 수행할 수 있습니다. 최대 10분의 가장 최근 트랜잭션에 대한 데이터 손실 가능성을 차단하기 위해 활성 TDE 보호기를 삭제하기 전에 데이터베이스를 삭제해야 합니다.

  2. Key Vault에서 TDE 보호기의 키 관련 자료를 백업합니다.

  3. Key Vault에서 잠재적으로 손상된 키를 제거합니다.

참고 항목

키 자격 증명 모음에 권한 변경 내용을 적용하는 데 10분 정도 걸릴 수 있습니다. 여기에는 AKV의 TDE 보호기에 대한 액세스 권한을 취소하는 작업이 포함되며 이 시간 프레임 내의 사용자에게는 여전히 액세스 권한이 있을 수 있습니다.