PowerShell 및 Azure CLI: Azure Key Vault에서 고객 관리형 키로 투명한 데이터 암호화를 사용하도록 설정

적용 대상:Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

이 문서에서는 Azure SQL Database 또는 Azure Synapse Analytics에서 TDE(투명한 데이터 암호화)에 대해 Azure Key Vault의 키를 사용하는 방법에 대해 설명합니다. Azure Key Vault 통합으로 TDE - BYOK(Bring Your Own Key) 지원에 대해 자세히 알아보려면 Azure Key Vault에서 고객 관리형 키로 TDE를 참조하세요. Azure Key Vault에서 고객 관리형 키로 TDE를 사용하도록 설정하는 방법에 대한 Azure Portal 지침을 찾고 있는 경우 사용자가 할당한 관리 ID 및 고객 관리형 TDE로 구성된 서버 만들기를 참조하세요.

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

참고 항목

이제 Azure SQL은 관리형 HSM에 저장된 RSA 키를 TDE 보호기로 사용하도록 지원합니다. Azure Key Vault 관리형 HSM은 FIPS 140-2 수준 3 유효성이 검사된 HSM을 사용하여 클라우드 애플리케이션용 암호화 키를 보호할 수 있는 완전 관리형 고가용 단일 테넌트 표준 규격 클라우드 서비스입니다. 관리형 HSM에 대해 자세히 알아봅니다.

참고 항목

Microsoft Entra ID는 이전의 Azure Active Directory(Azure AD)입니다.

PowerShell용 필수 구성 요소

  • Azure 구독 및 해당 구독에 대한 관리자 권한이 있어야 합니다.
  • [권장되는 선택 사항] TDE 보호기 키 자료의 로컬 복사본을 만들기 위한 HSM(하드웨어 보안 모듈) 또는 로컬 키 저장소가 있어야 합니다.
  • Azure PowerShell이 설치되어 작동해야 합니다.
  • TDE에 사용할 Azure Key Vault 및 키를 만듭니다.
  • 키에는 TDE에 사용할 다음 특성이 있어야 합니다.
    • 활성화 날짜(설정된 경우)는 과거의 날짜와 시간이어야 함
    • 만료 날짜(설정된 경우)는 미래의 날짜와 시간이어야 합니다.
    • 키가 사용 상태여야 합니다.
    • 가져오기, 키 래핑, 키 래핑 해제 작업도 수행 가능
  • 관리형 HSM 키를 사용하려면 지침에 따라 Azure CLI를 사용하여 관리형 HSM을 만들고 활성화합니다.

Az 모듈 설치 지침은 Azure PowerShell 설치를 참조하세요. 특정 cmdlet은 AzureRM.Sql을 참조하세요.

Key Vault에 대한 자세한 내용은 Key Vault의 PowerShell 지침PowerShell에서 Key Vault 일시 삭제 사용하는 방법을 참조하세요.

중요

PowerShell Azure RM(Resource Manager) 모듈은 여전히 지원되지만 향후 모든 개발은 Az.Sql 모듈을 위한 것입니다. AzureRM 모듈은 적어도 2020년 12월까지 버그 수정을 계속 수신할 예정입니다. Az 모듈 및 AzureRm 모듈의 명령에 대한 인수는 실질적으로 동일합니다. 호환성에 대한 자세한 내용은 새로운 Azure PowerShell Az 모듈 소개를 참조하세요.

서버에 Microsoft Entra ID 할당

기존 서버가 있는 경우 다음을 사용하여 서버에 Microsoft Entra ID를 추가합니다.

$server = Set-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -AssignIdentity

서버를 생성하는 경우 -Identity 태그가 있는 New-AzSqlServer cmdlet을 사용하여 서버를 생성하는 동안 Microsoft Entra ID를 추가합니다.

