Azure 주요 자격 증명 모음을 사용하여 확장 가능 키 관리(SQL Server)

Microsoft Azure 주요 자격 증명 모음용 SQL Server 커넥터는 SQL Server 암호화를 사용하도록 설정하여 Azure 주요 자격 증명 모음 서비스를 EKM(확장 가능 키 관리) 공급자로 활용함으로써 암호화 키를 보호합니다.

이 항목의 내용:

  • EKM 사용

  • 1단계: SQL Server에서 사용할 주요 자격 증명 모음 설정

  • 2단계: SQL Server 커넥터 설치

  • 3단계: 주요 자격 증명 모음용 EKM 공급자를 사용하도록 SQL Server 구성

  • 예 1: 주요 자격 증명 모음의 비대칭 키를 사용한 투명한 데이터 암호화

  • 예 2: 주요 자격 증명 모음의 비대칭 키를 사용하여 백업 암호화

  • 예 3: 주요 자격 증명 모음의 비대칭 키를 사용한 열 수준 암호화

EKM 사용

조직에서는 SQL Server 암호화를 사용하여 중요한 데이터를 보호할 수 있습니다. SQL Server 암호화는 투명한 데이터 암호화, CLE(열 수준 암호화)Backup Encryption를 포함합니다. 이러한 모든 경우에 대칭 데이터 암호화 키를 사용하여 데이터를 암호화합니다. 대칭 데이터 암호화 키는 SQL Server에 저장된 키 계층으로 암호화되어 추가로 보호됩니다. 또한 EKM 공급자 아키텍처를 사용하면 SQL Server에서 SQL Server 외부의 외부 암호화 공급자에 저장된 비대칭 키를 사용하여 데이터 암호화 키를 보호할 수도 있습니다. EKM 공급자 아키텍처를 사용하면 보안 계층이 추가되므로 조직이 키와 데이터 관리를 구분할 수 있습니다.

Azure 주요 자격 증명 모음용 SQL Server 커넥터를 사용하면 SQL Server에서 확장성과 가용성이 뛰어난 고성능 주요 자격 증명 모음 서비스를 EKM 공급자로 활용하여 암호화 키를 보호할 수 있습니다. 주요 자격 증명 모음 서비스는 Microsoft Azure 가상 컴퓨터의 SQL Server 설치 및 온-프레미스 서버에서 사용할 수 있습니다. 주요 자격 증명 모음 서비스에서는 긴밀하게 제어 및 모니터링되는 HSM(하드웨어 보안 모듈)을 사용하여 비대칭형 암호화 키에 대한 높은 수준의 보호 기능을 제공하는 옵션도 제공합니다. 주요 자격 증명 모음에 대한 자세한 내용은 Azure 주요 자격 증명 모음을 참조하세요.

맨 위

다음 이미지에는 주요 자격 증명 모음을 사용한 EKM의 프로세스 흐름이 요약되어 있습니다. 이미지의 프로세스 단계 번호는 이미지 다음에 나오는 설정 단계 번호와 일치하지 않습니다.

Azure Key Vault를 사용하는 SQL Server EKM

1단계: SQL Server에서 사용할 주요 자격 증명 모음 설정

다음 단계에서 암호화 키 보호를 위해 SQL Server 데이터베이스 엔진에서 사용할 주요 자격 증명 모음을 설정합니다. 조직에서 자격 증명 모음이 이미 사용되고 있을 수 있습니다. 자격 증명 모음이 없는 경우 조직에서 암호화 키 관리를 담당하는 Azure 관리자는 자격 증명 모음을 만들고 자격 증명 모음에 비대칭 키를 생성하고 SQL Server에 키를 사용할 권한을 부여할 수 있습니다. 주요 자격 증명 모음 서비스를 보다 잘 이해하려면 Azure 주요 자격 증명 모음 시작(영문) 및 PowerShell Azure 주요 자격 증명 모음 Cmdlet(영문) 참조를 검토하세요.

중요 정보중요

