Azure VM에서 SQL Server에 대한 Azure Key Vault 통합 구성(Resource Manager)

적용 대상: Azure VM의 SQL Server

TDE(투명한 데이터 암호화), CLE(열 수준 암호화)백업 암호화 등 여러 SQL Server 암호화 기능이 있습니다. 이러한 형태의 암호화는 암호화에 사용되는 암호화 키를 관리 및 저장해야 합니다. Azure Key Vault 서비스는 안전하고 가용성이 높은 위치에서 이러한 키의 보안 및 관리를 개선하도록 설계되었습니다. SQL Server 커넥터는 SQL Server가 Azure Key Vault의 키를 사용할 수 있게 해줍니다.

온-프레미스에서 SQL Server를 실행하는 경우 온-프레미스 SQL Server 인스턴스에서 Azure Key Vault에 액세스할 수 있는 단계가 있습니다. 그러나 Azure VM의 SQL Server에서는 Azure Key Vault 통합 기능을 사용하여 시간을 절약할 수 있습니다.

이 기능은 활성화되면 자동으로 SQL Server 커넥터를 설치하고, Azure Key Vault에 액세스하도록 EKM 공급자를 구성하고, 사용자가 자격 증명 모음에 액세스할 수 있도록 자격 증명을 만듭니다. 앞에서 언급한 온-프레미스 설명서의 단계를 살펴보셨다면 이 기능이 2 및 3단계를 자동화한다는 것을 알 수 있습니다. 사용자가 수동으로 해야 하는 유일한 일은 키 자격 증명 모음 및 키를 만드는 작업입니다. 그 이후에 SQL Server VM을 설정하는 전체 과정이 자동화됩니다. 이 기능이 설정을 완료하면 사용자는 T-SQL(Transact-SQL) 문을 실행하여 평소와 같이 데이터베이스 암호화 또는 백업을 시작할 수 있습니다.

AKV 통합 준비

Azure Key Vault 통합을 사용하여 SQL Server VM을 구성하려면 몇 가지 필수 조건이 있습니다.

  1. Azure Powershell 설치
  2. Azure Active Directory 만들기
  3. 키 자격 증명 모음 만들기

다음 섹션에서는 이러한 필수 조건과 나중에 PowerShell cmdlet을 실행하기 위해 수집해야 하는 정보에 대해 설명합니다.

참고

이 문서는 Azure Az PowerShell 모듈을 사용하도록 업데이트되었습니다. Az PowerShell 모듈은 Azure와 상호 작용하는 데 추천되는 PowerShell 모듈입니다. Az PowerShell 모듈을 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.

Azure PowerShell 설치

최신 Azure PowerShell 모듈을 설치했는지 확인합니다. 자세한 내용은 Azure PowerShell을 설치 및 구성하는 방법을 참조하세요.

Azure Active Directory 내 애플리케이션 등록

우선, 구독에 AAD( Azure Active Directory )가 있어야 합니다. 이렇게 하면 여러 이점이 있지만, 그 중에서도 특정 사용자 및 애플리케이션에 키 자격 증명 모음에 대한 권한을 부여할 수 있다는 이점이 있습니다.

다음으로 AAD에 애플리케이션을 등록합니다. 이렇게 하면 VM에 필요한 Key Vault에 액세스할 수 있는 서비스 주체 계정이 제공됩니다. Azure Key Vault 문서의 Azure Active Directory에 애플리케이션 등록 섹션에서 다음 단계를 찾아보거나 이 블로그 게시물애플리케이션용 ID 가져오기 섹션 에서 스크린샷으로 단계를 볼 수 있습니다. 다음 단계를 완료하기 전에, SQL VM에서 Azure Key Vault 통합을 활성화할 때 필요한 다음 정보를 등록 과정에서 수집해야 합니다.

  • 애플리케이션이 추가된 후 등록된 앱 블레이드에서 애플리케이션 ID(AAD ClientID 또는 AppID라고도 함)를 찾습니다. 애플리케이션 ID는 나중에 Azure Key Vault 통합을 활성화하기 위해 PowerShell 스크립트의 $spName (서비스 주체 이름) 매개 변수에 할당됩니다.

    애플리케이션 ID

  • 이 단계에서 키를 만드는 동안 다음 스크린샷에 보이는 것처럼 키 암호를 복사합니다. 이 키 암호는 나중에 PowerShell 스크립트의 $spSecret (서비스 주체 암호) 매개 변수에 할당됩니다.

    AAD 암호

  • 애플리케이션 ID 및 암호는 또한 SQL Server에서 자격 증명을 만드는 데 사용됩니다.

  • 이 새 애플리케이션 ID(또는 클라이언트 ID)에 get, wrapKey, unwrapKey 액세스 권한을 부여해야 합니다. 이 작업은 Set-AzKeyVaultAccessPolicy cmdlet을 통해 수행됩니다. 자세한 내용은 Azure Key Vault 개요를 참조하세요.

