다른 SQL Server로 TDE 보호 데이터베이스 이동Move a TDE Protected Database to Another SQL Server

이 항목에서는 TDE(투명한 데이터 암호화)를 사용하여 데이터베이스를 보호하고 SQL ServerSQL Server 또는 SQL Server Management StudioSQL Server Management Studio 을 사용하여 이 데이터베이스를 Transact-SQLTransact-SQL의 다른 인스턴스로 이동하기 위한 단계를 설명합니다.This topic describes how to to protect a database by using transparent data encryption (TDE), and then move the database to another instance of SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. TDE(투명한 데이터 암호화)를 통해 데이터 및 로그 파일의 실시간 I/O 암호화 및 암호 해독을 수행합니다.TDE performs real-time I/O encryption and decryption of the data and log files. 이 암호화에서는 DEK(데이터베이스 암호화 키)를 사용하며 이 키는 복구하는 동안 사용할 수 있도록 데이터베이스 부트 레코드에 저장됩니다.The encryption uses a database encryption key (DEK), which is stored in the database boot record for availability during recovery. DEK는 서버의 master 데이터베이스에 저장된 인증서 또는 EKM 모듈로 보호되는 비대칭 키를 사용하여 보호되는 대칭 키입니다.The DEK is a symmetric key secured by using a certificate stored in the master database of the server or an asymmetric key protected by an EKM module.

제한 사항 Limitations and Restrictions

  • TDE로 보호되는 데이터베이스를 이동하려면 DEK를 여는 데 사용되는 인증서 또는 비대칭 키도 이동해야 합니다.When moving a TDE protected database, you must also move the certificate or asymmetric key that is used to open the DEK. 인증서 또는 비대칭 키는 에서 데이터베이스 파일에 액세스할 수 있도록 대상 서버의 master SQL ServerSQL Server 데이터베이스에 설치되어야 합니다.The certificate or asymmetric key must be installed in the master database of the destination server, so that SQL ServerSQL Server can access the database files. 자세한 내용은 TDE(투명한 데이터 암호화)를 참조하세요.For more information, see Transparent Data Encryption (TDE).

  • 인증서를 복구하려면 인증서 파일 및 개인 키 파일의 사본을 보관해야 합니다.You must retain copies of both the certificate file and the private key file in order to recover the certificate. 개인 키의 암호는 데이터베이스 마스터 키 암호와 동일할 필요가 없습니다.The password for the private key does not have to be the same as the database master key password.

  • SQL ServerSQL Server 는 기본적으로 여기서 생성된 파일을 C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA 에 저장합니다. stores the files created here in C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA by default. 파일 이름 및 위치는 다를 수 있습니다.Your file names and locations might be different.

사용 권한 Permissions

  • 데이터베이스 마스터 키를 만들려면 master 데이터베이스에 대한 CONTROL DATABASE 권한이 필요합니다.Requires CONTROL DATABASE permission on the master database to create the database master key.

  • DEK를 보호하는 인증서를 만들려면 master 데이터베이스에 대한 CREATE CERTIFICATE 권한이 필요합니다.Requires CREATE CERTIFICATE permission on the master database to create the certificate that protects the DEK.

  • 암호화된 데이터베이스에 대한 CONTROL DATABASE 권한과 데이터베이스 암호화 키를 암호화하는 데 사용되는 인증서 또는 비대칭 키에 대한 VIEW DEFINITION 권한이 필요합니다.Requires CONTROL DATABASE permission on the encrypted database and VIEW DEFINITION permission on the certificate or asymmetric key that is used to encrypt the database encryption key.

투명한 데이터 암호화로 보호되는 데이터베이스를 만들려면 To create a database protected by transparent data encryption

다음 절차에서는 SQL Server Management Studio를 사용하고 Transact-SQL을 사용하여 TDE로 보호되는 데이터베이스를 만들어야 함을 보여줍니다.The following procedures show you have to create a database protected by TDE using SQL Server Management Studio and by using Transact-SQL.