여러 Azure 구독이 있는 경우에는 SQL Server를 포함하는 구독을 사용해야 합니다.

  1. 자격 증명 모음을 만듭니다. Azure 주요 자격 증명 모음 시작주요 자격 증명 모음 만들기 섹션에 나온 지침에 따라 자격 증명 모음을 만듭니다. 자격 증명 모음 이름을 기록합니다. 이 항목에서는 ContosoKeyVault를 주요 자격 증명 모음 이름으로 사용합니다.

  2. 자격 증명 모음에 비대칭 키를 생성합니다. 주요 자격 증명 모음의 비대칭 키는 SQL Server 암호화 키를 보호하는 데 사용됩니다. 비대칭 키의 공개 부분만 자격 증명 모음에서 나가고 비공개 부분은 자격 증명 모음에서 내보내지 않습니다. 비대칭 키를 사용하는 모든 암호화 작업은 Azure 주요 자격 증명 모음에 위임되며 주요 자격 증명 모음 보안에 의해 보호됩니다.

    비대칭 키를 생성하고 자격 증명 모음에 저장할 수 있는 몇 가지 방법이 있습니다. 외부에서 키를 생성한 다음 자격 증명 모음에 .pfx 파일로 가져올 수 있습니다. 또는 주요 자격 증명 모음 API를 사용하여 자격 증명 모음에 키를 직접 만들 수도 있습니다.

    SQL Server 커넥터에서는 비대칭 키가 2048비트 RSA여야 하며 키 이름에 문자 "a-z", "A-Z", "0-9" 및 "-"만 사용할 수 있습니다. 이 문서에서 비대칭 키의 이름은 ContosoMasterKey입니다. 이 이름을 키에 사용할 고유한 이름으로 바꿉니다.

    보안 정보보안 정보

    프로덕션 시나리오에서는 비대칭 키를 가져오는 것이 좋은데, 이 경우 관리자가 키 위탁 시스템에 키를 보관할 수 있기 때문입니다. 자격 증명 모음에 비대칭 키를 만드는 경우에는 개인 키를 자격 증명 모음에서 내보낼 수 없으므로 비대칭 키를 보관할 수 없습니다. 중요한 데이터를 보호하는 데 사용되는 키는 보관해야 합니다. 비대칭 키가 손실되면 데이터를 영구적으로 복구할 수 없게 됩니다.

    보안 정보보안 정보

    키 자격 증명 모음에는 이름이 동일한 키가 여러 버전 있을 수 있습니다. SQL Server 커넥터에서 사용할 키는 버전이 있거나 롤되어서는 안 됩니다. 관리자가 SQL Server 암호화에 사용되는 키를 롤하려면 자격 증명 모음에 다른 이름으로 새 키를 만들어 DEK를 암호화하는 데 사용해야 합니다.

    키를 주요 자격 증명 모음으로 가져오는 방법이나 주요 자격 증명 모음에 키를 만드는 방법(프로덕션 환경에서는 권장하지 않음)에 대한 자세한 내용은 Azure 주요 자격 증명 모음 시작(영문)의 주요 자격 증명 모음에 키 또는 암호 추가 섹션을 참조하세요.

    중요 정보중요

    사용자에게 적어도 주요 자격 증명 모음에 대한 wrapKeyunwrapKey 작업이 있어야 합니다.

  3. SQL Server에 사용할 Azure Active Directory 서비스 주체 가져오기: 조직은 Microsoft 클라우드 서비스에 등록하는 경우 Azure Active Directory를 가져옵니다. 주요 자격 증명 모음에 액세스하는 동안 SQL Server에서 자체를 Azure Active Directory에 인증하는 데 사용할 서비스 주체를 Azure Active Directory에 만듭니다.

    • 하나의 서비스 주체는 SQL Server 관리자가 SQL Server에서 암호화를 사용하도록 구성할 때 자격 증명 모음에 액세스하는 데 필요합니다.

    • 또 하나의 서비스 주체는 SQL Server 데이터베이스 엔진에서 SQL Server 암호화에 사용되는 키를 래핑 해제하기 위해 자격 증명 모음에 액세스하는 데 필요합니다.

    응용 프로그램을 등록하고 서비스 주체를 생성하는 방법에 대한 자세한 내용은 Azure 주요 자격 증명 모음 시작(영문)의 Azure Active Directory에 응용 프로그램 등록 섹션을 참조하세요. 등록 프로세스에서는 각 Azure Active Directory 서비스 주체에 대한 응용 프로그램 ID(클라이언트 ID라고도 함) 및 인증 키(암호라고도 함)를 반환합니다. CREATE CREDENTIAL 문에서 사용할 때는 클라이언트 ID에서 하이픈을 제거해야 합니다. 아래 스크립트에서 사용하기 위해 이 내용을 기록합니다.

    • sysadmin 로그인에 대한 서비스 주체: CLIENTID_sysadmin_loginSECRET_sysadmin_login

    • SQL Server 데이터베이스 엔진에 대한 서비스 주체: CLIENTID_DBEngineSECRET_DBEngine.

  4. 서비스 주체에 대해 주요 자격 증명 모음에 액세스할 권한 부여: CLIENTID_sysadmin_loginCLIENTID_DBEngine 서비스 주체 모두에게 주요 자격 증명 모음에서 get, list, wrapKeyunwrapKey 권한이 필요합니다. SQL Server를 통해 키를 만들려면 주요 자격 증명 모음에서 create 권한도 부여해야 합니다.

    자격 증명 모음에 권한을 부여하는 방법에 대한 자세한 내용은 Azure 주요 자격 증명 모음 시작(영문)에서 응용 프로그램에 키 또는 암호를 사용할 권한 부여 섹션을 참조하세요.

    Azure 주요 자격 증명 모음 설명서에 대한 링크

