본문 바로가기

SQL Server/SQL Server Tip & Tech

SQL Server 2008 암호화 - TDE (Transparent Data Encryption)

SQL Server 2008부터 지원하기 시작한 새로운 암호화 방식으로 TDE가 있습니다.

TDE를 사용하면 데이터 파일과 로그 파일을 실시간으로 I/O 암호화 및 복호화하게 되는데...
우리는 TDE를 사용함으로써 누군가에 의해 DB 백업파일 또는 데이터 파일이 유출된다해도 DB를 복원하지 못하도록 막을 수 있습니다.

이때, 데이터베이스 파일 암호화는 페이지 수준에서 수행되는데 암호화된 후 디스크에 작성되고 메모리로 읽어 들일 때 복화하되며 데이터베이스의 크기는 증가하지 않습니다.


위 그림을 아래에서 위로 거꾸로 살펴보면 아래와 같이 정리할 수 있습니다.

- 데이터베이스는 데이터베이스 암호화 키(DEK)에 의해 대칭키 암호화
- 데이터베이스 암호화 키는 인증서에 의해 암호화
- 인증서는 데이터베이스 마스터 키에 의해 암호화
- 데이터베이스 마스터 키는 서비스 마스터 키에 의해 암호화
- 서비스 마스터 키는 Windows DPAPI에 의해 암호화


인증서를 만드는 과정까지는 SQL 2005와 동일합니다. 뭐... 암호화 함수의 용법도 동일하구요. (아래 링크 참조)

2009/07/15 - [SQL Server 팁] - SQL Server 2005 암호화

TDE로 인해 새로 등장한 개체는 DEK(Database Encryption Key) 뿐입니다.

TDE를 적용하는 방법은 아래와 같습니다.

1. 데이터베이스 마스터 키를 생성한다.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>';

 

 

2. 데이터베이스 마스터 키를 백업한다.

BACKUP MASTER KEY TO FILE = '<file path>'
   
ENCRYPTION BY PASSWORD = '<password>';



3. 서비스 마스터 키를 백업한다.

BACKUP SERVICE MASTER KEY TO FILE = '<file path>'
   
ENCRYPTION BY PASSWORD = '<password>';

 

 

4. 인증서를 생성한다. 

CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate';



5. 데이터베이스 암호화 키(DEK)를 생성한다.
USE
AdventureWorks;
 

CREATE DATABASE ENCRYPTION KEY

WITH ALGORITHM = AES_128

ENCRYPTION BY SERVER CERTIFICATE MyServerCert;



6. TDE를 적용한다.
ALTER
DATABASE AdventureWorks SET ENCRYPTION ON;



BOL 링크
ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.ko/s10de_4deptrbl/html/c75d0d4b-4008-4e71-9a9d-cee2a566bd3b.htm