2007~2011/SQL Server2009. 12. 21. 12:57
SQL Server 2008의 데이터 암호화 기능!  TDE(Transparent Data Encryption) 기능을 사용해서 데이터베이스의 데이터를 암호화 하는 방법에 대해서 아래와 같이 정리하였습니다. 이 기능을 사용할 경우 데이터 파일 유출 시 Hex Editor Tool 을 사용하여 데이터를 열었을 때 암호화 되어 있어 정보 유출을 최소화 할 수 있는 이점이 있습니다. TDE 아키텍처는 아래 MSDN 링크에 상세히 설명되어 있습니다. ^^

-- Master Key 생성

USE master

GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'P@$$word';

 
 

-- 인증서 생성

CREATE CERTIFICATE SQLCertificate WITH SUBJECT = N'SQL 암호화인증';

 

--
LAIGO 데이터베이스 데이터 암호화

USE LAIGO

GO

 

-- AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY

CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 
ENCRYPTION BY SERVER CERTIFICATE SQLCertificate;

/*경고: 데이터베이스 암호화 키를 암호화 하는데 사용된 인증서가 백업되지 않았습니다. */


-- 사용자 데이터베이스 데이터 암호화 활성화
ALTER
DATABASE LAIGO SET ENCRYPTION ON;

 
-- 마스터키, 인증서 백업

USE master

GO

BACKUP MASTER KEY TO FILE = 'D:\SQL\SQLMasterKey' ENCRYPTION BY PASSWORD = 'P@$$word';

GO

BACKUP CERTIFICATE SQLCertificate TO FILE = 'D:\SQL\SQLCert'
GO


-- 인증서 확인

SELECT name, certificate_id, pvt_key_encryption_type, pvt_key_encryption_type_desc, subject
FROM sys.CERTIFICATES




/* 데이터가 성공적으로 암호화 되었으며 복원을 위해서는 반드시 인증서가 필요합니다. */

-- TDE 해제 및 인증서, 마스터키를 삭제하는 방법은 아래와 같습니다.
USE
master

GO

ALTER DATABASE LAIGO SET ENCRYPTION OFF;

 

USE LAIGO

GO

DROP DATABASE ENCRYPTION KEY;

 

USE master

GO

DROP CERTIFICATE SQLCertificate;

DROP MASTER KEY;

 

[참고자료]
TDE(Transparent Data Encryption) 이해
http://msdn.microsoft.com/ko-kr/library/bb934049.aspx

CREATE DATABASE ENCRYPTION KEY (Transact-SQL)
http://technet.microsoft.com/en-us/library/bb677241.aspx

BACKUP MASTER KEY (Transact-SQL)
http://technet.microsoft.com/en-us/library/ms174387.aspx

RESTORE MASTER KEY (Transact-SQL)
http://msdn.microsoft.com/en-us/library/ms186336.aspx


CREATE CERTIFICATE (Transact-SQL)
http://technet.microsoft.com/en-us/library/ms187798.aspx


작성자 : Lai Go / 작성일자 : 2009.12.21

Posted by Lai Go