맨 위

2단계: SQL Server 커넥터 설치

SQL Server 커넥터는 SQL Server 컴퓨터의 관리자가 다운로드하고 설치합니다. SQL Server 커넥터는 Microsoft 다운로드 센터에서 다운로드할 수 있습니다. Microsoft Azure 주요 자격 증명 모음용 SQL Server 커넥터를 검색하고 세부 정보, 시스템 요구 사항 및 설치 지침을 검토하고 커넥터를 다운로드하도록 선택하고 실행을 사용하여 설치를 시작합니다. 라이선스를 검토하고 사용 조건에 동의하고 계속합니다.

기본적으로 커넥터는 C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault에 설치됩니다. 설치하는 동안 이 위치를 변경할 수 있습니다. (변경한 경우 아래 스크립트를 조정합니다.)

설치가 완료되면 컴퓨터에 다음 항목이 설치됩니다.

  • Microsoft.AzureKeyVaultService.EKM.dll: CREATE CRYPTOGRAPHIC PROVIDER 문을 사용하여 SQL Server에 등록하는 데 필요한 암호화 EKM 공급자 DLL입니다.

  • Azure 주요 자격 증명 모음 SQL Server 커넥터: 암호화 EKM 공급자가 주요 자격 증명 모음과 통신할 수 있도록 하는 Windows 서비스입니다.

SQL Server 커넥터 설치에서는 필요에 따라 SQL Server 암호화용 샘플 스크립트를 다운로드할 수도 있습니다.

맨 위

3단계: 주요 자격 증명 모음용 EKM 공급자를 사용하도록 SQL Server 구성

사용 권한

이 전체 프로세스를 완료하려면 CONTROL SERVER 권한이나 sysadmin 고정 서버 역할의 멤버 자격이 있어야 합니다. 특정 작업에는 다음 권한이 필요합니다.

  • 암호화 공급자를 만들려면 CONTROL SERVER 권한 또는 멤버 자격이 필요는 sysadmin 고정 서버 역할의 멤버 자격이 필요합니다.

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

  • 자격 증명을 만들려면 ALTER ANY CREDENTIAL 권한이 필요합니다.

  • 자격 증명을 로그인에 추가하려면 ALTER ANY LOGIN 권한이 필요합니다.

  • 비대칭 키를 만들려면 CREATE ASYMMETRIC KEY 권한이 필요합니다.

맨 위 링크와 함께 사용되는 화살표 아이콘[Top]

