적용 대상:
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics(전용 SQL 풀만 해당)
이 문서에서는 Azure Key Vault에서 TDE 보호기를 사용하는 서버에 대한 키 회전을 설명합니다. 서버의 논리적 TDE 보호기를 회전한다는 것은 서버의 데이터베이스를 보호하는 새 비대칭 키로 전환한다는 의미입니다. 키 회전은 온라인 작업이며, 전체 데이터베이스가 아닌 데이터베이스의 데이터 암호화 키를 단지 해독하고 다시 암호화하는 작업이기 때문에 완료되는 데 몇 초밖에 걸리지 않습니다.
이 문서에서는 서버에서 TDE 보호기를 회전하는 자동화된 방법과 수동 방법을 둘 다 설명합니다.
TDE 보호기 회전 시 중요한 고려 사항
- TDE 보호기가 변경/순환되면 백업된 로그 파일을 포함하여 데이터베이스의 이전 백업이 최신 TDE 보호기를 사용하도록 업데이트되지 않습니다. Azure Key Vault 또는 Azure Managed HSM에서 TDE 보호기로 암호화된 백업을 복원하려면 대상 서버에서 키 자료를 사용할 수 있는지 확인합니다. 따라서 데이터베이스 백업을 복원할 수 있도록 모든 이전 버전의 TDE 보호기를 Azure Key Vault 또는 Azure Managed HSM에 유지하는 것이 좋습니다.
- CMK(고객 관리형 키)에서 서비스 관리형 키로 전환하는 경우에도 이전에 사용한 모든 키를 Azure Key Vault 또는 Azure Managed HSM에 유지합니다. 이렇게 하면 백업된 로그 파일을 포함한 데이터베이스 백업을 Azure Key Vault 또는 Azure Managed HSM에 저장된 TDE 보호기를 사용하여 복원할 수 있습니다.
- 이전 백업 외에도 트랜잭션 로그 파일은 이전 TDE 보호기에 대한 액세스가 필요할 수도 있습니다. 이전 키가 필요한 나머지 로그가 있는지 확인하려면 키 순환을 수행한 후 sys.dm_db_log_info DMV(동적 관리 뷰)를 사용합니다. 이 DMV는 VLF의 암호화 키 지문과 함께 트랜잭션 로그의 VLF(가상 로그 파일)에 대한 정보를 반환합니다.
- 이전 키는 Azure Key Vault 또는 Azure Managed HSM에 보관해야 하며 데이터베이스의 백업 보존 정책으로 구성된 백업 보존 기간에 따라 서버에서 사용할 수 있어야 합니다. 이렇게 하면 서버의 모든 LTR(장기 보존) 백업을 이전 키를 사용하여 계속 복원할 수 있습니다.
참고
Azure Synapse Analytics에서 일시 중지된 전용 SQL 풀은 키를 회전하기 전에 반드시 다시 시작해야 합니다.
이 문서는 Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics(전용 SQL 풀(이전의 SQL DW))에 적용됩니다. Synapse 작업 영역 내의 전용 SQL 풀을 위한 TDE(투명한 데이터 암호화)에 관한 설명서는 Azure Synapse Analytics 암호화를 참조하세요.
사전 요구 사항
- 이 방법 가이드에서는 이미 Azure SQL Database나 Azure Synapse Analytics에 대해 Azure Key Vault의 키를 TDE 보호기로 사용하고 있다고 가정합니다.
BYOK 지원을 통한 투명한 데이터 암호화를 참조하세요.
- Azure PowerShell이 설치되어 작동해야 합니다.
자동 키 회전
서버에 대한 TDE 보호기를 구성할 때 Azure Portal에서 또는 아래 PowerShell이나 Azure CLI 명령을 통해 TDE 보호기에 대한 자동 순환을 사용하도록 설정할 수 있습니다. 사용하도록 설정하면 서버 또는 데이터베이스는 TDE 보호기로 사용되는 키의 새 버전에 대해 키 자격 증명 모음을 지속적으로 확인합니다. 새 버전의 키가 감지되면 서버 또는 데이터베이스의 TDE 보호기가 24시간 이내에 최신 키 버전으로 자동 순환됩니다.
서버 또는 관리형 인스턴스의 자동 순환을 Azure Key Vault의 자동 키 순환과 함께 사용하여 TDE 키에 대한 엔드 투 엔드 제로 터치 순환을 사용하도록 설정할 수 있습니다.
참고
서버 또는 관리되는 인스턴스에 지역 복제가 구성된 경우 자동 회전을 사용하도록 설정하기 전에 여기에 설명된 대로 추가 지침을 따라야 합니다.
Azure Portal 사용:
- 기존 서버 또는 관리되는 인스턴스에 대한 투명한 데이터 암호화 섹션으로 이동합니다.
-
고객 관리형 키 옵션을 선택하고 TDE 보호기로 사용할 키 자격 증명 모음 및 키를 선택합니다.
-
키 자동 회전 확인란을 선택합니다.
-
저장을 선택합니다.
Az PowerShell 모듈 설치 지침은 Azure PowerShell 설치를 참조하세요.
PowerShell을 사용하여 TDE 보호기에 자동 회전을 사용하도록 설정하려면 다음 스크립트를 참조하세요.
<keyVaultKeyId>
Azure Key Vault에서 검색할 수 있습니다.
Azure SQL 데이터베이스
Set-AzSqlServerTransparentDataEncryptionProtector 명령을 사용합니다.
Set-AzSqlServerTransparentDataEncryptionProtector -Type AzureKeyVault -KeyId <keyVaultKeyId> `
-ServerName <logicalServerName> -ResourceGroup <SQLDatabaseResourceGroupName> `
-AutoRotationEnabled <boolean>
Azure SQL Managed Instance
Set-AzSqlInstanceTransparentDataEncryptionProtector 명령을 사용합니다.
Set-AzSqlInstanceTransparentDataEncryptionProtector -Type AzureKeyVault -KeyId <keyVaultKeyId> `
-InstanceName <ManagedInstanceName> -ResourceGroup <ManagedInstanceResourceGroupName> `
-AutoRotationEnabled <boolean>
Azure CLI의 현재 릴리스 설치에 대한 자세한 내용은 Azure CLI 설치 문서를 참조하세요.
Azure CLI를 사용하여 TDE 보호기에 자동 회전을 사용하도록 설정하려면 다음 스크립트를 참조하세요.
Azure SQL 데이터베이스
az sql server tde-key set 명령을 사용합니다.
az sql server tde-key set --server-key-type AzureKeyVault
--auto-rotation-enabled true
[--kid] <keyVaultKeyId>
[--resource-group] <SQLDatabaseResourceGroupName>
[--server] <logicalServerName>
Azure SQL Managed Instance
az sql mi tde-key set 명령을 사용합니다.
az sql mi tde-key set --server-key-type AzureKeyVault
--auto-rotation-enabled true
[--kid] <keyVaultKeyId>
[--resource-group] <ManagedInstanceGroupName>
[--managed-instance] <ManagedInstanceName>
데이터베이스 수준에서 자동 키 순환
Azure SQL Database의 데이터베이스 수준에서 자동 키 순환을 사용하도록 설정할 수도 있습니다. 이는 서버의 데이터베이스 중 하나 또는 하위 집합에 대해서만 자동 키 순환을 사용하도록 설정하려는 경우에 유용합니다. 자세한 내용은 데이터베이스 수준 고객 관리형 키를 사용하는 TDE에 대한 ID 및 키 관리를 참조하세요.
PowerShell을 사용하여 데이터베이스 수준에서 TDE 보호기에 자동 순환을 사용하도록 설정하려면 다음 명령을 참조하세요.
-EncryptionProtectorAutoRotation
매개 변수를 사용하여 자동 키 순환을 사용하려면 $true
로 설정하거나 자동 키 순환을 사용하지 않도록 하려면 $false
로 설정합니다.
Set-AzSqlDatabase -ResourceGroupName <resource_group_name> -ServerName <server_name> -DatabaseName <database_name> -EncryptionProtectorAutoRotation:$true
Azure CLI를 사용하여 데이터베이스 수준에서 TDE 보호기에 자동 순환을 사용하도록 설정하려면 다음 명령을 참조하세요.
--encryption-protector-auto-rotation
매개 변수를 사용하여 자동 키 순환을 사용하려면 True
로 설정하거나 자동 키 순환을 사용하지 않도록 하려면 False
로 설정합니다.
az sql db update --resource-group <resource_group_name> --server <server_name> --name <database_name> --encryption-protector-auto-rotation True
지역 복제 구성에 대한 자동 키 순환
주 서버가 CMK 기반 TDE를 사용하도록 설정된 Azure SQL Database 지역 복제 구성에서 보조 서버도 주 서버에서 사용되는 것과 동일한 키를 사용하여 CMK 기반 TDE를 사용하도록 구성해야 합니다.
Azure Portal 사용:
주 서버에 대한 투명한 데이터 암호화 섹션을 찾습니다.
고객 관리형 키 옵션을 선택하고 TDE 보호기로 사용할 키 자격 증명 모음 및 키를 선택합니다.
키 자동 회전 확인란을 선택합니다.
저장을 선택합니다.
보조 서버에 대한 투명한 데이터 암호화 섹션을 찾습니다.
고객 관리형 키 옵션을 선택하고 TDE 보호기로 사용할 키 자격 증명 모음 및 키를 선택합니다. 주 서버에 사용한 것과 동일한 키를 사용합니다.
이 키를 기본 TDE 보호기로 설정을 선택 취소합니다.
저장을 선택합니다.
키가 주 서버에서 순환되면 보조 서버로 자동 전송됩니다.
참고
주 서버에서 동일한 키 자격 증명 모음 키를 보조 서버의 기본 TDE 보호기로 사용하는 경우 두 서버 모두에 대해 자동 회전 키가 사용하도록 설정되어 있는지 확인합니다. 이렇게 하지 않으면 자동 회전 워크플로가 오류 상태가 되며 추가 수동 키 회전 작업을 방지할 수 있습니다.
<keyVaultKeyId>
Azure Key Vault에서 검색할 수 있습니다.
Add-AzSqlServerKeyVaultKey 명령을 사용하여 보조 서버에 새 키를 추가합니다.
# add the key from Azure Key Vault to the secondary server
Add-AzSqlServerKeyVaultKey -KeyId <keyVaultKeyId> -ServerName <logicalServerName> -ResourceGroup <SQLDatabaseResourceGroupName>
첫 번째 단계에서와 동일한 키를 주 서버에 추가합니다.
# add the key from Azure Key Vault to the primary server
Add-AzSqlServerKeyVaultKey -KeyId <keyVaultKeyId> -ServerName <logicalServerName> -ResourceGroup <SQLDatabaseResourceGroupName>
Set-AzSqlInstanceTransparentDataEncryptionProtector를 사용하여 자동 키 순환이 true
로 설정된 주 서버에서 키를 주 보호기로 설정합니다.
Set-AzSqlServerTransparentDataEncryptionProtector -Type AzureKeyVault -KeyId <keyVaultKeyId> `
-ServerName <logicalServerName> -ResourceGroup <SQLDatabaseResourceGroupName> `
-AutoRotationEnabled $true
Get-AzKeyVaultKey 및 Set-AzKeyVaultKeyRotationPolicy 명령을 사용하여 Azure Key Vault에서 Azure Key Vault 키를 회전합니다.
Get-AzKeyVaultKey -VaultName <keyVaultName> -Name <keyVaultKeyName> | Set-AzKeyVaultKeyRotationPolicy -KeyRotationLifetimeAction @{Action = "Rotate"; TimeBeforeExpiry = "P18M"}
SQL Server(주 및 보조)에 새 키 또는 키 버전이 있는지 확인합니다.
참고
키 순환을 서버에 적용하는 데 최대 1시간이 걸릴 수 있습니다. 이 명령을 실행하기 전에 한 시간 이상 기다립니다.
Get-AzSqlServerKeyVaultKey -KeyId <keyVaultKeyId> -ServerName <logicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
각 서버에 대해 서로 다른 키 사용
Azure Portal에서 CMK 기반 TDE를 구성할 때 다른 키 자격 증명 모음 키를 사용하여 주 및 보조 서버를 구성할 수 있습니다. Azure Portal에서 주 서버를 보호하는 데 사용되는 키가 보조 서버에 복제된 주 데이터베이스를 보호하는 것과 동일한 키인지 확실하지 않습니다. 그러나 PowerShell, Azure CLI 또는 REST API를 사용하여 서버에서 사용되는 키에 대한 세부 정보를 가져올 수 있습니다. 이는 자동 순환된 키가 주 서버에서 보조 서버로 전송됨을 보여줍니다.
다음은 PowerShell 명령을 사용하여 키 순환 후 주 서버에서 보조 서버로 전송되는 키를 검사하는 예제입니다.
주 서버에서 다음 명령을 실행하여 서버의 키 세부 정보를 표시합니다.
Get-AzSqlServerKeyVaultKey -ServerName <logicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
다음과 비슷한 결과가 표시됩니다.
ResourceGroupName : <SQLDatabaseResourceGroupName>
ServerName : <logicalServerName>
ServerKeyName : <keyVaultKeyName>
Type : AzureKeyVault
Uri : https://<keyvaultname>.vault.azure.net/keys/<keyName>/<GUID>
Thumbprint : <thumbprint>
CreationDate : 12/13/2022 8:56:32 PM
보조 서버에서 동일한 Get-AzSqlServerKeyVaultKey
명령을 실행합니다.
Get-AzSqlServerKeyVaultKey -ServerName <logicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
보조 서버에서 기본 TDE 보호기가 주 서버와 다른 키를 사용하는 경우 두 개 이상의 키가 표시됩니다. 첫 번째 키는 기본 TDE 보호기이고 두 번째 키는 복제된 데이터베이스를 보호하는 데 사용되는 주 서버에서 사용된 키입니다.
키가 주 서버에서 순환되면 보조 서버로 자동 전송됩니다. 주 서버에서 Get-AzSqlServerKeyVaultKey
를 다시 실행하려는 경우 두 개의 키가 표시됩니다. 첫 번째 키는 원래 키이고 두 번째 키는 키 순환의 일부로 생성된 현재 키입니다.
보조 서버에서 Get-AzSqlServerKeyVaultKey
명령을 실행하면 주 서버에 있는 것과 동일한 키도 표시됩니다. 그러면 주 서버의 순환된 키가 보조 서버로 자동 전송되고 데이터베이스 복제본(replica)을 보호하는 데 사용됩니다.
수동 키 회전
수동 키 회전은 다음의 명령을 사용하여 새로운 키를 추가합니다. 새로운 키는 새로운 키 이름이나 심지어 다른 키 자격 증명 모음 아래에 위치할 수 있습니다. 이 방법을 사용하면 고가용성 및 지리적으로 분산된 시나리오를 지원하기 위해 서로 다른 키 자격 증명 모음에 동일한 키를 추가할 수 있습니다. 수동 키 회전은 Azure Portal을 사용하여 수행할 수도 있습니다.
수동 키 회전을 사용하면 (수동으로 또는 키 자격 증명 모음의 자동 키 회전 정책을 통해) 키 자격 증명 모음에서 새 키 버전이 생성될 때 동일한 키를 서버의 TDE 보호기로 수동으로 설정해야 합니다.
참고
키 자격 증명 모음 이름과 키 이름을 결합한 길이는 94자를 초과할 수 없습니다.
Azure Portal 사용:
- 기존 서버 또는 관리되는 인스턴스에 대한 투명한 데이터 암호화 메뉴로 이동합니다.
-
고객 관리형 키 옵션을 선택하고 새 TDE 보호기로 사용할 키 자격 증명 모음 및 키를 선택합니다.
-
저장을 선택합니다.
Add-AzKeyVaultKey 명령을 사용하여 키 자격 증명 모음에 새 키를 추가합니다.
# add a new key to Azure Key Vault
Add-AzKeyVaultKey -VaultName <keyVaultName> -Name <keyVaultKeyName> -Destination <hardwareOrSoftware>
Azure SQL Database의 경우 다음을 사용합니다.
# add the new key from Azure Key Vault to the server
Add-AzSqlServerKeyVaultKey -KeyId <keyVaultKeyId> -ServerName <logicalServerName> -ResourceGroup <SQLDatabaseResourceGroupName>
# set the key as the TDE protector for all resources under the server
Set-AzSqlServerTransparentDataEncryptionProtector -Type AzureKeyVault -KeyId <keyVaultKeyId> `
-ServerName <logicalServerName> -ResourceGroup <SQLDatabaseResourceGroupName>
Azure SQL Managed Instance의 경우 다음을 사용합니다.
# add the new key from Azure Key Vault to the managed instance
Add-AzSqlInstanceKeyVaultKey -KeyId <keyVaultKeyId> -InstanceName <ManagedInstanceName> -ResourceGroup <ManagedInstanceResourceGroupName>
# set the key as the TDE protector for all resources under the managed instance
Set-AzSqlInstanceTransparentDataEncryptionProtector -Type AzureKeyVault -KeyId <keyVaultKeyId> `
-InstanceName <ManagedInstanceName> -ResourceGroup <ManagedInstanceResourceGroupName>
az keyvault key create 명령을 사용하여 키 자격 증명 모음에 새 키를 추가합니다.
# add a new key to Azure Key Vault
az keyvault key create --name <keyVaultKeyName> --vault-name <keyVaultName> --protection <hsmOrSoftware>
Azure SQL Database의 경우 다음을 사용합니다.
# add the new key from Azure Key Vault to the server
az sql server key create --kid <keyVaultKeyId> --resource-group <SQLDatabaseResourceGroupName> --server <logicalServerName>
# set the key as the TDE protector for all resources under the server
az sql server tde-key set --server-key-type AzureKeyVault --kid <keyVaultKeyId> --resource-group <SQLDatabaseResourceGroupName> --server <logicalServerName>
Azure SQL Managed Instance의 경우 다음을 사용합니다.
# add the new key from Azure Key Vault to the managed instance
az sql mi key create --kid <keyVaultKeyId> --resource-group <Managed InstanceResourceGroupName> --managed-instance <ManagedInstanceName>
# set the key as the TDE protector for all resources under the managed instance
az sql mi tde-key set --server-key-type AzureKeyVault --kid <keyVaultKeyId> --resource-group <ManagedInstanceResourceGroupName> --managed-instance <ManagedInstanceName>
TDE 보호기 모드 스위치
Azure Portal을 사용하여 TDE 보호기를 Microsoft 관리에서 BYOK 모드로 전환하려면 다음을 수행합니다.
- 기존 서버 또는 관리되는 인스턴스에 대한 투명한 데이터 암호화 메뉴로 이동합니다.
-
고객 관리형 키 옵션을 선택합니다.
- TDE 보호기로 사용할 키 자격 증명 모음 및 키를 선택합니다.
-
저장을 선택합니다.
Azure SQL 데이터베이스
TDE 보호기를 Microsoft 관리에서 BYOK 모드로 전환하려면 Set-AzSqlServerTransparentDataEncryptionProtector 명령을 사용합니다.
Set-AzSqlServerTransparentDataEncryptionProtector -Type AzureKeyVault `
-KeyId <keyVaultKeyId> -ServerName <logicalServerName> -ResourceGroup <SQLDatabaseResourceGroupName>
TDE 보호기를 BYOK 모드에서 Microsoft 관리로 전환하려면 Set-AzSqlServerTransparentDataEncryptionProtector 명령을 사용합니다.
Set-AzSqlServerTransparentDataEncryptionProtector -Type ServiceManaged `
-ServerName <logicalServerName> -ResourceGroup <SQLDatabaseResourceGroupName>
Azure SQL Managed Instance
TDE 보호기를 Microsoft 관리에서 BYOK 모드로 전환하려면 Set-AzSqlInstanceTransparentDataEncryptionProtector 명령을 사용합니다.
Set-AzSqlServerTransparentDataEncryptionProtector -Type AzureKeyVault `
-KeyId <keyVaultKeyId> <ManagedInstanceName> -ResourceGroup <ManagedInstanceResourceGroupName>
TDE 보호기를 BYOK 모드에서 Microsoft 관리로 전환하려면 Set-AzSqlInstanceTransparentDataEncryptionProtector 명령을 사용합니다.
Set-AzSqlServerTransparentDataEncryptionProtector -Type ServiceManaged `
-InstanceName <ManagedInstanceName> -ResourceGroup <ManagedInstanceResourceGroupName>e>
Azure SQL 데이터베이스
다음 예에서는 az sql server tde-key set를 사용합니다.
TDE 보호기를 Microsoft 관리에서 BYOK 모드로 전환하려면:
az sql server tde-key set --server-key-type AzureKeyVault --kid <keyVaultKeyId> --resource-group <SQLDatabaseResourceGroupName> --server <logicalServerName>
TDE 보호기를 BYOK 모드에서 Microsoft 관리로 전환하려면:
az sql server tde-key set --server-key-type ServiceManaged --resource-group <SQLDatabaseResourceGroupName> --server <logicalServerName>
Azure SQL Managed Instance
다음 예에서는 az sql mi tde-key set를 사용합니다.
TDE 보호기를 Microsoft 관리에서 BYOK 모드로 전환하려면:
az sql mi tde-key set --server-key-type AzureKeyVault --kid <keyVaultKeyId> --resource-group <ManagedInstanceResourceGroupName> --managed-instance <ManagedInstanceName>
TDE 보호기를 BYOK 모드에서 Microsoft 관리로 전환하려면:
az sql mi tde-key set --server-key-type ServiceManaged --resource-group <ManagedInstanceResourceGroupName> --managed-instance <ManagedInstanceName>
관련 콘텐츠