SQL Server Management Studio 사용 Using SQL Server Management Studio

  1. master 데이터베이스에서 데이터베이스 마스터 키 및 인증서를 만듭니다.Create a database master key and certificate in the master database. 자세한 내용은 아래에서 Transact-SQL 사용 을 참조하세요.For more information, see Using Transact-SQL below.

  2. master 데이터베이스에서 서버 인증서의 백업을 만듭니다.Create a backup of the server certificate in the master database. 자세한 내용은 아래에서 Transact-SQL 사용 을 참조하세요.For more information, see Using Transact-SQL below.

  3. 개체 탐색기에서 데이터베이스 폴더를 마우스 오른쪽 단추로 클릭한 다음 새 데이터베이스를 선택합니다.In Object Explorer, right-click the Databases folder and select New Database.

  4. 새 데이터베이스 대화 상자의 데이터베이스 이름 상자에 새 데이터베이스의 이름을 입력합니다.In the New Database dialog box, in the Database name box, enter the name of the new database.

  5. 소유자 상자에 새 데이터베이스의 소유자 이름을 입력합니다.In the Owner box, enter the name of the new database's owner. 또는 줄임표 (…) 를 클릭하여 데이터베이스 소유자 선택 대화 상자를 엽니다.Alternately, click the ellipsis (…) to open the Select Database Owner dialog box. 새 데이터베이스를 만드는 방법은 Create a Database를 참조하세요.For more information on creating a new database, see Create a Database.

  6. 개체 탐색기에서 더하기 기호를 클릭하여 데이터베이스 폴더를 확장합니다.In Object Explorer, click the plus sign to expand the Databases folder.

  7. 만든 데이터베이스를 마우스 오른쪽 단추로 클릭하고 태스크를 가리킨 다음 데이터베이스 암호화 관리를 선택합니다.Right-click the database you created, point to Tasks, and select Manage Database Encryption.

    데이터베이스 암호화 관리 대화 상자에는 다음과 같은 옵션이 제공됩니다.The following options are available on the Manage Database Encryption dialog box.

    암호화 알고리즘Encryption Algorithm
    데이터베이스 암호화에 사용할 알고리즘을 표시하거나 설정합니다.Displays or sets the algorithm to use for database encryption. 기본 알고리즘은AES128 입니다.AES128 is the default algorithm. 이 필드는 비워 둘 수 없습니다.This field cannot be blank. 암호화 알고리즘에 대한 자세한 내용은 Choose an Encryption Algorithm을 참조하세요.For more information on encryption algorithms, see Choose an Encryption Algorithm.

    서버 인증서 사용Use server certificate
    인증서로 암호화의 보안을 유지하도록 설정합니다.Sets the encryption to be secured by a certificate. 목록에서 하나를 선택합니다.Select one from the list. 서버 인증서에 대한 VIEW DEFINITION 권한이 없으면 이 목록은 비어 있습니다.If you do not have the VIEW DEFINITION permission on server certificates, this list will be empty. 암호화의 인증서 방법을 선택한 경우에는 이 값을 비워 둘 수 없습니다.If a certificate method of encryption is selected, this value cannot be empty. 인증서에 대한 자세한 내용은 SQL Server Certificates and Asymmetric Keys를 참조하세요.For more information about certificates, see SQL Server Certificates and Asymmetric Keys.

    서버 비대칭 키 사용Use server asymmetric key
    비대칭 키로 암호화의 보안을 유지하도록 설정합니다.Sets the encryption to be secured by an asymmetric key. 사용 가능한 비대칭 키만 표시됩니다.Only available asymmetric keys are displayed. EKM 모듈에서 보호하는 비대칭 키만 TDE를 사용하여 데이터베이스를 암호화할 수 있습니다.Only an asymmetric key protected by an EKM module can encrypt a database using TDE.

    데이터베이스 암호화 설정Set Database Encryption On
    데이터베이스의 TDE를 설정(선택) 또는 해제(선택 취소)로 변경합니다.Alters the database to turn on (checked) or turn off (unchecked) TDE.

  8. 완료되었으면 확인을 클릭합니다.When finished, click OK.

Transact-SQL 사용 Using Transact-SQL

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine인스턴스에 연결합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.On the Standard bar, click New Query.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.Copy and paste the following example into the query window and click Execute.

    -- Create a database master key and a certificate in the master database.  
    USE master ;  
    GO  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '*rt@40(FL&dasl1';  
    GO  
    CREATE CERTIFICATE TestSQLServerCert   
    WITH SUBJECT = 'Certificate to protect TDE key'  
    GO  
    -- Create a backup of the server certificate in the master database.  
    -- The following code stores the backup of the certificate and the private key file in the default data location for this instance of SQL Server   
    -- (C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA).  
    
    BACKUP CERTIFICATE TestSQLServerCert   
    TO FILE = 'TestSQLServerCert'  
    WITH PRIVATE KEY   
    (  
        FILE = 'SQLPrivateKeyFile',  
        ENCRYPTION BY PASSWORD = '*rt@40(FL&dasl1'  
    );  
    GO  
    -- Create a database to be protected by TDE.  
    CREATE DATABASE CustRecords ;  
    GO  
    -- Switch to the new database.  
    -- Create a database encryption key, that is protected by the server certificate in the master database.   
    -- Alter the new database to encrypt the database using 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  
    

    참조 항목:For more information, see:

