데이터베이스 수준 TDE CMK는 Azure SQL Database(모든 SQL Database 버전)에서 사용할 수 있습니다. Azure SQL Managed Instance, SQL Server 온-프레미스, Azure VM 및 Azure Synapse Analytics(전용 SQL 풀(이전의 SQL DW))에서는 사용할 수 없습니다.
이 가이드에서는 Azure SQL Database에서 지역 복제 및 백업 복원을 구성하는 단계를 안내합니다. Azure SQL Database는 데이터베이스 수준에서 CMK(고객 관리형 키) 및 TDE(투명한 데이터 암호화)로 구성되며, 사용자가 할당한 관리 ID를 활용하여 Azure Key Vault에 액세스합니다. 이 가이드에서는 Azure SQL용 Azure Key Vault 및 논리 서버가 모두 동일한 Microsoft Entra 테넌트에 있지만, 서로 다른 테넌트에 있을 수 있습니다.
데이터베이스를 생성하거나 복원한 후 Azure Portal의 투명한 데이터 암호화 메뉴에는 원본 데이터베이스와 동일한 설정을 가진 새 데이터베이스가 표시되지만 키가 누락되었을 수 있습니다. 원본 데이터베이스에서 새 데이터베이스를 생성하는 모든 경우 Azure Portal 추가 데이터베이스 키 목록에서 대상 데이터베이스에 대해 표시되는 키 수는 원본 데이터베이스에 대해 표시되는 키 수보다 적을 수 있습니다. 표시된 키 수는 대상 데이터베이스를 생성하는 데 사용되는 개별 기능 요구 사항에 따라 달라지기 때문입니다. 새로 생성한 데이터베이스에 사용할 수 있는 모든 키를 나열하려면 Azure SQL Database에서 데이터베이스 수준 고객 관리형 키 설정 보기에 나온 사용 가능한 API를 사용합니다.
데이터베이스 수준 고객 관리형 키를 사용하여 보조 또는 복사본으로 Azure SQL Database 만들기 또는 복사
다음 지침 또는 명령을 사용하여 데이터베이스 수준 고객 관리형 키로 구성된 Azure SQL Database의 보조 복제본을 생성하거나 대상을 복사합니다. 데이터베이스 생성 단계에서 투명한 데이터 암호화를 위해 고객 관리형 키를 설정하려면 사용자가 할당한 관리 ID가 필요합니다.
데이터베이스 수준 고객 관리형 키를 사용하여 Azure SQL Database에서 데이터베이스를 복사본으로 생성하려면 다음 단계를 수행합니다.
Azure Portal로 이동하여 데이터베이스 수준 고객 관리형 키로 구성된 Azure SQL Database로 이동합니다. 데이터 암호화 메뉴의 투명한 데이터 암호화 탭에 액세스하고 데이터베이스에서 사용 중인 현재 키 목록을 검사합니다.
데이터베이스의 개요 메뉴에서 복사를 선택하여 데이터베이스의 복사본을 생성합니다.
SQL Database 만들기 - 데이터베이스 복사 메뉴가 나타납니다. 이 데이터베이스에 다른 서버를 사용하지만 복사하려는 데이터베이스와 설정은 동일합니다. 투명한 데이터 암호화 키 관리 섹션에서 투명한 데이터 암호화 구성을 선택합니다.
투명한 데이터 암호화 메뉴가 나타나면 이 복사본 데이터베이스에 대한 CMK 설정을 검토합니다. 설정 및 키는 원본 데이터베이스에서 사용되는 것과 동일한 ID 및 키로 채워져야 합니다.
계속하려면 적용을 선택하고 데이터베이스 복사본을 생성하려면 검토 + 만들기 및 생성을 선택합니다.
데이터베이스 수준 고객 관리형 키가 있는 보조 복제본(replica) 만들기
Azure Portal로 이동하여 데이터베이스 수준 고객 관리형 키로 구성된 Azure SQL Database로 이동합니다. 투명한 데이터 암호화 메뉴에 액세스하고 데이터베이스에서 사용 중인 현재 키 목록을 검사합니다.
데이터베이스의 데이터 관리에서 복제본(replica)을 선택합니다. 복제본(replica) 만들기를 선택하여 데이터베이스의 보조 복제본(replica)을 생성합니다.
SQL Database 만들기 - 지역 복제본(replica) 메뉴가 표시됩니다. 이 데이터베이스의 보조 서버를 사용하지만 복제하려는 데이터베이스와 설정은 동일합니다. 투명한 데이터 암호화 키 관리 섹션에서 투명한 데이터 암호화 구성을 선택합니다.
투명한 데이터 암호화 메뉴가 나타나면 이 데이터베이스 복제본에 대한 CMK 설정을 검토합니다. 설정 및 키는 주 데이터베이스에서 사용되는 것과 동일한 ID 및 키로 채워져야 합니다.
계속하려면 적용을 선택하고 데이터베이스 복사본을 생성하려면 검토 + 만들기 및 생성을 선택합니다.
Azure CLI의 현재 릴리스 설치에 대한 자세한 내용은 Azure CLI 설치 문서를 참조하세요.
current를 keys-filter로 설정한 expand-keys 매개 변수를 사용하여 주 데이터베이스에서 사용 중인 현재 키 목록을 미리 채웁니다.
az sql db show --name $databaseName --resource-group $resourceGroup --server $serverName --expand-keys --keys-filter current
사용자가 할당한 관리 ID, 그리고 교차 테넌트 액세스가 구성된 경우 페더레이션된 클라이언트 ID를 선택합니다.
새 데이터베이스를 보조 데이터베이스로 생성하고 원본 데이터베이스 및 위의 ID에서 가져온 미리 채워진 키 목록(교차 테넌트 액세스를 구성하는 경우 페더레이션된 클라이언트 ID)을 제공합니다.
# Create a secondary replica with Active Geo Replication with the same name as the primary database
az sql db replica create -g $resourceGroup -s $serverName -n $databaseName --partner-server $secondaryServer --partner-database $secondaryDatabase --partner-resource-group $secondaryResourceGroup -i --encryption-protector $encryptionProtector --user-assigned-identity-id $umi --keys $keys
Important
$keys는 원본 데이터베이스에서 검색된 공백으로 구분된 키 목록입니다.
데이터베이스의 복사본을 생성하려면 az sql db copy를 동일한 매개 변수와 함께 사용할 수 있습니다.
# Create a copy of a database configured with database level customer-managed keys
az sql db copy -g $resourceGroup -s $serverName -n $databaseName --dest-name $secondaryDatabase -i --encryption-protector $encryptionProtector --user-assigned-identity-id $umi --keys $keys
사용자가 할당한 관리 ID, 그리고 교차 테넌트 액세스가 구성된 경우 페더레이션된 클라이언트 ID를 선택합니다.
New-AzSqlDatabaseSecondary 명령을 사용하여 새 데이터베이스를 보조로 생성하고 -KeyList, -AssignIdentity, -UserAssignedIdentityId, -EncryptionProtector(필요한 경우 -FederatedClientId) 매개 변수를 사용하여 API 호출에서 원본 데이터베이스에서 가져온 미리 채워진 키 목록 및 위 ID(교차 테넌트 액세스를 구성한 경우 페더레이션된 클라이언트 ID)를 제공합니다.
# Create a secondary replica with Active Geo Replication with the same name as the primary database
$database = Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList -KeysFilter "current"
$database | New-AzSqlDatabaseSecondary -PartnerResourceGroupName <SecondaryResourceGroupName> -PartnerServerName <SecondaryServerName> -AllowConnections "All" -AssignIdentity -UserAssignedIdentityId <UserAssignedIdentityId> -EncryptionProtector <CustomerManagedKeyId> -FederatedClientId <FederatedClientId>
-KeyList $database.Keys.Keys
다음 REST API 요청을 사용하여 주 데이터베이스에서 사용 중인 현재 키 목록을 미리 입력합니다.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys($filter=pointInTime('current'))
사용자가 할당한 관리 ID, 그리고 교차 테넌트 액세스가 구성된 경우 페더레이션된 클라이언트 ID를 선택합니다.
새 데이터베이스를 보조 데이터베이스로 생성하고 원본 데이터베이스 및 위의 ID에서 가져온 미리 채워진 키 목록(교차 테넌트 액세스를 구성하는 경우 페더레이션된 클라이언트 ID)을 ARM 템플릿에서 keys_to_add 매개 변수로 제공합니다.
Get-AzSqlDatabase 명령과 -ExpandKeyList 및 -KeysFilter "2023-01-01" 매개 변수를 사용하여 주 데이터베이스에서 사용하는 키 목록을 미리 채웁니다. (2023-01-01은 데이터베이스를 복원할 시점의 예제입니다.) 모든 키를 검색하려는 경우 -KeysFilter를 제외합니다.
사용자가 할당한 관리 ID, 그리고 교차 테넌트 액세스가 구성된 경우 페더레이션된 클라이언트 ID를 선택합니다.
-FromPointInTimeBackup 매개 변수와 함께 Restore-AzSqlDatabase 명령을 사용하고 -KeyList, -AssignIdentity, -UserAssignedIdentityId, -EncryptionProtector(필요한 경우 -FederatedClientId) 매개 변수를 사용하여 API 호출에서 위 단계에서 확보한 미리 채워진 키 목록 및 위 ID(교차 테넌트 액세스를 구성한 경우 페더레이션된 클라이언트 ID)를 제공합니다.
Azure Portal로 이동하여 복원하려는 삭제된 데이터베이스의 논리 서버로 이동합니다. 데이터 관리에서 삭제된 데이터베이스를 선택합니다.
복원하려는 삭제된 데이터베이스를 선택합니다.
SQL Database 만들기 - 데이터베이스 복원 메뉴가 나타납니다. 필요한 원본 및 데이터베이스 세부 정보를 입력합니다. 투명한 데이터 암호화 키 관리 섹션에서 투명한 데이터 암호화 구성을 선택합니다.
투명한 데이터 암호화 메뉴가 나타나면 데이터베이스에 대한 사용자가 할당한 관리 ID, 고객 관리형 키 및 추가 데이터베이스 키 섹션을 구성합니다.
계속하려면 적용을 선택하고 데이터베이스 복사본을 생성하려면 검토 + 만들기 및 생성을 선택합니다.
Azure CLI의 현재 릴리스 설치에 대한 자세한 내용은 Azure CLI 설치 문서를 참조하세요.
expand-keys 매개 변수를 사용하여 삭제된 데이터베이스에서 사용하는 키 목록을 미리 채웁니다. 원본 데이터베이스에서 사용 중인 모든 키를 전달하는 것이 좋습니다. keys-filter 매개 변수를 사용하여 삭제 시 제공된 키를 사용하여 복원을 시도할 수도 있습니다.
az sql db show-deleted --name $databaseName --resource-group $resourceGroup --server $serverName --restorable-dropped-database-id "databaseName,133201549661600000" --expand-keys
Important
restorable-dropped-database-id는 서버에서 복원 가능한 삭제된 데이터베이스를 모두 나열하여 검색할 수 있으며 해당 형식은 databaseName,deletedTimestamp입니다.
사용자가 할당한 관리 ID, 그리고 교차 테넌트 액세스가 구성된 경우 페더레이션된 클라이언트 ID를 선택합니다.
새 데이터베이스를 복원 대상으로 생성하고 삭제된 원본 데이터베이스 및 위의 ID에서 가져온 미리 채워진 키 목록(교차 테넌트 액세스를 구성하는 경우 페더레이션된 클라이언트 ID)을 제공합니다.
# Create a restored database
az sql db restore --dest-name $destName --name $databaseName --resource-group $resourceGroup --server $serverName --subscription $subscriptionId --time $timestamp -i --encryption-protector $encryptionProtector --user-assigned-identity-id $umi --keys $keys --deleted-time "2023-02-06T11:02:46.160000+00:00"
Get-AzSqlDeletedDatabaseBackup 명령과 -ExpandKeyList 매개 변수를 사용하여 주 데이터베이스에서 사용하는 키 목록을 미리 채웁니다. 원본 데이터베이스에서 사용 중인 모든 키를 전달하는 것이 좋습니다. -KeysFilter 매개 변수를 사용하여 삭제 시 제공된 키를 사용하여 복원을 시도할 수도 있습니다.
DatabaseId는 서버에서 복원 가능한 삭제된 데이터베이스를 모두 나열하여 검색할 수 있으며 해당 형식은 databaseName,deletedTimestamp입니다.
사용자가 할당한 관리 ID, 그리고 교차 테넌트 액세스가 구성된 경우 페더레이션된 클라이언트 ID를 선택합니다.
-FromDeletedDatabaseBackup 매개 변수와 함께 Restore-AzSqlDatabase 명령을 사용하고 -KeyList, -AssignIdentity, -UserAssignedIdentityId, -EncryptionProtector(필요한 경우 -FederatedClientId) 매개 변수를 사용하여 API 호출에서 위 단계에서 확보한 미리 채워진 키 목록 및 위 ID(교차 테넌트 액세스를 구성한 경우 페더레이션된 클라이언트 ID)를 제공합니다.
SQL Database 만들기 메뉴가 나타납니다. 새 데이터베이스에 대한 기본 및 네트워킹 탭을 채웁니다. 추가 설정의 기존 데이터 사용 섹션에서 백업을 선택하고 지역 복제된 백업을 선택합니다.
보안 탭으로 이동합니다. 투명한 데이터 암호화 키 관리 섹션에서 투명한 데이터 암호화 구성을 선택합니다.
투명한 데이터 암호화 메뉴가 나타나면 데이터베이스 수준 CMK(고객 관리형 키)를 선택합니다. 사용자가 할당한 관리 ID, 고객 관리형 키 및 추가 데이터베이스 키는 복원하려는 원본 데이터베이스와 일치해야 합니다. 사용자가 할당한 관리 ID가 백업에 사용된 고객 관리형 키를 포함하는 키 자격 증명 모음에 액세스할 수 있는지 확인합니다.
계속하려면 적용을 선택하고 백업 데이터베이스를 생성하려면 검토 + 만들기 및 생성을 선택합니다.
Azure CLI의 현재 릴리스 설치에 대한 자세한 내용은 Azure CLI 설치 문서를 참조하세요.
expand-keys 매개 변수를 사용하여 데이터베이스 수준에서 고객 관리형 키로 구성된 데이터베이스의 지역 백업에서 사용하는 키 목록을 미리 채웁니다.
az sql db geo-backup --database-name $databaseName --g $resourceGroup --server $serverName --expand-keys
사용자가 할당한 관리 ID, 그리고 교차 테넌트 액세스가 구성된 경우 페더레이션된 클라이언트 ID를 선택합니다.
새 데이터베이스를 지역 복원 대상으로 생성하고 삭제된 원본 데이터베이스 및 위의 ID에서 가져온 미리 채워진 키 목록(교차 테넌트 액세스를 구성하는 경우 페더레이션된 클라이언트 ID)을 제공합니다.
# Create a geo restored database
az sql db geo-backup restore --geo-backup-id "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/recoverableDatabases/{databaseName}" --dest-database $destName --resource-group $resourceGroup --dest-server $destServerName -i --encryption-protector $encryptionProtector --user-assigned-identity-id $umi --keys $keys
DatabaseId는 서버에서 복원 가능한 삭제된 데이터베이스를 모두 나열하여 검색할 수 있으며 해당 형식은 databaseName,deletedTimestamp입니다.
사용자가 할당한 관리 ID, 그리고 교차 테넌트 액세스가 구성된 경우 페더레이션된 클라이언트 ID를 선택합니다.
-FromGeoBackup 매개 변수와 함께 Restore-AzSqlDatabase 명령을 사용하고 -KeyList, -AssignIdentity, -UserAssignedIdentityId, -EncryptionProtector(필요한 경우 -FederatedClientId) 매개 변수를 사용하여 API 호출에서 위 단계에서 확보한 미리 채워진 키 목록 및 위 ID(교차 테넌트 액세스를 구성한 경우 페더레이션된 클라이언트 ID)를 제공합니다.
투명한 데이터 암호화에 사용되는 고객 관리형 키를 자동 순환하도록 새로 복사되거나 복원된 데이터베이스를 구성할 수 있습니다. Azure Portal에서 또는 API를 사용하여 자동 키 순환을 사용하도록 설정하는 방법에 대한 자세한 내용은 데이터베이스 수준에서 자동 키 순환을 참조하세요.