Computer >> 컴퓨터 >  >> 프로그래밍 >> 데이터베이스

MSSQL 서버 – CLE(셀 수준 암호화) 데이터베이스 마이그레이션 완벽 가이드

MSSQL 서버 – CLE(셀 수준 암호화) 데이터베이스 마이그레이션 완벽 가이드

이 글에서는 CLE(Cell Level Encryption, 셀 수준 암호화)가 적용된 환경에서 데이터베이스를 복원하고 암호화된 데이터를 정상적으로 조회하기 위해 필요한 단계를 자세히 살펴봅니다.

데이터 보안은 데이터베이스 관리에서 가장 중요한 요소 중 하나입니다. MS SQL Server에서 민감한 데이터를 암호화하는 방법으로는 CLE, TDE(투명한 데이터 암호화), Always Encrypted 등 여러 가지가 있습니다. 그중에서도 인증서나 키를 사용해 테이블의 특정 열(셀) 단위로 데이터를 암호화하는 방식을 CLE라고 합니다.

문제 상황

CLE가 적용된 데이터베이스를 다른 인스턴스로 마이그레이션하면 다음과 같은 문제가 발생할 수 있습니다.

  1. 복호화 오류 발생: 애플리케이션이나 일부 T-SQL 코드가 데이터를 복호화하는 과정에서 오류가 발생합니다.
  2. DecryptByKey 함수 실패: DecryptByKey 함수가 데이터를 복호화하지 못합니다. 이 경우 별도의 오류 메시지는 나타나지 않지만, 암호화 키가 누락되어 기능이 정상적으로 동작하지 않습니다.

해결 방법

이러한 문제는 데이터베이스 마스터 키(DMK)를 열지 않아 데이터 복호화가 불가능하고, DMK가 현재 인스턴스의 서비스 마스터 키(SMK)로 암호화되어 있지 않기 때문에 발생합니다. 아래에서 상황별 해결 방법을 하나씩 알아보겠습니다.

Case 1 – 데이터베이스 마스터 키 암호화 암호를 알고 있는 경우

1단계: 암호를 사용해 데이터베이스 마스터 키를 연 뒤 데이터를 복호화합니다.

2단계: 매 세션마다 암호로 키를 열어야 하는지, 아니면 코드에 하드코딩해도 되는지 궁금할 수 있습니다. 결론부터 말하면 둘 다 권장하지 않습니다. 대신 현재 인스턴스의 서비스 마스터 키로 DMK를 다시 암호화하면 됩니다.

3단계: 암호 없이 데이터를 복호화할 수 있는지 확인합니다. 키가 이제 현재 인스턴스의 서비스 마스터 키로도 암호화되었기 때문에 정상적으로 복호화됩니다.

4단계: 데이터베이스 마스터 키의 암호화 암호를 변경해야 한다면 다음 단계를 완료합니다.

Case 2 – 데이터베이스 마스터 키 암호화 암호를 모르는 경우

암호를 알지 못하지만 원본 서버에 접근할 수 있다면, 위 Case 1의 4단계를 활용해 암호를 변경한 후 1단계 절차를 따르면 됩니다. 원본 서버에 접근할 수 없다면 아래의 대체 방법을 사용합니다.
단, 이 방법은 데이터베이스를 복원할 대상 인스턴스가 다른 키를 사용하고 있지 않은 경우에만 가능합니다. 인스턴스 서비스 마스터 키 자체를 복원하는 작업이 포함되기 때문입니다.

예시 – 인스턴스 서비스 마스터 키 백업 방법

-- 서비스 마스터 키 백업
BACKUP SERVICE MASTER KEY TO FILE = 'C:\Shared\service_master_key.key'
ENCRYPTION BY PASSWORD = 'key_P@ssw0rdGqw0956565'

참고: 키 백업 파일은 보안상 매우 민감한 파일입니다. 백업 파일이 저장된 위치의 보안 설정에서 SQL Server 서비스 계정을 추가해 SQL Server가 해당 파일에 접근할 수 있도록 해야 합니다. 그렇지 않으면 복원 과정에서 다음과 같은 오류가 발생할 수 있습니다.

Msg 15317, Level 16, State 2, Line 53
마스터 키 파일이 존재하지 않거나 잘못된 형식입니다.

1단계: 데이터베이스를 복원하기 전에 먼저 서비스 마스터 키를 복원합니다.

2단계: 데이터베이스를 복원합니다.

3단계: 암호 없이 데이터를 복호화할 수 있는지 확인합니다. 인스턴스 서비스 마스터 키와 해당 키로 암호화된 데이터베이스를 함께 복원했기 때문에 동일한 서비스 마스터 키를 사용하게 되어 정상적으로 복호화됩니다.

결론

MS SQL Server에서 암호화에 사용되는 모든 개체는 인스턴스 수준의 서비스 마스터 키로 보호됩니다. 암호화를 효과적으로 관리하려면 암호화 관련 개체들이 다시 한번 암호, 키 또는 인증서로 암호화된다는 계층 구조를 이해하는 것이 중요합니다.

따라서 셀 수준 데이터 암호화(CLE)가 적용된 데이터베이스를 마이그레이션할 때마다 다음 두 가지 방법 중 하나를 선택해야 합니다.

  • 키를 복호화한 후 대상 인스턴스의 서비스 마스터 키로 다시 암호화
  • 원본 인스턴스의 서비스 마스터 키 복원

궁금한 점이나 의견이 있다면 피드백 탭을 통해 남겨주세요. 언제든지 대화를 나눌 수 있습니다.