투명한 데이터 암호화로 보호되는 데이터베이스를 이동하려면 To move a database protected by transparent data encryption

다음 절차에서는 SQL Server Management Studio를 사용하고 Transact-SQL을 사용하여 TDE로 보호되는 데이터베이스를 이동해야 함을 보여줍니다.The following procedures show you have to move a database protected by TDE using SQL Server Management Studio and by using Transact-SQL.

SQL Server Management Studio 사용 Using SQL Server Management Studio

  1. 개체 탐색기에서 위에서 암호화한 데이터베이스를 마우스 오른쪽 단추로 클릭하고 태스크 를 가리킨 후 분리...를 선택합니다.In Object Explorer, right-click the database you encrypted above, point to Tasks and select Detach….

    데이터베이스 분리 대화 상자에는 다음과 같은 옵션이 제공됩니다.The following options are available in the Detach Database dialog box.

    분리할 데이터베이스Databases to detach
    분리할 데이터베이스를 나열합니다.Lists the databases to detach.

    Database NameDatabase Name
    분리할 데이터베이스 이름을 표시합니다.Displays the name of the database to be detached.

    연결 삭제Drop Connections
    지정한 데이터베이스에 대한 연결을 끊습니다.Disconnect connections to the specified database.

    참고

    활성 연결이 있는 데이터베이스는 분리할 수 없습니다.You cannot detach a database with active connections.

    통계 업데이트Update Statistics
    기본적으로 분리 작업은 데이터베이스를 분리할 때 오래된 최적화 통계를 유지합니다. 기존의 최적화 통계를 업데이트하려면 이 확인란을 클릭합니다.By default, the detach operation retains any out-of-date optimization statistics when detaching the database; to update the existing optimization statistics, click this check box.

    전체 텍스트 카탈로그 유지Keep Full-Text Catalogs
    기본적으로 분리 작업은 데이터베이스와 연결된 모든 전체 텍스트 카탈로그를 유지합니다.By default, the detach operation keeps any full-text catalogs that are associated with the database. 전체 텍스트 카탈로그를 제거하려면 전체 텍스트 카탈로그 유지 확인란의 선택을 취소합니다.To remove them, clear the Keep Full-Text Catalogs check box. 이 옵션은 데이터베이스를 SQL Server 2005SQL Server 2005에서 업그레이드하는 경우에만 표시됩니다.This option appears only when you are upgrading a database from SQL Server 2005SQL Server 2005.

    상태Status
    준비 또는 준비 안 됨상태 중 하나를 표시합니다.Displays one of the following states: Ready or Not ready.

    메시지Message
    다음과 같이 메시지 열에 데이터베이스에 대한 정보가 표시될 수도 있습니다.The Message column may display information about the database, as follows:

    • 데이터베이스가 복제와 관련된 경우 상태준비 안 됨 이고 메시지 열에는 데이터베이스 복제 완료가 표시됩니다.When a database is involved with replication, the Status is Not ready and the Message column displays Database replicated.

    • 데이터베이스에 하나 이상의 활성 연결이 있는 경우 상태준비 안 됨이고 메시지 열에는 <number_of_active_connections>활성 연결(예: 1 활성 연결)이 표시됩니다.When a database has one or more active connections, the Status is Not ready and the Message column displays <number_of_active_connections>Active connection(s) — for example: 1 Active connection(s). 데이터베이스를 분리하려면 먼저 연결 삭제를 선택하여 모든 활성 연결을 끊어야 합니다.Before you can detach the database, you need to disconnect any active connections by selecting Drop Connections.

      메시지에 대한 자세한 내용을 보려면 하이퍼링크로 연결된 텍스트를 클릭하여 작업 모니터를 엽니다.To obtain more information about a message, click the hyperlinked text to open Activity Monitor.

  2. 확인을 클릭합니다.Click OK.

  3. Windows 탐색기를 사용하여 데이터베이스 파일을 원본 서버에서 대상 서버의 동일한 위치로 이동 또는 복사합니다.Using Windows Explorer, move or copy the database files from the source server to the same location on the destination server.

  4. Window 탐색기를 사용하여 서버 인증서 및 개인 키 파일의 백업을 원본 서버에서 대상 서버의 동일한 위치로 이동 또는 복사합니다.Using Windows Explorer, move or copy the backup of the server certificate and the private key file from the source server to the same location on the destination server.

  5. SQL ServerSQL Server의 대상 인스턴스에서 데이터베이스 마스터 키를 만듭니다.Create a database master key on the destination instance of SQL ServerSQL Server. 자세한 내용은 아래에서 Transact-SQL 사용 을 참조하세요.For more information, see Using Transact-SQL below.

  6. 원본 서버 인증서 백업 파일을 사용하여 서버 인증서를 다시 만듭니다.Recreate the server certificate by using the original server certificate backup file. 자세한 내용은 아래에서 Transact-SQL 사용 을 참조하세요.For more information, see Using Transact-SQL below.

  7. SQL Server Management StudioSQL Server Management Studio의 개체 탐색기에서 데이터베이스 폴더를 마우스 오른쪽 단추로 클릭하고 연결...을 선택합니다.In Object Explorer in SQL Server Management StudioSQL Server Management Studio, right-click the Databases folder and select Attach….

  8. 데이터베이스 연결 대화 상자의 연결할 데이터베이스아래에서 추가를 클릭합니다.In the Attach Databases dialog box, under Databases to attach, click Add.

  9. 데이터베이스 파일 찾기 –server_name 대화 상자에서 새 서버에 연결할 데이터베이스 파일을 선택하고 확인을 클릭합니다.In the Locate Database Files –server_name dialog box, select the database file to attach to the new server and click OK.

    데이터베이스 연결 대화 상자에는 다음과 같은 옵션이 제공됩니다.The following options are available in the Attach Databases dialog box.

    연결할 데이터베이스Databases to attach
    선택한 데이터베이스에 대한 정보를 표시합니다.Displays information about the selected databases.

    <열 머리글 없음><no column header>
    연결 작업의 상태를 나타내는 아이콘을 표시합니다.Displays an icon indicating the status of the attach operation. 가능한 아이콘은 아래의 상태 에 대한 설명에 설명되어 있습니다.The possible icons are described in the Status description, below).

    MDF 파일 위치MDF File Location
    선택한 MDF 파일의 경로와 파일 이름을 표시합니다.Displays the path and file name of the selected MDF file.

    Database NameDatabase Name
    데이터베이스 이름을 표시합니다.Displays the name of the database.

    다른 이름으로 연결Attach As
    필요에 따라 연결할 데이터베이스의 이름을 다른 이름으로 지정합니다.Optionally, specifies a different name for the database to attach as.

    소유자Owner
    필요에 따라 다른 소유자를 선택할 수 있도록 가능한 데이터베이스 소유자의 드롭다운 목록을 제공합니다.Provides a drop-down list of possible database owners from which you can optionally select a different owner.

    상태Status
    다음 표에 설명된 내용과 같이 데이터베이스의 상태를 표시합니다.Displays the status of the database according to the following table.

    아이콘Icon 상태 텍스트Status text 설명Description
    (아이콘 없음)(No icon) (텍스트 없음)(No text) 연결 작업이 시작되지 않았거나 이 개체에 대해 보류 중입니다.Attach operation has not been started or may be pending for this object. 대화 상자가 열려 있는 경우에 표시되는 기본 설정입니다.This is the default when the dialog is opened.
    녹색, 오른쪽 방향 삼각형Green, right-pointing triangle 진행 중In progress 연결 작업이 시작되었지만 아직 완료되지 않았습니다.Attach operation has been started but it is not complete.
    녹색 확인 표시Green check mark 성공Success 개체가 성공적으로 연결되었습니다.The object has been attached successfully.
    흰색 십자 표시가 있는 빨강 원Red circle containing a white cross 오류Error 연결 작업을 수행하는 동안 오류가 발생하여 완료하지 못했습니다.Attach operation encountered an error and did not complete successfully.
    오른쪽과 왼쪽에 두 개의 검정 사분면이 있고 위쪽과 아래쪽에 두 개의 흰색 사분면이 있는 원Circle containing two black quadrants (on left and right) and two white quadrants (on top and bottom) 중지됨Stopped 사용자가 작업을 중지하여 연결 작업이 완료되지 않았습니다.Attach operation was not completed successfully because the user stopped the operation.
    시계 반대 방향을 가리키는 곡선 모양의 화살표가 있는 원Circle containing a curved arrow pointing counter-clockwise 롤백됨Rolled Back 연결 작업이 성공적으로 완료되었지만 다른 개체를 연결하는 동안 발생한 오류로 인해 롤백되었습니다.Attach operation was successful but it has been rolled back due to an error during attachment of another object.

    메시지Message
    빈 메시지 또는 "파일을 찾을 수 없습니다"라는 하이퍼링크를 표시합니다.Displays either a blank message or a "File not found" hyperlink.

    추가Add
    필요한 기본 데이터베이스 파일을 찾습니다.Find the necessary main database files. 사용자가 .mdf 파일을 선택하면 연결할 데이터베이스 표의 각 필드에 적절한 정보가 자동으로 입력됩니다.When the user selects an .mdf file, applicable information is automatically filled in the respective fields of the Databases to attach grid.

    제거Remove
    선택한 파일을 연결할 데이터베이스 표에서 제거합니다.Removes the selected file from the Databases to attach grid.

    " <database_name> " 데이터베이스 정보" <database_name> " database details
    연결할 파일의 이름을 표시합니다.Displays the names of the files to be attached. 파일의 경로 이름을 확인하거나 변경하려면 찾아보기 단추()를 클릭합니다.To verify or change the pathname of a file, click the Browse button ().

    참고

    파일이 없으면 메시지 열에 "찾을 수 없음"이 표시됩니다.If a file does not exist, the Message column displays "Not found." 로그 파일을 찾을 수 없는 경우 다른 디렉터리에 있거나 삭제된 것입니다.If a log file is not found, it exists in another directory or has been deleted. 올바른 위치를 가리키도록 데이터베이스 정보 표의 파일 경로를 업데이트하거나 표에서 로그 파일을 제거해야 합니다.You need to either update the file path in the database details grid to point to the correct location or remove the log file from the grid. .ndf 데이터 파일을 찾을 수 없는 경우 올바른 위치를 가리키도록 표에서 해당 파일의 경로를 업데이트해야 합니다.If an .ndf data file is not found, you need to update its path in the grid to point to the correct location.

    원래 파일 이름Original File Name
    데이터베이스에 속한 연결된 파일의 이름을 표시합니다.Displays the name of the attached file belonging to the database.

    파일 유형File Type
    파일의 형식( 데이터 또는 로그)을 나타냅니다.Indicates the type of file, Data or Log.

    현재 파일 경로Current File Path
    선택한 데이터베이스 파일의 경로를 표시합니다.Displays the path to the selected database file. 이 경로는 직접 편집할 수 있습니다.The path can be edited manually.

    메시지Message
    빈 메시지 또는 "파일을 찾을 수 없습니다"라는 하이퍼링크를 표시합니다.Displays either a blank message or a "File not found" hyperlink.