Key Vault 만들기

Azure Key Vault를 사용하여 암호화에 사용할 키를 VM에 저장하려면 키 자격 증명 모음에 액세스해야 합니다. 아직 Key Vault를 설정하지 않았으면 Azure Key Vault 시작 문서의 단계에 따라 새로 만듭니다. 다음 단계를 완료하기 전에, SQL VM에서 Azure Key Vault 통합을 활성화할 때 필요한 몇 가지 정보를 이 설정 과정에서 수집해야 합니다.

New-AzKeyVault -VaultName 'ContosoKeyVault' -ResourceGroupName 'ContosoResourceGroup' -Location 'East Asia'

주요 자격 증명 모음 만들기 단계에 이르면 반환된 vaultUri 속성을 잘 살펴보세요. 이 속성은 주요 자격 증명 모음 URL입니다. 아래와 같이 해당 단계에 제공된 예에서 주요 자격 증명 모음 이름이 ContosoKeyVault이므로 주요 자격 증명 모음 URL은 https://contosokeyvault.vault.azure.net/입니다.

주요 자격 증명 모음 URL은 나중에 Azure Key Vault 통합을 활성화하기 위해 PowerShell 스크립트의 $akvURL 매개 변수에 할당됩니다.

Key Vault를 만든 후 Key Vault에 키를 추가해야 하며 이 키는 나중에 SQL Server에서 비대칭 키를 만들 때 참조합니다.

참고

EKM(Extensible Key Management) 공급자 버전 1.0.4.0은 SQL IaaS(서비스 제공 인프라) 확장을 통해 SQL Server VM에 설치됩니다. SQL IaaS 확장을 업그레이드해도 공급자 버전이 업데이트되지는 않습니다. SQL Managed Instance로 마이그레이션하는 등 필요한 경우에는 EKM 공급자 버전을 수동으로 업그레이드하세요.

Key Vault 통합 사용 설정 및 구성

기존 VM에 대해 프로비저닝 또는 구성하는 동안 Key Vault 통합을 사용하도록 설정할 수 있습니다.

새 VM

Resource Manager와 함께 새 SQL 가상 머신을 프로비저닝하는 경우 Azure Portal은 Azure Key Vault 통합을 구현하는 방법을 제공합니다. Azure Key Vault 기능은 SQL Server Enterprise, Developer 및 평가판 버전에만 사용할 수 있습니다.

SQL Azure Key Vault 통합

프로비저닝의 자세한 연습은 Azure Portal에서 SQL Server 가상 머신 프로비저닝을 참조하세요.

기존 VM

참고

The following screenshots are from the SQL virtual machines resource within the Azure portal. For end-of-support (EOS) SQL server VMs, and SQL Server VMs that have not been registered with the SQL IaaS extension, use the SQL Server configuration tab to manage your SQL Server VM instead.

기존 SQL 가상 머신의 경우 SQL 가상 머신 리소스를 열고 설정 에서 보안 을 선택합니다. 사용 을 선택하여 Azure Key Vault 통합을 사용하도록 설정합니다.

기존 VM에 대한 SQL Key Vault 통합

완료되면 보안 페이지 아래쪽의 적용 버튼을 선택하여 변경 내용을 저장합니다.

참고

