MS SQL2013.06.26 14:24

 

[내용]

 

암호화된 데이터베이스의 백업 파일도 데이터베이스 암호화 키로 암호화 됩니다. 이런 백업 파일을 복원하려면 데이터베이스 암호화 키와 관련된 인증서가 있어야 합니다. 암호화된 데이터베이스의 인증서 백업 부터 데이터베이스 복원하는 방법을 알아봅시다.

 

 

[환경]

 

OS: Windows Server 2012

Product: SQL Server 2012

 

 

[ACTION]

아래의 스크립트를 암호화 데이터베이스 있는 서버에서 실행합니다.

---------------------------------------------------------------------------

-- 데이터베이스 백업

BACKUP DATABASE [PracticeTDE]

TO DISK = 'C:\Backup\PracticeTDE'

WITH INIT

GO

 

 

-- 인증서 백업

BACKUP CERTIFICATE TDECertificate

TO FILE = 'C:\Backup\TDECertificate.cer'

WITH PRIVATE KEY (FILE = 'C:\Backup\TDECertificate.pvk' ,

ENCRYPTION BY PASSWORD = 'Pa$$w0rd')

GO

---------------------------------------------------------------------------

 

아래의 스크립트를 복원 시킬 서버에서 실행합니다.

---------------------------------------------------------------------------

USE Master

GO

 

-- 마스터 생성

CREATE MASTER KEY ENCRYPTION

BY PASSWORD = 'Pa$$w0rd'

GO

 

-- 원본 서버에서 가져온 인증서 복원

CREATE CERTIFICATE TDECertificate

FROM FILE = 'C:\Backup\TDECertificate.cer'

WITH PRIVATE KEY (FILE = 'C:\Backup\TDECertificate.pvk',

DECRYPTION BY PASSWORD = 'Pa$$w0rd')

GO

 

-- 백업 파일 복원

USE master

GO

 

RESTORE DATABASE PracticeTDE

FROM DISK = 'C:\Backup\PracticeTDE.bak'

WITH MOVE 'PracticeTDE' TO 'C:\Data\PracticeTDE.mdf', 

 MOVE 'PracticeTDE_log' TO 'C:\Data\PracticeTDE_log.ldf'

GO

 

--정상적 복구 확인

SELECT * FROM [dbo].[EmpTest]

GO

 

 

 

[참고]

 

http://msdn.microsoft.com/ko-kr/library/bb934049.aspx

http://msdn.microsoft.com/ko-kr/library/ff773063.aspx

 

 

 

 

신고
Posted by TM ~ing
MS SQL2013.06.26 09:49

 

 

[내용]

 

TDE 개별 테이블의 열에 대한 암호화가 아닌 데이터베이스 전체를 암호화하는 데이터베이스 수준의 암호화 방법입니다. 이런 방법으로 암호화된 데이터베이스는 마스터키가 존재하지 않는 다른 서버에 연결 복원 없습니다. 그러면 이런 TDE 설정하는 방법에 대해 알아봅시다.

 

[환경]

 

OS: Windows Server 2012

Product: SQL Server 2012

 

[개요]

아래와 같은 순서로 진행합니다.

 

 

번째와 번째 단계는 master 데이터베이스에서 수행합니다.

번째와 번째 단계는 암호화할 대상 데이터베이스에서 수행 해야합니다.

 

[ACTION]

아래의 스크립트를 실행합니다.

---------------------------------------------------------------------------

-- 암호화할 데이터베이스 만들기

 

USE master

GO

 

-- 기존 데이터베이스 있으면 제거

IF DB_ID('PracticeTDE') IS NOT NULL

BEGIN

    ALTER DATABASE PracticeTDE

SET SINGLE_USER

WITH ROLLBACK IMMEDIATE

DROP DATABASE PracticeTDE

END

GO

 

-- 데이터베이스 만들기

CREATE DATABASE PracticeTDE

GO

 

USE PracticeTDE

GO

 

-- 테이블 만들기(Adventureworks2012 설치되어 있어야 )

SELECT BusinessEntityID, LoginID, JobTitle, BirthDate, HireDate, VacationHours

INTO dbo.EmpTest

FROM AdventureWorks2012.HumanResources.Employee

GO

---------------------------------------------------------------------------

 

1. Master Key 만들기

인증서를 보호하는데 사용하는 Master Key 생성합니다.

---------------------------------------------------------------------------

USE master

GO

 

CREATE MASTER KEY

ENCRYPTION BY PASSWORD = 'Pa$$w0rd' -- 복잡한 암호 지정

GO

---------------------------------------------------------------------------

 

2. 인증서 만들기

DEK(데이터베이스 암호화 ) 보호하는데 사용되는 인증서를 만듭니다.

---------------------------------------------------------------------------

USE Master

GO

 

CREATE CERTIFICATE TDECertificate

WITH SUBJECT = 'Server level certificate for TDE'

GO

---------------------------------------------------------------------------

 

3. DEK(데이터베이스 암호화 ) 만들기

인증서로 보호되는 DEK 만듭니다.

---------------------------------------------------------------------------

USE PracticeTDE

GO

 

CREATE DATABASE ENCRYPTION KEY

WITH ALGORITHM = AES_128

ENCRYPTION BY SERVER CERTIFICATE TDECertificate

GO

---------------------------------------------------------------------------

 

4. 암호화 설정

암호화할 데이터베이스에 암호화 설정을 합니다.

---------------------------------------------------------------------------

ALTER DATABASE PracticeTDE

SET ENCRYPTION ON

GO

---------------------------------------------------------------------------

 

 

[참고]

 

http://msdn.microsoft.com/ko-kr/library/bb934049.aspx

http://msdn.microsoft.com/ko-kr/library/ff773063.aspx

 

 

 

 

 

 

신고
Posted by TM ~ing