Transact-SQL 사용 Using Transact-SQL

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine인스턴스에 연결합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.On the Standard bar, click New Query.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.Copy and paste the following example into the query window and click Execute.

    -- Detach the TDE protected database from the source server.   
    USE master ;  
    GO  
    EXEC master.dbo.sp_detach_db @dbname = N'CustRecords';  
    GO  
    -- Move or copy the database files from the source server to the same location on the destination server.   
    -- Move or copy the backup of the server certificate and the private key file from the source server to the same location on the destination server.   
    -- Create a database master key on the destination instance of SQL Server.   
    USE master;  
    GO  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '*rt@40(FL&dasl1';  
    GO  
    -- Recreate the server certificate by using the original server certificate backup file.   
    -- The password must be the same as the password that was used when the backup was created.  
    
    CREATE CERTIFICATE TestSQLServerCert   
    FROM FILE = 'TestSQLServerCert'  
    WITH PRIVATE KEY   
    (  
        FILE = 'SQLPrivateKeyFile',  
        DECRYPTION BY PASSWORD = '*rt@40(FL&dasl1'  
    );  
    GO  
    -- Attach the database that is being moved.   
    -- The path of the database files must be the location where you have stored the database files.  
    CREATE DATABASE [CustRecords] ON   
    ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\CustRecords.mdf' ),  
    ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\CustRecords_log.LDF' )  
    FOR ATTACH ;  
    GO  
    

    참조 항목:For more information, see:

참고 항목See Also

데이터베이스 분리 및 연결(SQL Server) Database Detach and Attach (SQL Server)
Azure SQL 데이터베이스를 사용한 투명한 데이터 암호화Transparent Data Encryption with Azure SQL Database