블로그 이미지
따시쿵

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2014. 7. 22. 11:44 MSSQL

데이타베이스 전체를 암호화해서 이동해서 복원하는 절차를 인터넷에서 찾았는데 여기에 내 스타일(?)에 맞게 다시 정리하여 올림....(자료 정리 차원에서)

/***************************************************************
***                   SOURCE 데이타베이스                    ***
***************************************************************/

-- 1. 마스터 키, 인증서 생성
USE master ;
GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '*****';
GO

CREATE CERTIFICATE TestSQLServerCert2 WITH SUBJECT = 'Certificate to protect TDE key'
GO

---- 인증서 확인
SELECT * FROM sys.certificates

--------------------------------------------------------
-- 2. 인증서 백업
BACKUP CERTIFICATE TestSQLServerCert2 
TO FILE = 'TestSQLServerCert2'
WITH PRIVATE KEY
(
    FILE = 'C:\wmpub\CustRecords\SQLPrivateKeyFile',
   ENCRYPTION BY PASSWORD = 'BITOM8115'
);
GO

--------------------------------------------------------
-- 3. 데이타베이스 생성
CREATE DATABASE CustRecords2 ;
GO

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

-- 4. 데이타베이스에 암호화 적용
USE CustRecords2;
GO

CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE TestSQLServerCert2;
GO

ALTER DATABASE CustRecords2
SET ENCRYPTION ON;
GO

--------------------------------------------------------
-- 5. 데이타베이스에 데이타 입력
CREATE TABLE CustomerRecord  (CustomerID int PRIMARY KEY, SecretData nvarchar(100) NOT NULL) ;
GO

INSERT CustomerRecord (CustomerID,SecretData)
VALUES (23997, 'Plain text data') ;
GO

SELECT CustomerID, SecretData FROM CustomerRecord ;
GO

--------------------------------------------------------
-- 6. 데이타베이스 분리
USE master ;
GO

EXEC master.dbo.sp_detach_db @dbname = N'CustRecords2';
GO

--------------------------------------------------------
-- 7. 마스터키와 인증서 삭제
USE master
GO

DROP CERTIFICATE TestSQLServerCert2;
DROP MASTER KEY;


/*******************************************************************
***                     TARGET 데이타베이스                      ***
*******************************************************************/

-- 1. 마스터키 생성
USE master;
GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '********';
GO

---- 인증서 확인
SELECT * FROM sys.certificates

--------------------------------------------------------
--2. 인증서 복원
CREATE CERTIFICATE TestSQLServerCert2
FROM FILE = 'TestSQLServerCert2'
WITH PRIVATE KEY
(
FILE = 'C:\wmpub\CustRecords\SQLPrivateKeyFile',
DECRYPTION BY PASSWORD = 'Certificate to protect TDE key'
);
GO

--------------------------------------------------------
--3. 데이타베이스 복원
CREATE DATABASE [CustRecords2] ON
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\CustRecords2.mdf' ),
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\CustRecords2_log.LDF' )
FOR ATTACH ;
GO

--------------------------------------------------------
--4. 데이타베이스 테스트
USE CustRecords2 ;
GO

SELECT CustomerID, SecretData FROM CustomerRecord ;
GO


출처 : http://msdn.microsoft.com/ko-kr/library/ff773063.aspx#create

posted by 따시쿵