EKM을 사용하여 SQL Server에서 TDE를 사용하도록 설정Enable TDE on SQL Server Using EKM

이 항목에서는 EKM(확장 가능 키 관리) 모듈에 저장된 비대칭 키를 SQL Server 2017SQL Server 2017 에 사용하여 데이터베이스 암호화 키를 보호하기 위해 Transact-SQLTransact-SQL에서 TDE(투명한 데이터 암호화)를 사용하도록 설정하는 방법에 대해 설명합니다.This topic describes how to enable transparent data encryption (TDE) in SQL Server 2017SQL Server 2017 to protect a database encryption key by using an asymmetric key stored in an extensible key management (EKM) module with Transact-SQLTransact-SQL.

TDE는 데이터베이스 암호화 키라는 대칭 키를 사용하여 전체 데이터베이스의 저장소를 암호화합니다.TDE encrypts the storage of an entire database by using a symmetric key called the database encryption key. 또한 master 데이터베이스의 데이터베이스 마스터 키로 보호되는 인증서를 사용하여 데이터베이스 암호화 키를 보호할 수도 있습니다.The database encryption key can also be protected using a certificate which is protected by the database master key of the master database. 데이터베이스 마스터 키를 사용하여 데이터베이스 암호화 키를 보호하는 방법은 TDE(투명한 데이터 암호화)를 참조하세요.For more information about protecting the database encryption key by using the database master key, see Transparent Data Encryption (TDE). Azure VM에서 SQL ServerSQL Server이 실행 중인 경우 TDE 구성 방법은 Azure 주요 자격 증명 모음을 사용한 확장 가능 키 관리(SQL Server)를 참조하세요.For information about configuring TDE when SQL ServerSQL Server is running on an Azure VM, see Extensible Key Management Using Azure Key Vault (SQL Server). Azure 주요 자격 증명 모음의 키를 사용하여 TDE를 구성하는 방법은 SQL 암호화 기능을 통해 SQL Server 커넥터 사용을 참조하세요.For information about configuring TDE using a key in the Azure key vault, see Use SQL Server Connector with SQL Encryption Features.

시작하기 전에 Before You Begin

제한 사항 Limitations and Restrictions

  • 데이터베이스 암호화 키를 만들고 데이터베이스를 암호화하려면 시스템 관리자와 같은 높은 권한이 필요합니다.You must be a high privileged user (such as a system administrator) to create a database encryption key and encrypt a database. 해당 사용자는 EKM 모듈로 인증될 수 있어야 합니다.That user must be able to be authenticated by the EKM module.

  • 데이터베이스 엔진Database Engine 시작 시 데이터베이스를 열어야 합니다.Upon start up the 데이터베이스 엔진Database Engine must open the database. 이를 위해서는 EKM에서 인증할 인증서를 만들고 비대칭 키를 기반으로 하는 로그인에 인증서를 추가해야 합니다.To do this, you should create a credential that will be authenticated by the EKM, and add it to a login that is based on an asymmetric key. 사용자는 이 로그인을 사용하여 로그인할 수 없지만 데이터베이스 엔진Database Engine 은 이를 사용하여 EKM 장치에서 인증할 수 있습니다.Users cannot login using that login, but the 데이터베이스 엔진Database Engine will be able to authenticate itself with the EKM device.

  • EKM 모듈에 저장된 비대칭 키를 분실한 경우 SQL ServerSQL Server에서 해당 데이터베이스를 열 수 없습니다.If the asymmetric key stored in the EKM module is lost, the database will not be able to be opened by SQL ServerSQL Server. EKM 공급자가 비대칭 키를 백업할 수 있도록 허용하는 경우 백업을 만들고 안전한 위치에 저장해야 합니다.If the EKM provider lets you back up the asymmetric key, you should create a back up and store it in a secure location.

  • EKM 공급자에 필요한 옵션 및 매개 변수는 아래 코드 예에 제공된 것과 다를 수 있습니다.The options and parameters required by your EKM provider can differ from what is provided in the code example below. 자세한 내용은 해당 EKM 공급자를 참조하십시오.For more information, see your EKM provider.

보안 Security

사용 권한 Permissions