$server = New-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -Location <RegionName> `
    -ServerName <LogicalServerName> -ServerVersion "12.0" -SqlAdministratorCredentials <PSCredential> -AssignIdentity

서버에 Key Vault 권한 부여

서버에서 키 자격 증명 모음의 키를 TDE에 사용하기 전에 Set-AzKeyVaultAccessPolicy cmdlet을 사용하여 해당 키 자격 증명 모음에 대한 액세스 권한을 서버에 부여합니다.

Set-AzKeyVaultAccessPolicy -VaultName <KeyVaultName> `
    -ObjectId $server.Identity.PrincipalId -PermissionsToKeys get, wrapKey, unwrapKey

관리형 HSM의 서버에 권한을 추가하려면 '관리형 HSM Crypto Service 암호화 사용자' 로컬 RBAC 역할을 서버에 추가합니다. 이렇게 하면 서버에서 관리형 HSM의 키에 대해 가져오기, 키 래핑, 키 래핑 해제 작업을 수행할 수 있습니다. 관리형 HSM에서 서버 액세스를 프로비저닝하는 방법에 대한 지침

Key Vault 키를 서버에 추가하고 TDE 보호기를 설정합니다

참고

관리형 HSM 키의 경우 Az.Sql 2.11.1 버전의 PowerShell을 사용합니다.

참고

키 자격 증명 모음 이름과 키 이름을 결합한 길이는 94자를 초과할 수 없습니다.

Key Vault의 KeyId 예제: https://contosokeyvault.vault.azure.net/keys/Key1/1a1a2b2b3c3c4d4d5e5e6f6f7g7g8h8h

관리형 HSM의 KeyId 예제:
https://contosoMHSM.managedhsm.azure.net/keys/myrsakey

# 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>

# confirm the TDE protector was configured as intended
Get-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName>

TDE 설정

Set-AzSqlDatabaseTransparentDataEncryption cmdlet을 사용하여 TDE를 해제합니다.

Set-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
   -ServerName <LogicalServerName> -DatabaseName <DatabaseName> -State "Enabled"

이제 데이터베이스 또는 데이터 웨어하우스에서 Key Vault에 있는 암호화 키를 사용하여 TDE를 사용할 수 있도록 설정되었습니다.

암호화 상태 및 암호화 작업 확인

Get-AzSqlDatabaseTransparentDataEncryption을 사용하여 데이터베이스 또는 데이터 웨어하우스에 대한 암호화 상태를 가져옵니다.

# get the encryption state of the database
Get-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
   -ServerName <LogicalServerName> -DatabaseName <DatabaseName> `

유용한 PowerShell cmdlet

  • TDE를 해제하려면 Set-AzSqlDatabaseTransparentDataEncryption cmdlet을 사용합니다.

    Set-AzSqlDatabaseTransparentDataEncryption -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> `
        -DatabaseName <DatabaseName> -State "Disabled"
    
  • 서버에 추가된 Key Vault 키 목록을 반환하려면 Get-AzSqlServerKeyVaultKey cmdlet을 사용합니다.

    # KeyId is an optional parameter, to return a specific key version
    Get-AzSqlServerKeyVaultKey -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    
  • 서버에서 Key Vault 키를 제거하려면 Remove-AzSqlServerKeyVaultKey를 사용합니다.

    # the key set as the TDE Protector cannot be removed
    Remove-AzSqlServerKeyVaultKey -KeyId <KeyVaultKeyId> -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    

문제 해결

문제가 발생하면 다음과 같이 확인합니다.

  • 키 자격 증명 모음을 찾을 수 없으면 올바른 구독에 있는지 확인합니다.

    Get-AzSubscription -SubscriptionId <SubscriptionId>
    

  • 새 키를 서버에 추가할 수 없거나 TDE 보호기로 업데이트할 수 없으면 다음을 확인합니다.
    • 키의 만료 날짜가 없어야 합니다.
    • 키에는 사용하도록 설정된 가져오기, 키 래핑키 래핑 해제 작업이 있어야 합니다.

다음 단계