방법: EKM을 사용하여 TDE 설정

TDE(투명한 데이터 암호화)는 전체 데이터베이스의 저장소를 암호화합니다. TDE는 데이터베이스 암호화 키라는 대칭 키를 사용해서 데이터를 암호화합니다. 이 항목에서는 EKM(확장 가능 키 관리) 모듈에 저장된 비대칭 키를 사용하여 데이터 암호화 키를 보호하는 방법에 대해 설명합니다.

또한 master 데이터베이스의 데이터베이스 마스터 키로 보호되는 인증서를 사용하여 데이터베이스 암호화 키를 보호할 수도 있습니다. 데이터베이스 마스터 키를 사용하여 데이터베이스 암호화를 보호하는 방법은 TDE(Transparent Data Encryption) 이해를 참조하십시오.

EKM을 사용해서 TDE를 설정하는 기본 단계는 다음과 같습니다.

  1. EKM 공급자를 설치합니다. 이 단계를 수행하는 절차는 EKM 공급자 요구 사항에 따라 다르지만, 로컬 인증서 저장소에 EMK 공급자의 인증서를 설치하고 EKM DLL 파일을 SQL Server 컴퓨터에 복사하는 과정이 포함될 수 있습니다.

  2. EKM 공급자를 사용하도록 SQL Server를 구성합니다.

  3. EKM 모듈에 기본 인증이 사용될 경우 자격 증명을 만들고 이 자격 증명을 사용자에게 추가합니다.

  4. EKM 공급자에 의해 보호되는 비대칭 키를 만듭니다.

  5. EKM 모듈에 기본 인증이 사용될 경우 데이터베이스 엔진에서 사용할 비대칭 키로 보호되는 자격 증명을 만듭니다.

  6. 대칭 데이터베이스 암호화 키를 만듭니다.

  7. 데이터베이스 암호화 키를 사용하여 TDE를 설정합니다.

이 단계의 절차를 수행하려면 SQL Server Management Studio의 쿼리 편집기 창을 사용해서 SQL Server에 연결합니다.

암호화 공급자를 설치 및 구성하려면

  1. EKM 공급자가 제공하는 파일을 SQL Server 컴퓨터의 적절한 위치에 복사합니다. 이 예에서는 C:\EKM 폴더를 사용합니다.

  2. EKM 공급자의 요구 사항에 따라 컴퓨터에 인증서를 설치합니다.

    [!참고]

    SQL Server는 EKM 공급자를 제공하지 않습니다. 각 EKM 공급자에 따라 사용자 설치, 구성 및 권한 부여에 대한 절차가 다릅니다. 이 단계를 수행하려면 해당 EKM 공급자 설명서를 참조하십시오.

EKM 공급자를 사용하도록 SQL Server를 구성하고 SQL Server에서 공급자를 만들려면

  1. EKM 공급자 설정은 고급 메뉴입니다. 먼저 다음 문을 실행하여 고급 옵션을 표시합니다.

    sp_configure 'show advanced options', 1 ;
    GO
    RECONFIGURE ;
    GO
    
  2. 다음 문을 실행하여 EKM 공급자를 설정합니다.

    sp_configure 'EKM provider enabled', 1 ;
    GO
    RECONFIGURE ;
    GO
    
  3. 다음 문을 실행하여 EKM 공급자에 따라 EKM_Prov를 호출하도록 선택한 암호화 공급자를 만듭니다.

    CREATE CRYPTOGRAPHIC PROVIDER EKM_Prov 
    FROM FILE = 'C:\EKM_Files\KeyProvFile.dll' ;
    GO
    

    [!참고]

    EKM DLL은 디지털 서명해야 합니다.

데이터베이스 암호화에 사용할 자격 증명 만들기

데이터베이스 암호화 키를 만들고 데이터베이스를 암호화하려면 시스템 관리자와 같은 높은 권한이 필요합니다. 해당 사용자는 EKM 모듈로 인증될 수 있어야 합니다. 다음 절차에서는 EKM ID를 사용하는 자격 증명을 만들고 이 자격 증명을 권한이 높은 사용자에게 추가합니다. 다음 절차에서는 EKM 모듈이 'Identity1'이라는 사용자를 인증할 수 있다고 가정합니다. 여기에 표시된 별표 대신 해당 암호를 입력해야 합니다. 이러한 단계는 EKM 공급자에 기본 인증이 사용될 경우에 필요하지만 EKM 모듈에 다른 인증이 사용될 경우 이 섹션의 단계를 건너뛸 수 있습니다.