이 항목에서는 다음 권한이 사용됩니다.This topic uses the following permissions:

  • 구성 옵션을 변경하고 RECONFIGURE 문을 실행하려면 ALTER SETTINGS 서버 수준 권한이 있어야 합니다.To change a configuration option and run the RECONFIGURE statement, you must be granted the ALTER SETTINGS server-level permission. sysadminserveradmin 고정 서버 역할은 ALTER SETTINGS 권한을 암시적으로 보유하고 있습니다.The ALTER SETTINGS permission is implicitly held by the sysadmin and serveradmin fixed server roles.

  • ALTER ANY CREDENTIAL 권한이 필요합니다.Requires ALTER ANY CREDENTIAL permission.

  • ALTER ANY LOGIN 권한이 필요합니다.Requires ALTER ANY LOGIN permission.

  • CREATE ASYMMETRIC KEY 권한이 필요합니다.Requires CREATE ASYMMETRIC KEY permission.

  • 데이터베이스를 암호화하려면 데이터베이스에 대한 CONTROL 권한이 필요합니다.Requires CONTROL permission on the database to encrypt the database.

Transact-SQL 사용 Using Transact-SQL

EKM을 사용하여 TDE를 사용하도록 설정하려면To enable TDE using EKM

  1. EKM 공급자가 제공하는 파일을 SQL ServerSQL Server 컴퓨터의 적절한 위치에 복사합니다.Copy the files supplied by the EKM provider to an appropriate location on the SQL ServerSQL Server computer. 이 예에서는 C:\EKM 폴더를 사용합니다.In this example, we use the C:\EKM folder.

  2. EKM 공급자의 요구 사항에 따라 컴퓨터에 인증서를 설치합니다.Install certificates to the computer as required by your EKM provider.

    참고

    SQL ServerSQL Server 는 EKM 공급자를 제공하지 않습니다. does not supply an EKM provider. 각 EKM 공급자에 따라 사용자 설치, 구성 및 권한 부여에 대한 절차가 다릅니다.Each EKM provider can have different procedures for installing, configuring and authorizing users. 이 단계를 수행하려면 해당 EKM 공급자 설명서를 참조하십시오.Consult your EKM provider documentation to complete this step.

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

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

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

    -- Enable advanced options.  
    sp_configure 'show advanced options', 1 ;  
    GO  
    RECONFIGURE ;  
    GO  
    -- Enable EKM provider  
    sp_configure 'EKM provider enabled', 1 ;  
    GO  
    RECONFIGURE ;  
    GO  
    -- Create a cryptographic provider, which we have chosen to call "EKM_Prov," based on an EKM provider  
    
    CREATE CRYPTOGRAPHIC PROVIDER EKM_Prov   
    FROM FILE = 'C:\EKM_Files\KeyProvFile.dll' ;  
    GO  
    
    -- Create a credential that will be used by system administrators.  
    CREATE CREDENTIAL sa_ekm_tde_cred   
    WITH IDENTITY = 'Identity1',   
    SECRET = 'q*gtev$0u#D1v'   
    FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;  
    GO  
    
    -- Add the credential to a high privileged user such as your   
    -- own domain login in the format [DOMAIN\login].  
    ALTER LOGIN Contoso\Mary  
    ADD CREDENTIAL sa_ekm_tde_cred ;  
    GO  
    -- create an asymmetric key stored inside the EKM provider  
    USE master ;  
    GO  
    CREATE ASYMMETRIC KEY ekm_login_key   
    FROM PROVIDER [EKM_Prov]  
    WITH ALGORITHM = RSA_512,  
    PROVIDER_KEY_NAME = 'SQL_Server_Key' ;  
    GO  
    
    -- Create a credential that will be used by the Database Engine.  
    CREATE CREDENTIAL ekm_tde_cred   
    WITH IDENTITY = 'Identity2'   
    , SECRET = 'jeksi84&sLksi01@s'   
    FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;  
    
    -- Add a login used by TDE, and add the new credential to the login.  
    CREATE LOGIN EKM_Login   
    FROM ASYMMETRIC KEY ekm_login_key ;  
    GO  
    ALTER LOGIN EKM_Login   
    ADD CREDENTIAL ekm_tde_cred ;  
    GO  
    
    -- Create the database encryption key that will be used for TDE.  
    USE AdventureWorks2012 ;  
    GO  
    CREATE DATABASE ENCRYPTION KEY  
    WITH ALGORITHM  = AES_128  
    ENCRYPTION BY SERVER ASYMMETRIC KEY ekm_login_key ;  
    GO  
    
    -- Alter the database to enable transparent data encryption.  
    ALTER DATABASE AdventureWorks2012   
    SET ENCRYPTION ON ;  
    GO  
    

    자세한 내용은 다음 항목을 참조하세요.For more information, see the following:

참고 항목See Also

Azure SQL 데이터베이스를 사용한 투명한 데이터 암호화Transparent Data Encryption with Azure SQL Database