SQL Always On 경우 데이터베이스에서 복구 데이터 암호화의 지침을 사용하여 BitLocker 정보를 암호화하는 경우 추가 단계가 필요합니다. 추가 단계를 통해 장애 조치(failover) 이벤트가 발생할 때 모든 Always On 노드가 DMK(데이터베이스 마스터 키)를 자동으로 열 수 있습니다. 다음 단계를 통해 수동 개입 없이 BitLocker 키를 원활하게 검색할 수 있습니다.
데이터베이스에서 BitLocker 복구 데이터가 암호화되는 경우 SQL Always On 개요
SQL Server 계층적 인프라를 사용하여 데이터를 암호화하며 암호화 계층 구조에 대해 자세히 설명합니다.
- SMK(사이트 마스터 키) - 이 키는 각 SQL Server Always On 노드에 고유하고 복제되지 않는 instance별 키입니다. 데이터베이스 master 키를 암호화하는 데 사용됩니다.
- DMK(데이터베이스 마스터 키) - 이 키는 데이터베이스에 저장되고 복제됩니다. BitLockerManagement_CERT 암호화하는 데 사용됩니다.
- BitLockerManagement_CERT - 이 인증서는 데이터베이스에 저장되고 복제됩니다. 복구 키와 같은 일부 BitLocker 관련 데이터를 암호화하는 데 사용됩니다.
SMK는 DMK 암호를 암호화합니다. SMK는 노드별로 다릅니다. 장애 조치(failover) 이벤트가 발생하면 새 주 노드는 다른 SMK로 암호화되었으므로 DMK 암호를 해독할 수 없습니다. 각 노드에서 DMK 암호를 설정하면 노드가 장애 조치(failover)시 암호를 해독할 수 있습니다.
참고
BitLockerManagement_CERT 열의 암호화를 수행합니다. 이 인증서가 손실되거나 삭제되었거나 암호화된 DMK가 손실되거나 삭제된 경우 BitLocker 키를 다시 암호화하고 다시 암호화해야 합니다.
DMK(데이터베이스 마스터 키) 암호를 알고 있는 경우
Configuration Manager 데이터베이스를 호스트하는 가용성 그룹의 각 노드에서 다음 명령을 실행합니다.
중요
다음 명령 합니다.
- 모든 곳을 선택한 강력한 암호로 대체
password합니다. 나중에 참조할 수 있도록 암호를 안전하게 저장해야 합니다. - 를 cm(Configuration Manager) 데이터베이스의 이름으로 바꿉니다
CM_XXX.
EXEC sp_control_dbmasterkey_password
@db_name = N'CM_XXX',
@password = N'password',
@action = N'add';
이 명령은 DMK 암호를 로컬 SMK(서비스 마스터 키)에 등록하여 장애 조치(failover) 이벤트가 발생할 때 SQL Server DMK를 자동으로 열 수 있도록 합니다. 이 프로세스를 통해 장애 조치(failover) 또는 다시 시작 후 해당 노드에서 DMK의 암호를 자동으로 해독할 수 있습니다.
모든 노드가 DMK(데이터베이스 마스터 키)를 자동으로 열고 데이터의 암호를 해독할 수 있는지 확인하려면 모든 노드가 DMK(데이터베이스 마스터 키)를 자동으로 열고 이 문서의 데이터 암호를 해독할 수 있는지 확인 섹션을 참조하세요.
기존 DMK(데이터베이스 마스터 키) 암호를 알 수 없는 경우
기존 DMK 암호를 알 수 없는 경우 기존 DMK를 삭제하고 알려진 암호를 사용하여 새로 만들어야 합니다. 이 단계에서는 이 절차를 수행하는 방법을 설명합니다.
유효한 DMK 찾기
유효한 DMK가 있는 노드를 알 수 없는 경우 다음 단계에 따라 기존 DMK가 열려 있는 위치를 확인합니다.
중요
다음 쿼리 및 명령에서 다음을 수행합니다.
- 모든 곳을 선택한 강력한 암호로 대체
password합니다. 나중에 참조할 수 있도록 암호를 알려진 위치에 안전하게 저장해야 합니다. - 를 cm(Configuration Manager) 데이터베이스의 이름으로 바꿉니다
CM_XXX.
주 노드에서 다음 쿼리를 실행합니다.
SELECT TOP 5 RecoveryAndHardwareCore.DecryptString(RecoveryKey, DEFAULT) FROM RecoveryAndHardwareCore_Keys ORDER BY LastUpdateTime DESC결과 쿼리에서 다음을 수행합니다.
- DMK가 열려 있는 경우 쿼리는 유효한 키가 있는 모든 행에 대한 일반 텍스트 값을 반환합니다. 이 노드는 시작할 노드이며 다음 단계를 건너뛸 수 있습니다.
- DMK가 열려 있지 않으면 쿼리는 모든 행에 대해 NULL 값을 반환합니다. 현재 노드는 DMK가 열려 있는 노드가 아닙니다. 다음 단계에 따라 DMK가 열려 있는 노드를 찾습니다.
쿼리가 모든 NULL 값을 반환하는 경우 각 보조 노드로 장애 조치(failover)하고 RecoveryAndHardwareCore_Keys 성공적으로 암호를 해독할 수 있는 노드가 발견될 때까지 이전 단계를 반복합니다. 이 노드는 시작할 노드입니다.
새 DMK(데이터베이스 마스터 키) 만들기
열려 있는 DMK가 있는 적절한 노드가 식별되면 다음 단계를 수행합니다.
이전 단계에서 식별된 노드에서 다음 쿼리를 실행하여 프라이빗 키를 사용하여 BitLockerManagement_CERT 인증서를 내보냅니다. 강력한 암호를 사용해야 합니다.
BACKUP CERTIFICATE BitLockerManagement_CERT TO FILE = 'C:\Windows\Temp\BitLockerManagement_CERT' WITH PRIVATE KEY ( FILE = 'C:\Windows\Temp\BitLockerManagement_CERT_KEY', ENCRYPTION BY PASSWORD = 'password' );기존 DMK를 내보내기 위해 다음 쿼리를 실행하여 기존 DMK(데이터베이스 마스터 키)를 백업합니다.
BACKUP MASTER KEY TO FILE = 'C:\Windows\Temp\DMK' ENCRYPTION BY PASSWORD = 'password';참고
이 단계는 선택 사항이지만 권장됩니다. 백업을 안전한 알려진 위치에 유지해야 합니다.
다음 쿼리를 실행하여 기존 인증서 및 DMK를 삭제합니다.
DROP CERTIFICATE BitLockerManagement_CERT; DROP MASTER KEY;이 단계에서는 이전 키를 제거합니다.
다음 쿼리를 실행하여 새 DMK를 만듭니다. 강력한 암호를 사용해야 합니다.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';다음 쿼리를 실행하여 로컬 SMK에 새 DMK 암호를 등록합니다.
EXEC sp_control_dbmasterkey_password @db_name = N'CM_XXX', @password = N'password', @action = N'add';다음 쿼리를 실행하여 이전에 내보낸 BitLockerManagement_CERT 인증서를 가져옵니다.
CREATE CERTIFICATE BitLockerManagement_CERT AUTHORIZATION RecoveryAndHardwareCore FROM FILE = 'C:\Windows\Temp\BitLockerManagement_CERT' WITH PRIVATE KEY ( FILE = 'C:\Windows\Temp\BitLockerManagement_CERT_KEY', DECRYPTION BY PASSWORD = 'password' );다음 쿼리를 실행하여 인증서에 필요한 제어 권한을 부여합니다.
GRANT CONTROL ON CERTIFICATE::BitLockerManagement_CERT TO RecoveryAndHardwareRead; GRANT CONTROL ON CERTIFICATE::BitLockerManagement_CERT TO RecoveryAndHardwareWrite;다음 노드로 장애 조치(failover)합니다.
다음 쿼리를 실행하여 로컬 SMK에 DMK 암호를 등록합니다. 복제본(replica)당 한 번 실행합니다.
EXEC sp_control_dbmasterkey_password @db_name = N'CM_XXX', @password = N'password', @action = N'add';나머지 노드에서 이전 두 단계를 수행합니다.
원래 노드로 장애 조치(failover)합니다.
모든 노드가 DMK(데이터베이스 마스터 키)를 자동으로 열고 데이터의 암호를 해독할 수 있는지 확인하려면 다음 섹션 모든 노드가 DMK(데이터베이스 마스터 키)를 자동으로 열고 이 문서의 데이터 암호를 해독할 수 있는지 확인 섹션을 참조하세요.
모든 노드가 DMK(데이터베이스 마스터 키)를 자동으로 열고 데이터의 암호를 해독할 수 있는지 확인합니다.
모든 노드가 DMK(데이터베이스 마스터 키)를 자동으로 열고 데이터의 암호를 해독할 수 있는지 확인하려면 다음을 수행합니다.
노드로 장애 조치(failover)합니다.
다음 쿼리를 실행합니다.
SELECT TOP 5 RecoveryAndHardwareCore.DecryptString(RecoveryKey, DEFAULT) FROM RecoveryAndHardwareCore_Keys ORDER BY LastUpdateTime DESC쿼리가 유효한 키가 있는 행에 대해 일반 텍스트 값을 반환하는 경우 노드는 DMK(데이터베이스 마스터 키)를 자동으로 열고 데이터의 암호를 해독할 수 있습니다.
각 추가 노드에 대해 이전 세 단계를 반복합니다.
팁
보안 향상을 위해 강력한 DMK 암호를 안전하게 저장합니다. 예를 들어 Azure Key Vault 또는 다른 보안 비밀 저장소에서. 또한 스크립트 또는 구성 파일에서 DMK 암호를 일반 텍스트로 하드코딩하지 마세요.