암호화 공급자를 사용하도록 SQL Server를 구성하려면

  1. 데이터베이스 엔진에서 EKM을 사용하도록 구성하고 암호화 공급자를 SQL Server에 등록하거나 만듭니다.

    -- Enable advanced options.
    USE master;
    GO
    
    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, using the SQL Server Connector
    -- which is an EKM provider for the Azure Key Vault. This example uses 
    -- the name AzureKeyVault_EKM_Prov.
    
    CREATE CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov 
    FROM FILE = 'C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault\Microsoft.AzureKeyVaultService.EKM.dll';
    GO 
    
  2. SQL Server 암호화 시나리오를 설정 및 관리하기 위해 키 자격 증명을 사용하려면 SQL Server 관리자 로그인을 위한 SQL Server 자격 증명을 설정합니다.

    중요 정보중요

    CREATE CREDENTIALIDENTITY 인수에는 주요 자격 증명 모음 이름이 필요합니다. CREATE CREDENTIALSECRET 인수에는 <클라이언트 ID>(하이픈 없이)와 <암호>를 사이에 공백 없이 함께 전달해야 합니다.

    다음 예제에서는 클라이언트 ID(EF5C8E09-4D2A-4A76-9998-D93440D8115D)를 하이픈은 제거하고 EF5C8E094D2A4A769998D93440D8115D 문자열로 입력하며 암호를 SECRET_sysadmin_login 문자열로 나타냅니다.

    USE master;
    CREATE CREDENTIAL sysadmin_ekm_cred 
        WITH IDENTITY = 'ContosoKeyVault', 
        SECRET = 'EF5C8E094D2A4A769998D93440D8115DSECRET_sysadmin_login' 
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ;
    
    -- Add the credential to the SQL Server administrators domain login 
    ALTER LOGIN [<domain>/<login>]
    ADD CREDENTIAL sysadmin_ekm_cred;
    

    CREATE CREDENTIAL 인수에 변수를 사용하고 클라이언트 ID에서 프로그래밍 방식으로 하이픈을 제거하는 예제는 CREATE CREDENTIAL(Transact-SQL)을 참조하세요.

  3. 앞의 섹션 3, 1단계에서 설명한 대로 비대칭 키를 가져온 경우에는 다음 예에서 키 이름을 지정하여 키를 엽니다.

    CREATE ASYMMETRIC KEY CONTOSO_KEY 
    FROM PROVIDER [AzureKeyVault_EKM_Prov]
    WITH PROVIDER_KEY_NAME = 'ContosoMasterKey',
    CREATION_DISPOSITION = OPEN_EXISTING;
    

    프로덕션 환경에서 권장되지는 않지만(키를 내보낼 수 없으므로) SQL Server에서 자격 증명 모음에 비대칭 키를 직접 만들 수 있습니다. 앞에서 키를 가져오지 않은 경우에는 테스트를 위해 다음 스크립트를 사용하여 주요 자격 증명 모음에 비대칭 키를 만듭니다. sysadmin_ekm_cred 자격 증명을 사용하여 프로비전된 로그인을 사용하여 스크립트를 실행합니다.

    CREATE ASYMMETRIC KEY CONTOSO_KEY 
    FROM PROVIDER [AzureKeyVault_EKM_Prov]
    WITH ALGORITHM = RSA_2048,
    PROVIDER_KEY_NAME = 'ContosoMasterKey';
    

자세한 내용은 다음 항목을 참조하십시오.

맨 위 링크와 함께 사용되는 화살표 아이콘[Top]

예 1: 주요 자격 증명 모음의 비대칭 키를 사용한 투명한 데이터 암호화

위의 단계를 완료한 후 자격 증명을 만들고 로그인한 다음 주요 자격 증명 모음의 비대칭 키로 보호되는 데이터베이스 암호화 키를 만듭니다. 데이터베이스 암호화 키를 사용하여 데이터베이스를 TDE로 암호화합니다.

데이터베이스를 암호화하려면 데이터베이스에 대한 CONTROL 권한이 있어야 합니다.

