SQL 암호화 기능을 통해 SQL Server 커넥터 사용Use SQL Server Connector with SQL Encryption Features

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)아니요Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Azure 주요 자격 증명 모음으로 보호되는 비대칭 키를 사용하는 일반적인 SQL ServerSQL Server 암호화 작업에는 다음 세 가지 영역이 포함됩니다.Common SQL ServerSQL Server encryption activities using an asymmetric key protected by the Azure Key Vault include the following three areas.

  • Azure 주요 자격 증명 모음에서 비대칭 키를 사용한 투명한 데이터 암호화Transparent Data Encryption by using an Asymmetric Key from Azure Key Vault

  • 키 자격 증명 모음에서 비대칭 키를 사용한 백업 암호화Encrypting Backups by Using an Asymmetric Key from the Key Vault

  • 키 자격 증명 모음에서 비대칭 키를 사용한 열 수준 암호화Column Level Encryption by Using an Asymmetric Key from the Key Vault

    이 항목의 단계를 수행하기 전에 Azure 주요 자격 증명 모음을 사용한 확장 가능 키 관리 설정 단계항목의 1 ~ 4부를 완료합니다.Complete parts I through IV of the topic Setup Steps for Extensible Key Management Using the Azure Key Vault, before following the steps on this topic.

참고

1.0.0.440 및 이전 버전은 대체되었으며 프로덕션 환경에서 더 이상 지원되지 않습니다.Versions 1.0.0.440 and older have been replaced and are no longer supported in production environments. Microsoft 다운로드 센터를 방문하고 "SQL Server 커넥터 업그레이드"의 SQL Server 커넥터 유지 관리 및 문제 해결 페이지에 있는 지침을 사용하여 1.0.1.0 또는 이후 버전으로 업그레이드하세요.Upgrade to version 1.0.1.0 or later by visiting the Microsoft Download Center and using the instructions on the SQL Server Connector Maintenance & Troubleshooting page under “Upgrade of SQL Server Connector.”

Azure 주요 자격 증명 모음에서 비대칭 키를 사용한 투명한 데이터 암호화Transparent Data Encryption by using an Asymmetric Key from Azure Key Vault

Azure 주요 자격 증명 모음을 사용한 확장 가능 키 관리 설정 단계 항목의 1~4부를 완료한 후, Azure 주요 자격 증명 모음 키를 사용하여 TDE를 사용하는 데이터베이스 암호화 키를 암호화합니다.After completing Parts I through IV of the topic Setup Steps for Extensible Key Management Using the Azure Key Vault, use the Azure Key Vault key to encrypt the database encryption key using TDE.
자격 증명 및 로그인을 만들고 데이터베이스의 데이터 및 로그를 암호화할 데이터베이스 암호화 키를 만듭니다.You will need to create a credential and a login, and create a database encryption key which will encrypt the data and logs in the database. 데이터베이스를 암호화하려면 데이터베이스에 대한 CONTROL 권한이 필요합니다.To encrypt a database requires CONTROL permission on the database. 다음 그래픽에서는 Azure 주요 자격 증명 모음을 사용하는 경우 암호화 키의 계층 구조를 보여 줍니다.The following graphic shows the hierarchy of the encryption key when using the Azure Key Vault.

