다른 SQL Server로 TDE 보호 데이터베이스 이동

이 항목에서는 TDE(투명한 데이터 암호화)를 사용하여 SQL Server 데이터베이스를 보호하고 이 데이터베이스를 SQL Server의 다른 인스턴스로 이동하기 위한 단계를 설명합니다.

항목 내용

  • 시작하기 전 주의 사항

    백그라운드

    보안

  • 예:

    투명한 데이터 암호화로 보호되는 데이터베이스를 만들려면

    TDE로 보호되는 데이터베이스를 SQL Server의 새 인스턴스로 이동하려면

  • 후속 작업: TDE로 보호되는 데이터베이스를 SQL Server의 새 인스턴스로 이동한 후 수행할 단계

백그라운드

TDE(투명한 데이터 암호화)를 통해 데이터 및 로그 파일의 실시간 I/O 암호화 및 암호 해독을 수행합니다. 이 암호화에서는 DEK(데이터베이스 암호화 키)를 사용하며 이 키는 복구하는 동안 사용할 수 있도록 데이터베이스 부트 레코드에 저장됩니다. DEK는 서버의 master 데이터베이스에 저장된 인증서 또는 EKM 모듈로 보호되는 비대칭 키를 사용하여 보호되는 대칭 키입니다. TDE로 보호되는 데이터베이스를 이동하려면 DEK를 여는 데 사용되는 인증서 또는 비대칭 키도 이동해야 합니다. 인증서 또는 비대칭 키는 SQL Server에서 데이터베이스 파일에 액세스할 수 있도록 대상 서버의 master 데이터베이스에 설치되어야 합니다. 자세한 내용은 TDE(Transparent Data Encryption) 이해를 참조하십시오.

보안

사용 권한

데이터베이스 마스터 키를 만들려면 master 데이터베이스에 대한 CONTROL DATABASE 권한이 필요합니다.

DEK를 보호하는 인증서를 만들려면 master 데이터베이스에 대한 CREATE CERTIFICATE 권한이 필요합니다.

암호화된 데이터베이스에 대한 CONTROL DATABASE 권한과 데이터베이스 암호화 키를 암호화하는 데 사용되는 인증서 또는 비대칭 키에 대한 VIEW DEFINITION 권한이 필요합니다.

[맨 위]

TDE로 보호되는 데이터베이스 만들기

투명한 데이터 암호화로 보호되는 데이터베이스를 만들려면 master 데이터베이스에 있는 인증서로 보호되는 데이터베이스 암호화 키를 사용해야 합니다.

투명한 데이터 암호화로 보호되는 데이터베이스를 만들려면

  1. 쿼리 편집기에서 다음 Transact-SQL 명령을 입력하여 데이터베이스 마스터 키를 만들고 master 데이터베이스에 인증서를 만듭니다.

    보안 정보보안 정보

    별표는 암호로 대체합니다. 빈 암호를 사용하지 마십시오. 강력한 암호를 사용하십시오.

    USE master ;
    GO
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**************';
    GO
    CREATE CERTIFICATE TestSQLServerCert 
    WITH SUBJECT = 'Certificate to protect TDE key'
    GO
    
  2. master 데이터베이스에 있는 서버 인증서의 백업을 만듭니다. 데이터베이스 암호화 키를 보호하는 데 사용되는 인증서를 분실하면 TED로 보호되는 데이터베이스의 데이터에 액세스할 수 없습니다. 다음 예에서는 인증서 및 개인 키 파일의 백업을 SQL Server의 이 인스턴스에 대한 기본 데이터 위치(C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA)에 저장합니다.

    보안 정보보안 정보

    인증서를 복구하려면 인증서 파일 및 개인 키 파일의 사본을 보관해야 합니다. 개인 키의 암호는 데이터베이스 마스터 키 암호와 동일할 필요가 없습니다.

    BACKUP CERTIFICATE TestSQLServerCert 
    TO FILE = 'TestSQLServerCert'
    WITH PRIVATE KEY 
    (
        FILE = 'SQLPrivateKeyFile',
        ENCRYPTION BY PASSWORD = '**************'
    );
    GO
    
  3. TDE로 보호되는 데이터베이스를 만듭니다.

    CREATE DATABASE CustRecords ;
    GO
    
  4. 새 데이터베이스로 전환합니다. master 데이터베이스에 있는 서버 인증서로 보호되는 데이터베이스 암호화 키를 만듭니다. 그런 다음 TDE를 사용하여 데이터베이스를 암호화하도록 새 데이터베이스를 변경합니다.

    USE CustRecords;
    GO
    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM = AES_128
    ENCRYPTION BY SERVER CERTIFICATE TestSQLServerCert;
    GO
    ALTER DATABASE CustRecords
    SET ENCRYPTION ON;
    GO
    

    [!참고]

    SQL Server Management Studio를 사용하여 이 단계를 수행하려면 개체 탐색기에서 데이터베이스를 마우스 오른쪽 단추로 클릭하고 태스크를 가리킨 다음 데이터베이스 암호화 관리를 클릭합니다. 데이터베이스 암호화 관리 대화 상자를 사용하여 데이터베이스 암호화 키를 선택하고 데이터베이스 암호화를 사용하도록 설정합니다.

  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
    