EKM 및 주요 자격 증명 모음 키를 사용하여 TDE를 사용하도록 설정하려면

  1. 데이터베이스 로드 중 키 자격 증명 EKM에 액세스할 때 사용할 데이터베이스 엔진에 대한 SQL Server 자격 증명을 만듭니다.

    중요 정보중요

    CREATE CREDENTIALIDENTITY 인수에는 주요 자격 증명 모음 이름이 필요합니다. CREATE CREDENTIALSECRET 인수에는 <클라이언트 ID>(하이픈 없이)와 <암호>를 사이에 공백 없이 함께 전달해야 합니다.

    다음 예제에서는 클라이언트 ID(EF5C8E09-4D2A-4A76-9998-D93440D8115D)를 하이픈은 제거하고 EF5C8E094D2A4A769998D93440D8115D 문자열로 입력하며 암호를 SECRET_DBEngine 문자열로 나타냅니다.

    USE master;
    CREATE CREDENTIAL Azure_EKM_TDE_cred 
        WITH IDENTITY = 'ContosoKeyVault', 
        SECRET = 'EF5C8E094D2A4A769998D93440D8115DSECRET_DBEngine' 
        FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ;
    
  2. 데이터베이스 엔진에서 TDE에 사용할 SQL Server 로그인을 만들고 여기에 자격 증명을 추가합니다. 이 예제에서는 위의 섹션 3의 3단계에서 설명한 대로 앞에서 master 데이터베이스에 사용하기 위해 가져오거나 만든 주요 자격 증명 모음에 저장된 CONTOSO_KEY 비대칭 키를 사용합니다.

    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. TDE에 사용할 DEK(데이터베이스 암호화 키)를 만듭니다. DEK는 SQL Server에서 지원하는 알고리즘 또는 키 길이를 사용하여 만들 수 있습니다. DEK는 주요 자격 증명 모음의 비대칭 키로 보호됩니다.

    이 예제에서는 위의 섹션 3의 3단계에서 설명한 대로 앞에서 가져오거나 만든 주요 자격 증명 모음에 저장된 CONTOSO_KEY 비대칭 키를 사용합니다.

    USE ContosoDatabase;
    GO
    
    
    
    
    
    
    
    CREATE DATABASE ENCRYPTION KEY 
    WITH ALGORITHM = AES_128 
    ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY;
    GO
    
    -- Alter the database to enable transparent data encryption.
    ALTER DATABASE ContosoDatabase 
    SET ENCRYPTION ON ;
    GO
    

    자세한 내용은 다음 항목을 참조하십시오.

맨 위

예 2: 주요 자격 증명 모음의 비대칭 키를 사용하여 백업 암호화

암호화된 백업은 부터 지원됩니다. 다음 예제에서는 주요 자격 증명 모음의 비대칭 키로 보호된 데이터 암호화 키로 암호화된 백업을 만들고 복원합니다.

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]);
GO

샘플 복원 코드입니다.

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

백업 옵션에 대한 자세한 내용은 BACKUP(Transact-SQL)을 참조하세요.

예 3: 주요 자격 증명 모음의 비대칭 키를 사용한 열 수준 암호화

다음 예제에서는 주요 자격 증명 모음의 비대칭 키로 보호되는 대칭 키를 만듭니다. 그런 다음 대칭 키를 사용하여 데이터베이스의 데이터를 암호화합니다.

이 예제에서는 위의 섹션 3의 3단계에서 설명한 대로 앞에서 가져오거나 만든 주요 자격 증명 모음에 저장된 CONTOSO_KEY 비대칭 키를 사용합니다. ContosoDatabase 데이터베이스에서 이 비대칭 키를 사용하려면 CREATE ASYMMETRIC KEY 문을 다시 실행하여 ContosoDatabase 데이터베이스에 키에 대한 참조를 제공해야 합니다.

USE [ContosoDatabase];
GO

-- Create a reference to the key in the key vault
CREATE ASYMMETRIC KEY CONTOSO_KEY 
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = 'ContosoMasterKey',
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;

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;

--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;

참고 항목

참조

CREATE CRYPTOGRAPHIC PROVIDER(Transact-SQL)

CREATE CREDENTIAL(Transact-SQL)

CREATE ASYMMETRIC KEY(Transact-SQL)

CREATE SYMMETRIC KEY(Transact-SQL)

개념

EKM(확장 가능 키 관리)

EKM을 사용하여 TDE 설정

관련 자료

Backup Encryption

Create an Encrypted Backup