MASTER 데이터베이스를 복원하여 TDE 인증서를 복구 할 수 있습니까?


10

(다행히도 현재로서는이 상황에 있지 않으며, 옵션이 발생할 경우 어떤 옵션이 있는지 미리 계획하고 있습니다.)

TDE (Transparent Date Encryption)로 암호화 된 데이터베이스의 경우 데이터베이스 백업에 사용 된 인증서 백업이 없으면 데이터베이스 백업 사본을 복구 할 수 없습니다.

당신이 그것을하지 않으면 어떻게? 추가 옵션이 있습니까?

전체 서버 장애가 발생하면 새 하드웨어에서 MASTER 데이터베이스 백업을 복원해도 인증서가 복원됩니까?

답변:


9

TDE는 master에 저장된 인증서 (데이터베이스 암호화 키를 암호화하는 데 사용됨)를 사용하기 때문에 인증서를 해독 할 수있는 방식으로 마스터 데이터베이스를 다른 서버로 복원 할 수있는 경우 에만 작동 합니다 .

이것은 TDE 암호화 계층입니다.

  1. 서비스 마스터 키 (Windows에 의해 보호되며 서비스 계정 자격 증명 및 컴퓨터 키에 연결됨)
  2. 데이터베이스 마스터 키 (이 경우 마스터 데이터베이스 용 키)
  3. 증명서
  4. TDE 암호화 키

처음 세 항목은 마스터 데이터베이스에 저장되며 모두 백업 할 수 있습니다. 네 번째는 암호화 된 데이터베이스의 헤더에 # 3의 인증서로 암호화되어 저장됩니다.

따라서 실패 시나리오에서는 TDE 키를 읽을 수 있도록 충분한 암호화 계층 구조를 복원해야합니다. SQL Server는 설치시 서비스 마스터 키를 만듭니다. 따라서 마스터 데이터베이스를 다른 인스턴스로 복원하는 동안 항목 2와 3도 복원되지만이를 해독하는 데 필요한 키는 존재하지 않습니다. 결과 : 읽을 수없는 데이터입니다.

