이전 버전의 Microsoft Azure 주요 자격 증명 모음용 SQL Server 커넥터 백업을 복원할 때 발생하는 오류 33111
원래 KB 번호: 4470999
이 문서에서는 Microsoft Azure Key Vault 이전 버전의 SQL Server Connector를 사용하는 서버에서 수행되는 TDE(투명한 데이터 암호화) 백업을 복원하려고 할 때 발생하는 오류에 대해 설명합니다.
증상
Key Vault 1.0.4.0 또는 이전 버전에 SQL Server Connector를 사용하는 SQL Server 데이터베이스 백업을 Microsoft Azure 주요 자격 증명 모음용 SQL Server 커넥터 1.0.5.0으로 복원하려고 하면 문제가 발생합니다.
다음 Microsoft SQL Server 인스턴스를 배포한다고 가정합니다.
sql1
SQL Server instance Key Vault 1.0.4.0용 SQL Server 커넥터가 배포되었습니다.sql2
SQL Server instance 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
변경으로 인해 백업 및 복원 작업 중에 문제가 발생합니다.
예:
instance Key Vault 비대칭 키로 암호화된 데이터베이스 백업이 sql1
있습니다.
sql2
instance 비대칭 키를 만들었습니다.
instance 백업 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 Connector 버전 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 이전 버전의
sql2
SQL Server 커넥터를 instance 서버에 복사합니다.서버에서 다음 쿼리를
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>