[맨 위]

TDE로 보호되는 데이터베이스 이동

TDE로 보호되는 데이터베이스를 SQL Server의 새 인스턴스로 이동하려면

  1. TDE로 보호되는 데이터베이스와 원본 서버를 분리합니다.

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

    [!참고]

    Management Studio를 사용하여 이 단계를 수행하려면 개체 탐색기에서 데이터베이스를 마우스 오른쪽 단추로 클릭하고 태스크를 가리킨 다음 분리를 클릭합니다. 확인을 클릭합니다.

  2. Window 탐색기를 사용하여 데이터베이스 파일을 원본 서버에서 대상 서버의 동일한 위치로 이동 또는 복사합니다.

    [!참고]

    대개 두 데이터베이스 파일(CustomerRecords.mdfCustomerRecords_log.LDF)은 기본 위치인 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA에 있습니다. 파일 이름 및 위치는 다를 수 있습니다.

  3. Window 탐색기를 사용하여 서버 인증서 및 개인 키 파일의 백업을 원본 서버에서 대상 서버의 동일한 위치로 이동 또는 복사합니다. 이 예에서 이러한 파일은 기본 데이터 폴더인 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA에 저장됩니다.

  4. SQL Server의 대상 인스턴스에서 데이터베이스 마스터 키를 만듭니다. 암호는 원본 서버의 암호와 같을 필요가 없습니다.

    USE master;
    GO
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**************';
    GO
    
  5. 원본 서버 인증서 백업 파일을 사용하여 서버 인증서를 다시 만듭니다. 암호는 백업을 만들 때 사용된 암호와 동일해야 합니다.

    CREATE CERTIFICATE TestSQLServerCert 
    FROM FILE = 'TestSQLServerCert'
    WITH PRIVATE KEY 
    (
        FILE = 'SQLPrivateKeyFile',
        DECRYPTION BY PASSWORD = '**************'
    );
    GO
    
  6. 이동할 데이터베이스를 분리합니다. 데이터베이스 파일의 경로는 데이터베이스 파일을 저장한 위치여야 합니다.

    CREATE DATABASE [CustRecords] ON 
    ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\CustRecords.mdf' ),
    ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\CustRecords_log.LDF' )
    FOR ATTACH ;
    GO
    

    [!참고]

    Management Studio를 사용하여 이 단계를 수행하려면 개체 탐색기에서 데이터베이스를 마우스 오른쪽 단추로 클릭한 다음 연결을 클릭합니다. 추가를 눌러 CustRecords.mdf 파일을 찾은 다음 확인을 클릭합니다.

  7. 테이블에서 데이터를 선택하여 데이터베이스에 대한 액세스를 테스트합니다.

    USE CustRecords ;
    GO
    SELECT CustomerID, SecretData FROM CustomerRecord ;
    GO
    

    [맨 위]

후속 작업: TDE로 보호되는 데이터베이스를 SQL Server의 새 인스턴스로 이동한 후 수행할 단계

master 데이터베이스 백업

  • 인증서를 설치하고 데이터베이스를 연결하면 master 데이터베이스의 정보가 변경되므로 master 데이터베이스에 대한 새 백업을 만들어야 합니다.

[맨 위]