가장 좋은 두 가지 옵션은 백업에서 인증서 (# 3)를 복원하거나 (어떤 이유로 마스터를 복원 할 수없는 경우 좋은 옵션) 백업에서 마스터 데이터베이스와 마스터 키 (# 2)를 복원하는 것입니다. 이 키로 보호되는 인증서 / 키가 많고 한 번에 모두 액세스 할 수 있도록해야하는 경우 마스터 키를 복원하는 것이 더 좋습니다. 여기에는 일반적으로 마스터 데이터베이스 복원 (콜 레이션, 로그인, 데이터베이스 이름 및 파일 경로 등)과 관련된주의 사항이 있습니다.

일반적으로 복구 시나리오에서는 마스터 복원 만 권장합니다. 마이그레이션 / 스케일 아웃 시나리오 (예 : 가용성 그룹 / 미러링을 TDE로 암호화 된 데이터베이스 사용)와 같이 이동하는 각 인스턴스에 고유 한 마스터 키를 사용하여 암호화되도록 인증서 (# 3)를 백업 / 복원하는 것이 좋습니다. 에. 인증서 백업에 개인 키를 포함시켜야합니다.

어쨌든 키 / 인증서 백업을 작성하여 안전하게 보호하고 중복 된 안전한 위치에 저장해야합니다. 단순히 마스터 백업 해도 TDE 재해에서 벗어날 수 는 없습니다 . 하나 이상의 키 또는 인증서 백업이 필요합니다.


흠, SMK (1) 또는 마스터 db DMK (2)를 복원하지 않고 다른 서버에서 인증서를 어떻게 복원 할 수 있습니까? 새 서버에서 SMK / DMK에 "연결"됩니까?
BradC

아, 나는 그것을 얻는다 생각합니다 : 인증서를 내보낼 때 명시 적으로 내보낼 키를 제공하여 원래 서버의 SMK / DMK에 대한 의존성을 대체합니다. 새 서버로 가져 오면 새 서버의 SMK / DMK로 종속성을 전송합니다. 그 소리가 맞습니까?
BradC

그렇습니다. 정확합니다. 인증서를 내보내거나 가져올 때는 백업을 암호화 / 암호 해독하는 데 사용되는 암호를 제공해야합니다. 백업을 복원하면 인증서를 가져 와서 대상 서버의 DMK로 다시 암호화합니다.
db2

5

1. 평소와 같이 암호화 된 백업을 다른 서버로 복원하려면 다음 오류가 발생합니다

 Cannot find server certificate with thumbprint …...

2. 인증서 이름 찾기 :이 예에서는 vestacert

   SELECT  * FROM   sys.certificates

3. 소스 서버 (소스 암호화 서버)에서 인증서 백업 :

BACKUP CERTIFICATE vestacert
TO FILE = 'c:\Backup\certificate_TDE_Test_Certificate.cer'
WITH PRIVATE KEY
(FILE = 'c:\Backup\certificate_TDE_Test_Key.pvk',
ENCRYPTION BY PASSWORD = 'Password12#')

4. UAT 서버에서 새 마스터 인증서를 작성하십시오 (아직없는 경우).

USE master GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'D1ffPa$$w0rd'

5. UAT 서버 (UAT 서버)에 백업 인증서 복원

CREATE CERTIFICATE vestacert2
FROM FILE = 'C:\tmp\certificate_TDE_Test_Certificate.cer'     
WITH PRIVATE KEY (FILE = 'C:\tmp\LCMS\certificate_TDE_Test_Key.pvk', 
DECRYPTION BY PASSWORD = 'Passsword12#')

6.이 단계 후에 백업 복원에는 오류가 없으며 모든 데이터를 읽을 수 있습니다.

그러나 재미있는 점은 암호화를 간단히 제거하고 새 백업을 수행하고 최종 서버 (최종 서버)에서 복원하는 것이 작동하지 않고 다음 오류가 발생한다는 것입니다. "mydb_log"파일이 올바르게 초기화되지 않았습니다. 자세한 내용은 오류 로그를 확인하십시오.

8. UAT에서 암호화를 제거하는 올바른 방법은 아래에서 단계별로 아래에서 위로 모든 기호를 제거하는 것입니다.

    USE master
    ALTER DATABASE mydb SET ENCRYPTION OFF
    USE mydb
    DROP DATABASE ENCRYPTION KEY 
    USE master
    DROP CERTIFICATE vestacert2 
    DROP MASTER KEY

9. UAT 서버에서 새 백업을 생성하고 최종 서버로 복원

좋은 기사 : http://sqlserverzest.com/2013/10/03/sql-server-restoring-a-tde-encrypted-database-to-a-different-server/


1
로그 파일에 여전히 암호화 된 내용이 있으므로 로그 복원에 실패합니다. 비활성화 한 후 단순 모드로 전환하고 다시 로그를 자른 다음 백업을 다시 자릅니다.
IDisposable

0

시스템이 충돌하여 사용할 수없는 경우 새 시스템 에서 동일한 서비스 계정을 사용하는 한 새 시스템을 구축하고 기존 시스템에서 마스터 데이터베이스를 복원하여 TDE 인증서를 복구 할 수 있습니다.. 그런 다음 시스템을 다시 시작하여 로컬 시스템 키로 서비스 마스터 키의 암호화를 수정해야합니다. 그런 다음 TDE 인증서를 백업하거나 사용자 데이터베이스를 복원하고 데이터에 액세스 할 수 있어야합니다. 서비스 마스터 키는 두 가지 방식으로 Windows 서버의 Data Protection API에 의해 보호됩니다. 먼저 시스템에 특정한 로컬 컴퓨터 키를 사용하고 두 번째는 데이터베이스 엔진의 서비스 계정을 사용합니다. 시스템 충돌로 인해 원래 시스템의 로컬 시스템 키가 더 이상 없으므로 동일한 서비스 계정을 사용해야합니다. TDE 인증서는 데이터베이스와 함께 백업되지만 암호화 계층 구조가 완료 될 때까지 액세스 할 수 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.