ekm-key-hierarchy-with-akvekm-key-hierarchy-with-akv

  1. TDE에 사용할 데이터베이스 엔진의 SQL ServerSQL Server 자격 증명 만들기Create a SQL ServerSQL Server credential for the Database Engine to use for TDE

    데이터베이스 엔진은 데이터베이스 로드 중에 자격 증명을 사용하여 주요 자격 증명 모음에 액세스합니다.The Database Engine uses the credential to access the Key Vault during database load. 부여되는 주요 자격 증명 모음 사용 권한을 제한하려면, 의 경우 1부에서 다른 Azure Active Directory 클라이언트 ID 암호 데이터베이스 엔진Database Engine를 만드는 것이 좋습니다.We recommend creating another Azure Active Directory Client ID and Secret in Part I for the 데이터베이스 엔진Database Engine, to limit the Key Vault permissions that are granted.

    다음과 같이 아래 Transact-SQLTransact-SQL 스크립트를 수정합니다.Modify the Transact-SQLTransact-SQL script below in the following ways:

    • Azure Key Vault를 가리키도록 IDENTITY 인수(ContosoDevKeyVault)를 편집합니다.Edit the IDENTITY argument (ContosoDevKeyVault) to point to your Azure Key Vault.

      • 공용 Azure를 사용하는 경우 IDENTITY 인수를 파트 2의 Azure Key Vault 이름으로 바꿉니다.If you're using public Azure, replace the IDENTITY argument with the name of your Azure Key Vault from Part II.
      • 사설 Azure 클라우드 (예:If you're using a private Azure cloud (ex. Azure Government, Azure China 또는 Azure Germany)를 사용하는 경우는 IDENTITY 인수를 파트 2의 3단계에서 반환된 자격 증명 모음 URI로 바꿉니다.Azure Government, Azure China, or Azure Germany), replace the IDENTITY argument with the Vault URI that is returned in Part II, step 3. 자격 증명 모음 URI에 "https://"를 포함하지 마세요.Do not include "https://" in the Vault URI.
    • SECRET 인수의 첫 번째 부분을 1부의 Azure Active Directory 클라이언트 ID 로 바꿉니다. 이 예제에서 클라이언트 IDEF5C8E094D2A4A769998D93440D8115D입니다.Replace the first part of the SECRET argument with the Azure Active Directory Client ID from Part I. In this example, the Client ID is EF5C8E094D2A4A769998D93440D8115D.

      중요

      클라이언트 ID에서 하이픈을 제거해야 합니다.You must remove the hyphens from the Client ID.

    • SECRET 인수의 두 번째 부분을 파트 1의 클라이언트 암호 를 사용하여 완성합니다. 이 예제에서 파트 1의 클라이언트 암호Replace-With-AAD-Client-Secret입니다.Complete the second part of the SECRET argument with Client Secret from Part I. In this example the Client Secret from Part 1 is Replace-With-AAD-Client-Secret. SECRET 인수의 최종 문자열은 하이픈 없는문자 및 숫자의 긴 시퀀스가 됩니다.The final string for the SECRET argument will be a long sequence of letters and numbers, with no hyphens.

    USE master;  
    CREATE CREDENTIAL Azure_EKM_TDE_cred   
        WITH IDENTITY = 'ContosoDevKeyVault', -- for public Azure
        -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government
        -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Azure China
        -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany   
        SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplace-With-AAD-Client-Secret'   
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;  
    
  2. TDE의 SQL ServerSQL Server 에 대한 데이터베이스 엔진Database Engine 로그인 만들기Create a SQL ServerSQL Server login for the 데이터베이스 엔진Database Engine for TDE

    SQL ServerSQL Server 로그인을 만들고 1단계의 자격 증명을 여기에 추가합니다.Create a SQL ServerSQL Server login and add the credential from Step 1 to it. Transact-SQLTransact-SQL 예제에서는 앞에서 가져온 것과 동일한 키를 사용합니다.This Transact-SQLTransact-SQL example uses the same key that was imported earlier.

    USE master;  
    -- Create a SQL Server login associated with the asymmetric key   
    -- for the Database engine to use when it loads a database   
    -- encrypted by TDE.  
    CREATE LOGIN TDE_Login   
    FROM ASYMMETRIC KEY CONTOSO_KEY;  
    GO   
    
    -- Alter the TDE Login to add the credential for use by the   
    -- Database Engine to access the key vault  
    ALTER LOGIN TDE_Login   
    ADD CREDENTIAL Azure_EKM_TDE_cred ;  
    GO  
    
  3. DEK(데이터베이스 암호화 키) 만들기Create the Database Encryption Key (DEK)

    DEK은 데이터베이스 인스턴스의 데이터 및 로그 파일을 암호화하고, Azure 주요 자격 증명 모음 비대칭 키로 암호화될 수 있습니다.The DEK will encrypt your data and log files in the database instance, and in turn be encrypted by the Azure Key Vault asymmetric key. DEK는 SQL ServerSQL Server 에서 지원되는 알고리즘 또는 키 길이를 사용하여 만들 수 있습니다.The DEK can be created using any SQL ServerSQL Server supported algorithm or key length.

    USE ContosoDatabase;  
    GO  
    
    CREATE DATABASE ENCRYPTION KEY   
    WITH ALGORITHM = AES_256   
    ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY;  
    GO  
    
  4. TDE 설정Turn On TDE

    -- Alter the database to enable transparent data encryption.  
    ALTER DATABASE ContosoDatabase   
    SET ENCRYPTION ON;  
    GO  
    

    Management StudioManagement Studio을(를) 사용하여, 개체 탐색기에서 데이터베이스에 연결하여 TDE가 켜져 있는지 확인합니다.Using Management StudioManagement Studio, verify that TDE has been turned on by connecting to your database with Object Explorer. 데이터베이스를 마우스 오른쪽 단추로 클릭하고 태스크가리킨 다음 데이터베이스 암호화 관리를 클릭합니다.Right-click your database, point to Tasks, and then click Manage Database Encryption.

    ekm-tde-object-explorerekm-tde-object-explorer

    데이터베이스 암호화 관리 대화 상자에서 TDE가 켜져 있고 DEK를 암호화하는 비대칭 키가 무엇인지 확인합니다.In the Manage Database Encryption dialog box, confirm that TDE is on, and what asymmetric key is encrypting the DEK.

    ekm-tde-dialog-boxekm-tde-dialog-box

    또는 다음 Transact-SQLTransact-SQL 스크립트를 실행할 수 있습니다.Alternatively, you can execute the following Transact-SQLTransact-SQL script. 암호화 상태 3은 암호화된 데이터베이스를 나타냅니다.An encryption state of 3 indicates an encrypted database.

    USE MASTER  
    SELECT * FROM sys.asymmetric_keys  
    
    -- Check which databases are encrypted using TDE  
    SELECT d.name, dek.encryption_state   
    FROM sys.dm_database_encryption_keys AS dek  
    JOIN sys.databases AS d  
         ON dek.database_id = d.database_id;  
    
    참고

    tempdb 데이터베이스는 데이터베이스에서 TDE를 사용할 때마다 자동으로 암호화됩니다.The tempdb database is automatically encrypted whenever any database enables TDE.

키 자격 증명 모음에서 비대칭 키를 사용한 백업 암호화Encrypting Backups by Using an Asymmetric Key from the Key Vault

암호화된 백업은 SQL Server 2014SQL Server 2014부터 지원됩니다.Encrypted backups are supported starting with SQL Server 2014SQL Server 2014. 다음 예제에서는 키 자격 증명 모음에서 비대칭 키로 보호되는 데이터 암호화 키로 암호화된 백업을 만들고 복원합니다.The following example creates and restores a backup encrypted a data encryption key protected by the asymmetric key in the key vault.
데이터베이스 엔진Database Engine 은(는) 데이터베이스 로드 중 주요 자격 증명 모음에 액세스할 때 자격 증명이 필요합니다.The 데이터베이스 엔진Database Engine needs the credential when accessing the Key Vault during database load. 부여되는 주요 자격 증명 모음 사용 권한을 제한하려면, 데이터베이스 엔진의 경우 1부에서 다른 Azure Active Directory 클라이언트 ID 및 암호를 만드는 것이 좋습니다.We recommend creating another Azure Active Directory Client ID and Secret in Part I for the Database Engine, to limit the Key Vault permissions that are granted.

  1. 백업 암호화에 사용할 데이터베이스 엔진의 SQL Server 자격 증명 만들기Create a SQL Server credential for the Database Engine to use for Backup Encryption

    다음과 같이 아래 Transact-SQLTransact-SQL 스크립트를 수정합니다.Modify the Transact-SQLTransact-SQL script below in the following ways:

    • Azure Key Vault를 가리키도록 IDENTITY 인수(ContosoDevKeyVault)를 편집합니다.Edit the IDENTITY argument (ContosoDevKeyVault) to point to your Azure Key Vault.

      • 공용 Azure를 사용하는 경우 IDENTITY 인수를 파트 2의 Azure Key Vault 이름으로 바꿉니다.If you're using public Azure, replace the IDENTITY argument with the name of your Azure Key Vault from Part II.
      • 사설 Azure 클라우드 (예:If you're using a private Azure cloud (ex. Azure Government, Azure China 또는 Azure Germany)를 사용하는 경우는 IDENTITY 인수를 파트 2의 3단계에서 반환된 자격 증명 모음 URI로 바꿉니다.Azure Government, Azure China, or Azure Germany), replace the IDENTITY argument with the Vault URI that is returned in Part II, step 3. 자격 증명 모음 URI에 "https://"를 포함하지 마세요.Do not include "https://" in the Vault URI.
    • SECRET 인수의 첫 번째 부분을 1부의 Azure Active Directory 클라이언트 ID 로 바꿉니다. 이 예제에서 클라이언트 IDEF5C8E094D2A4A769998D93440D8115D입니다.Replace the first part of the SECRET argument with the Azure Active Directory Client ID from Part I. In this example, the Client ID is EF5C8E094D2A4A769998D93440D8115D.

      중요

      클라이언트 ID에서 하이픈을 제거해야 합니다.You must remove the hyphens from the Client ID.

    • SECRET 인수의 두 번째 부분을 파트 1의 클라이언트 암호 를 사용하여 완성합니다. 이 예제에서 파트 1의 클라이언트 암호Replace-With-AAD-Client-Secret입니다.Complete the second part of the SECRET argument with Client Secret from Part I. In this example the Client Secret from Part I is Replace-With-AAD-Client-Secret. SECRET 인수의 최종 문자열은 하이픈 없는문자 및 숫자의 긴 시퀀스가 됩니다.The final string for the SECRET argument will be a long sequence of letters and numbers, with no hyphens.

      USE master;  
      
      CREATE CREDENTIAL Azure_EKM_Backup_cred   
          WITH IDENTITY = 'ContosoDevKeyVault', -- for public Azure
          -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government
          -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Azure China
          -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany   
          SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplace-With-AAD-Client-Secret'   
      FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;    
      
  2. 백업 암호화의 SQL ServerSQL Server 에 대해 데이터베이스 엔진Database Engine 로그인 만들기Create a SQL ServerSQL Server login for the 데이터베이스 엔진Database Engine for Backup Encryption

    암호화 백업에 대해 SQL ServerSQL Server 에서 사용할 데이터베이스 엔진Database Engine로그인을 만들고 1단계의 자격 증명을 여기에 추가합니다.Create a SQL ServerSQL Server login to be used by the 데이터베이스 엔진Database Enginee for encryption backups, and add the credential from Step 1 to it. Transact-SQLTransact-SQL 예제에서는 앞에서 가져온 것과 동일한 키를 사용합니다.This Transact-SQLTransact-SQL example uses the same key that was imported earlier.

    중요

    이미 TDE(위 예제) 또는 열 수준 암호화(아래 예제)에 해당 키를 사용한 경우 백업 암호화에 대해 동일한 비대칭 키를 사용할 수 없습니다.You cannot use the same asymmetric key for backup encryption if you’ve already used that key for TDE (the above example) or column level Encryption (the following example).

    이 예제에서는 앞의 5단계 4부에서 master 데이터베이스용으로 미리 가져오거나 만들 수 있는 주요 자격 증명 모음에 저장된 CONTOSO_KEY_BACKUP 비대칭 키를 사용합니다.This example uses the CONTOSO_KEY_BACKUP asymmetric key stored in the key vault, which can be imported or created earlier for the master database, as Part IV, Step 5 earlier.

    USE master;  
    
    -- Create a SQL Server login associated with the asymmetric key   
    -- for the Database engine to use when it is encrypting the backup.  
    CREATE LOGIN Backup_Login   
    FROM ASYMMETRIC KEY CONTOSO_KEY_BACKUP;  
    GO   
    
    -- Alter the Encrypted Backup Login to add the credential for use by   
    -- the Database Engine to access the key vault  
    ALTER LOGIN Backup_Login   
    ADD CREDENTIAL Azure_EKM_Backup_cred ;  
    GO  
    
  3. 데이터베이스 백업Backup the Database

    주요 자격 증명 모음에 저장되는 비대칭 키에 암호화를 지정하여 데이터베이스를 백업합니다.Backup the database specifying encryption with the asymmetric key stored in the key vault.

    아래 예제에서 데이터베이스가 이미 TDE로 암호화되어 있고 비대칭 키 CONTOSO_KEY_BACKUP이 TDE 비대칭 키와 다른 경우 백업은 TDE 비대칭 키 및 CONTOSO_KEY_BACKUP 모두를 사용하여 암호화됩니다.In the below example, note that if the database was already encrypted with TDE, and the asymmetric key CONTOSO_KEY_BACKUP is different from the TDE asymmetric key, the backup will be encrypted by both the TDE asymmetric key and CONTOSO_KEY_BACKUP. 대상 SQL ServerSQL Server 인스턴스에서 백업 암호를 해독하려면 두 키가 모두 필요합니다.The target SQL ServerSQL Server instance will need both keys in order to decrypt the backup.

    USE master;  
    
    BACKUP DATABASE [DATABASE_TO_BACKUP]  
    TO DISK = N'[PATH TO BACKUP FILE]'   
    WITH FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD,   
    ENCRYPTION(ALGORITHM = AES_256,   
    SERVER ASYMMETRIC KEY = [CONTOSO_KEY_BACKUP]);  
    GO  
    
  4. 데이터베이스 복원Restore the Database

    TDE로 암호화된 데이터베이스 백업을 복원하려면 먼저 대상 SQL ServerSQL Server 인스턴스에 암호화에 사용된 비대칭 Key Vault 키의 사본이 있어야 합니다.To restore a database backup that is encrypted with TDE, the target SQL ServerSQL Server instance must first have a copy of the asymmetric Key Vault key used for encryption. 이 작업을 수행하는 방법은 다음과 같습니다.This is how this would be achieved:

    • TDE에 사용된 원래 비대칭 키가 더 이상 Key Vault에 없는 경우 Key Vault 키 백업을 복원하거나 로컬 HSM에서 키를 다시 가져옵니다.If the original asymmetric key used for TDE is no longer in Key Vault, restore the Key Vault key backup or reimport the key from a local HSM. 중요: 키 지문이 데이터베이스 백업에 기록된 지문과 일치하도록 하려면 키의 원래 이름이 동일한 Key Vault 이름과 동일해야 합니다.Important: In order to have the key’s thumbprint match the thumbprint recorded on the database backup, the key must be named the same Key Vault key name as it was originally named before.

    • 대상 SQL ServerSQL Server 인스턴스에 1단계와 2단계를 적용합니다.Apply Steps 1 and 2 on the target SQL ServerSQL Server instance.

    • 대상 SQL ServerSQL Server 인스턴스가 백업을 암호화하는 데 사용된 비대칭 키에 액세스한 다음 서버에서 데이터베이스를 복원합니다.Once the target SQL ServerSQL Server instance has access to the asymmetric key(s) used to encrypt the backup, restore the database on the server.

      샘플 복원 코드:Sample restore code:

    RESTORE DATABASE [DATABASE_TO_BACKUP]  
    FROM DISK = N'[PATH TO BACKUP FILE]'   
        WITH FILE = 1, NOUNLOAD, REPLACE;  
    GO  
    

    백업 옵션에 대한 자세한 내용은 BACKUP(Transact-SQL)을 참조하세요.For more information about backup options, see BACKUP (Transact-SQL).

키 자격 증명 모음에서 비대칭 키를 사용한 열 수준 암호화Column Level Encryption by Using an Asymmetric Key from the Key Vault

다음 예제에서는 키 자격 증명 모음에 비대칭 키로 보호되는 대칭 키를 만듭니다.The following example creates a symmetric key protected by the asymmetric key in the key vault. 그런 다음 데이터베이스에서 대칭 키를 사용하여 데이터를 암호화합니다.Then the symmetric key is used to encrypt data in the database.

중요

이미 TDE 또는 백업 암호화(이전 예제)에 해당 키를 사용한 경우 백업 암호화에 대해 동일한 비대칭 키를 사용할 수 없습니다.You cannot use the same asymmetric key for backup encryption if you’ve already used that key for TDE or backup encryption (the preceding examples).

이 예제에서는 CONTOSO_KEY_COLUMNS Azure 주요 자격 증명 모음을 사용한 확장 가능 키 관리 설정 단계 의 섹션 3, 3단계에 설명된 대로 미리 가져오거나 만들 수 있는 주요 자격 증명 모음에 저장된비대칭 키를 사용합니다.This example uses the CONTOSO_KEY_COLUMNS asymmetric key stored in the key vault, which can be imported or created earlier, as described in Step 3, section 3 of Setup Steps for Extensible Key Management Using the Azure Key Vault. ContosoDatabase 데이터베이스에서 이 비대칭 키를 사용하려면 다시 CREATE ASYMMETRIC KEY 문을 실행하여 ContosoDatabase 데이터베이스에 키에 대한 참조를 제공해야 합니다.To use this asymmetric key in the ContosoDatabase database, you must execute the CREATE ASYMMETRIC KEY statement again, to provide the ContosoDatabase database with a reference to the key.

USE [ContosoDatabase];  
GO  

-- Create a reference to the key in the key vault  
CREATE ASYMMETRIC KEY CONTOSO_KEY_COLUMNS   
FROM PROVIDER [AzureKeyVault_EKM_Prov]  
WITH PROVIDER_KEY_NAME = 'ContosoDevRSAKey2',  
CREATION_DISPOSITION = OPEN_EXISTING;  

-- Create the data encryption key.  
-- The data encryption key can be created using any SQL Server   
-- supported algorithm or key length.  
-- The DEK will be protected by the asymmetric key in the key vault  

CREATE SYMMETRIC KEY DATA_ENCRYPTION_KEY  
    WITH ALGORITHM=AES_256  
    ENCRYPTION BY ASYMMETRIC KEY CONTOSO_KEY_COLUMNS;  

DECLARE @DATA VARBINARY(MAX);  

--Open the symmetric key for use in this session  
OPEN SYMMETRIC KEY DATA_ENCRYPTION_KEY   
DECRYPTION BY ASYMMETRIC KEY CONTOSO_KEY_COLUMNS;  

--Encrypt syntax  
SELECT @DATA = ENCRYPTBYKEY  
    (  
    KEY_GUID('DATA_ENCRYPTION_KEY'),   
    CONVERT(VARBINARY,'Plain text data to encrypt')  
    );  

-- Decrypt syntax  
SELECT CONVERT(VARCHAR, DECRYPTBYKEY(@DATA));  

--Close the symmetric key  
CLOSE SYMMETRIC KEY DATA_ENCRYPTION_KEY;  

참고 항목See Also

Azure 주요 자격 증명 모음을 사용한 확장 가능 키 관리 설정 단계 Setup Steps for Extensible Key Management Using the Azure Key Vault
Azure 키 자격 증명 모음을 사용한 확장 가능 키 관리 Extensible Key Management Using Azure Key Vault
EKM provider enabled 서버 구성 옵션 EKM provider enabled Server Configuration Option
SQL Server 커넥터 유지 관리 및 문제 해결 SQL Server Connector Maintenance & Troubleshooting