여기서 만든 자격 증명 이름은 나중에 SQL 로그인에 매핑됩니다. 이렇게 하면 SQL 로그인이 키 자격 증명 모음에 액세스할 수 있습다.

참고

또한 템플릿을 사용하여 Key Vault를 구성할 수 있습니다. 자세한 내용은 Azure Key Vault 통합을 위한 Azure 빠른 시작 템플릿을 참조하세요.

다음 단계

Azure Key Vault 통합을 설정한 후에는 SQL VM에서 SQL Server 암호화를 설정할 수 있습니다. 먼저, 키 자격 증명 모음 내에서 비대칭 키를 만들고 VM의 SQL Server 내에서 대칭 키를 만들어야 합니다. 그러면 T-SQL 문을 실행하여 데이터베이스 및 백업에 대해 암호화를 설정할 수 있습니다.

여러 형태의 암호화를 이용할 수 있습니다.

다음 Transact-SQL 스크립트는 이러한 각 영역에 대한 예를 제공합니다.

예에 대한 필수 조건

각 예제는 두 가지 필수 조건을 기반으로 합니다. 하나는 주요 자격 증명 모음의 비대칭 키인 CONTOSO_KEY 이고, 다른 하나는 AKV 통합 기능을 통해 생성되는 자격 증명인 Azure_EKM_cred 입니다. 다음 Transact-SQL 명령은 예를 실행하기 위한 필수 구성 요소를 설치합니다.

USE master;
GO

--create credential
--The <<SECRET>> here requires the <Application ID> (without hyphens) and <Secret> to be passed together without a space between them.
CREATE CREDENTIAL Azure_EKM_cred
    WITH IDENTITY = 'keytestvault', --keyvault
    SECRET = '<<SECRET>>'
FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;


--Map the credential to a SQL login that has sysadmin permissions. This allows the SQL login to access the key vault when creating the asymmetric key in the next step.
ALTER LOGIN [SQL_Login]
ADD CREDENTIAL Azure_EKM_cred;


CREATE ASYMMETRIC KEY CONTOSO_KEY
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = 'KeyName_in_KeyVault',  --The key name here requires the key we created in the key vault
CREATION_DISPOSITION = OPEN_EXISTING;

TDE(투명한 데이터 암호화)

  1. TDE용 데이터베이스 엔진에서 사용할 SQL Server 로그인을 만든 후 자격 증명을 추가합니다.

    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 EKM_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 EKM_Login
    ADD CREDENTIAL Azure_EKM_cred;
    GO
    
  2. TDE에 사용할 데이터베이스 암호화 키를 만듭니다.

    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
    

암호화된 백업

  1. 백업 암호화용 데이터베이스 엔진에서 사용할 SQL Server 로그인을 만든 후 자격 증명을 추가합니다.

    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 EKM_Login
    FROM ASYMMETRIC KEY CONTOSO_KEY;
    GO
    
    -- Alter the Encrypted Backup Login to add the credential for use by
    -- the Database Engine to access the key vault
    ALTER LOGIN EKM_Login
    ADD CREDENTIAL Azure_EKM_cred ;
    GO
    
  2. Key Vault에 저장된 비대칭 키를 사용하여 암호화를 지정하는 데이터베이스를 백업합니다.

    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
    

CLE(열 수준 암호화)

이 스크립트는 키 자격 증명 모음의 비대칭 키를 통해 보호되는 대칭 키를 만든 후 그 대칭 키를 사용하여 데이터베이스의 데이터를 암호화합니다.

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;

추가 리소스

이러한 암호화 기능을 사용하는 방법에 대한 자세한 내용은 SQL Server 암호화 기능과 함께 EKM 사용을 참조하세요.

이 문서의 단계는 Azure 가상 머신에서 이미 SQL Server가 실행되고 있는 것으로 가정합니다. 아직 실행하고 있지 않다면 Azure에서 SQL Server 가상 머신 프로비전을 참조하세요. Azure VM에서 SQL Server 실행과 관련된 기타 참고 자료는 Azure Virtual Machines의 SQL Server 개요를 참조하세요.