자격 증명을 만들고 이를 권한이 높은 사용자의 로그인에 추가하려면

  1. 다음 문을 실행하여 시스템 관리자가 사용할 자격 증명을 만듭니다.

    CREATE CREDENTIAL sa_ekm_tde_cred 
    WITH IDENTITY = 'Identity1', 
    SECRET = '*************' 
    FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;
    GO
    
  2. 다음 문을 실행하여 [DOMAIN\login] 형식의 시스템 관리자 자격 증명을 사용자의 도메인 로그인과 같은 권한이 높은 사용자에게 추가합니다.

    ALTER LOGIN [DOMAIN\login]
    ADD CREDENTIAL sa_ekm_tde_cred ;
    GO
    

비대칭 키 만들기

데이터베이스 암호화 키에 대한 액세스를 보호하기 위한 비대칭 키를 만듭니다. SQL Server는 이 키를 사용해서 데이터베이스 암호화 키에 액세스합니다.

데이터베이스 암호화 키를 만들려면

  • 다음 문을 실행하여 EKM 공급자 내에 저장되는 비대칭 키를 만듭니다. 이 예에서 SQL Server는 ekm_login_key 이름으로 키를 식별합니다. EKM 장치 내에서 키 이름은 SQL_Server_Key가 됩니다.

    [!참고]

    사용자의 EKM 공급자에 필요한 옵션 및 매개 변수는 이 문과 다를 수 있습니다. 자세한 내용은 해당 EKM 공급자를 참조하십시오.

    USE master ;
    GO
    CREATE ASYMMETRIC KEY ekm_login_key 
    FROM PROVIDER [EKM_Prov]
    WITH ALGORITHM = RSA_512,
    PROVIDER_KEY_NAME = 'SQL_Server_Key' ;
    GO
    

    [!참고]

    EKM 모듈에 저장된 비대칭 키를 분실한 경우 SQL Server에서 해당 데이터베이스를 열 수 없습니다. EKM 공급자가 비대칭 키를 백업할 수 있도록 허용하는 경우 백업을 만들고 안전한 위치에 저장해야 합니다.

데이터베이스 엔진에서 사용할 자격 증명 만들기

데이터베이스 엔진 시작 시 데이터베이스를 열어야 합니다. 다음 절차에서는 EKM에서 인증에 사용할 자격 증명을 만들고 이를 비대칭 키를 기반으로 하는 로그인에 추가합니다. 사용자는 이 로그인을 사용하여 로그인할 수 없지만 데이터베이스 엔진은 이를 사용하여 EKM 장치에서 인증할 수 있습니다. 다음 절차에서는 EKM 모듈이 'Identity2'라는 사용자를 인증할 수 있다고 가정합니다. 아래에 표시된 별표 대신 해당 암호를 입력해야 합니다. 이러한 단계는 EKM 공급자에 기본 인증이 사용될 경우에 필요하지만 EKM 모듈에 다른 인증이 사용될 경우 이 섹션의 단계를 건너뛸 수 있습니다.

자격 증명을 만들고 이를 로그인에 추가하려면

  1. 다음 문을 실행하여 데이터베이스 엔진에서 사용될 자격 증명을 만듭니다.

    CREATE CREDENTIAL ekm_tde_cred 
    WITH IDENTITY = 'Identity2' 
    , SECRET = '*************' 
    FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;
    
  2. 다음 문을 실행하여 TDE에서 사용할 로그인을 추가하고 새 자격 증명을 로그인에 추가합니다.

    CREATE LOGIN EKM_Login 
    FROM ASYMMETRIC KEY ekm_login_key ;
    GO
    
    ALTER LOGIN EKM_Login 
    ADD CREDENTIAL ekm_tde_cred ;
    GO
    

데이터베이스 암호화 키 만들기

데이터베이스 암호화 키는 비대칭 키입니다. master 데이터베이스에서 데이터베이스 암호화 키를 만듭니다.

데이터베이스 암호화 키를 만들려면

  1. 암호화되는 데이터베이스 변경 내용:

    USE AdventureWorks2008R2 ;
    GO
    
  2. 다음 코드를 실행하여 TDE에 사용할 데이터베이스 암호화 키를 만듭니다.

    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM  = AES_128
    ENCRYPTION BY SERVER ASYMMETRIC KEY ekm_login_key ;
    GO
    
  3. 다음 코드를 실행하여 투명한 데이터 암호화를 설정하도록 데이터베이스를 변경합니다.

    ALTER DATABASE AdventureWorks2008R2 
    SET ENCRYPTION ON ;
    GO
    

    이제 데이터베이스가 암호화된 형식으로 저장됩니다.

보안

이 항목에서는 다음 권한이 사용됩니다.

  • 구성 옵션을 변경하고 RECONFIGURE 문을 실행하려면 ALTER SETTINGS 서버 수준 권한이 있어야 합니다. sysadmin 및 serveradmin 고정 서버 역할은 ALTER SETTINGS 권한을 암시적으로 보유하고 있습니다.

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

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

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

  • 데이터베이스를 암호화하려면 데이터베이스에 대한 CONTROL 권한이 필요합니다.