이전 버전의 Microsoft Azure 주요 자격 증명 모음용 SQL Server 커넥터 백업을 복원할 때 오류 33111 발생
원래 KB 번호: 4470999
이 문서에서는 Microsoft Azure Key Vault용 SQL Server 커넥터의 이전 버전을 사용하는 서버에서 수행되는 TDE(투명한 데이터 암호화) 백업을 복원하려고 할 때 발생하는 오류를 설명합니다.
증상
Sql Server Connector for Key Vault 1.0.4.0 또는 이전 버전을 사용하여 1.0.5.0을 Microsoft Azure 주요 자격 증명 모음용 SQL Server 커넥터 SQL Server에서 데이터베이스 백업을 복원하려고 하면 문제가 발생합니다.
다음 Microsoft SQL Server 인스턴스를 배포한다고 가정합니다.
SQL Server 인스턴스
sql1
에는 Key Vault 1.0.4.0용 SQL Server 커넥터가 배포되었습니다.SQL Server 인스턴스
sql2
에는 Key Vault 1.0.5.0용 SQL Server 커넥터가 배포되었습니다.다음 쿼리를 사용하여 Key Vault에서 동일한 비대칭 키 원본의 인스턴스와
sql2
둘 다sql1
에 비대칭 키를 배포합니다.CREATE ASYMMETRIC KEY TDE_KEY FROM PROVIDER AzureKeyVaultProvider WITH PROVIDER_KEY_NAME = 'key1', CREATION_DISPOSITION = OPEN_EXISTING
두 서버에서 지문 값을 검토하는 경우 지문 길이는 동일한 원본에서 만들어졌지만 다릅니다. 버전 1.0.5.0 지문이 버전 1.0.4.0보다 깁니다.
1.0.4.0 지문의 예:
0x2C5677D76F76D77F80
1.0.5.0 지문의 예:
0x373B314B78E8D59A0925494558FEF14B726216C5
변경으로 인해 백업 및 복원 작업 중에 문제가 발생합니다.
예제:
인스턴스의 Key Vault에서 비대칭 키로 암호화된 데이터베이스 백업이 있습니다 sql1
.
인스턴스에 sql2
비대칭 키가 생성되었습니다.
인스턴스에서 sql2
백업을 복원하려고 하면 작업이 실패하고 다음 메시지와 유사한 오류 메시지가 반환됩니다.
Msg 33111, Level 16, State 4, Line <LineNumber>
지문이 '0x2C5677D76F76D77F80'인 서버 비대칭 키를 찾을 수 없습니다.
참고:
각 키의 지문을 검색하는 쿼리는 다음과 같습니다.
SELECT thumbprint, * FROM master.sys.asymmetric_keys
각 TDE 데이터베이스의 지문을 검색하는 쿼리는 다음과 같습니다.
SELECT DatabaseName(ddek.database_id) AS DatabaseName, ak.name
AS [Asymmetric key Name], ak.thumbprint FROM
sys.dm_database_encryption_keys ddek INNER JOIN
master.sys.asymmetric_keys ak ON
ak.thumbprint = ddek.encryptor_thumbprint
원인
프로그램이 지문을 계산하는 방식을 변경하는 Key Vault용 SQL Server 커넥터 버전 1.0.5.0에 업데이트가 도입되었습니다. 버전 1.0.5.0에서 이 계산은 다음 마이그레이션 시나리오를 지원하기 위해 프로그램 엔진에서 사용하는 논리와 일치합니다.
원본: EKM(Extensible Key Management)을 사용하는 온-프레미스 Microsoft SQL Server
받는 방법: TDE(투명한 데이터 암호화)에 BYOK(Bring Your Own Key) 지원을 사용하는 Microsoft Azure SQL Database
이 변경으로 인해 버전 1.0.4.0 또는 이전 버전에서 데이터베이스 백업을 복원하려고 할 때 문제가 발생할 수 있습니다.
해결
Key Vault 1.0.4.0 이전 버전의 SQL Server 커넥터를
sql2
인스턴스 서버에 복사합니다.서버에서 다음 쿼리를
sql2
실행하여 버전 1.0.4.0으로 변경CRYPTOGRAPHIC PROVIDER
합니다.ALTER CRYPTOGRAPHIC PROVIDER AzureKeyVaultProvider FROM FILE = 'FilePath\FileName\SQL Server Connector for Microsoft Azure Key Vault\1.0.4.0\Microsoft.AzureKeyVaultService.EKM.dll'
SQL Server를 다시 시작하십시오.
1.0.4.0을 사용하여
CRYPTOGRAPHIC PROVIDER
새 비대칭 키를 만듭니다.CREATE ASYMMETRIC KEY TDE_KEY_1040 FROM PROVIDER AzureKeyVaultProvider WITH PROVIDER_KEY_NAME = 'key1', CREATION_DISPOSITION = OPEN_EXISTING
다음 쿼리를 사용하여 비대칭 키가 있는지 확인할 수 있습니다.
SELECT thumbprint,* FROM master.sys.asymmetric_keys
다음 쿼리와 유사한 쿼리를 사용하여 비대칭 키 매핑된 로그인(다음 예제의 TDE_Login)에 자격 증명을 추가합니다.
ALTER LOGIN [Contoso\DomainUser] DROP CREDENTIAL sysadmin_ekm_cred; ALTER LOGIN TDE_Login ADD CREDENTIAL sysadmin_ekm_cred;
이제 백업을 복원할 수 있습니다.
다음 쿼리를
sql2
실행하여 버전 1.0.5.0으로 되돌려CRYPTOGRAPHIC PROVIDER
갑니다.ALTER CRYPTOGRAPHIC PROVIDER AzureKeyVaultProvider FROM FILE = 'FilePath\FileName\SQL Server Connector for Microsoft Azure Key Vault\1.0.5.0\Microsoft.AzureKeyVaultService.EKM.dll'
SQL Server를 다시 시작하십시오.
새 지문을 사용하려면 동일한 비대칭 키 또는 새 버전 비대칭 키를 사용하여 다음 쿼리를 실행합니다.
ALTER DATABASE ENCRYPTION KEY ENCRYPTION BY SERVER ASYMMETRIC KEY <KeyName_1.0.5.0_version>