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 통합 기능을 사용하여 시간을 절약할 수 있습니다.

참고 항목

Azure Key Vault 통합은 SQL Server의 Enterprise, Developer 및 Evaluation Edition에서만 사용할 수 있습니다. SQL Server 2019부터 표준 버전도 지원됩니다.

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

참고 항목

템플릿을 사용하여 키 자격 증명 모음 통합을 구성할 수도 있습니다. 자세한 내용은 Azure Key Vault 통합에 대한 Azure 빠른 시작 템플릿을 참조하세요.

AKV 통합 준비

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

  1. Azure PowerShell 설치
  2. Microsoft Entra 테넌트 만들기
  3. 키 자격 증명 모음 만들기

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

참고 항목

이 문서에서는 Azure와 상호 작용하는 데 권장되는 PowerShell 모듈인 Azure Az PowerShell 모듈을 사용합니다. Az PowerShell 모듈을 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.

Azure PowerShell 설치

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

Microsoft Entra ID에 애플리케이션 등록

먼저 구독에 Microsoft Entra 테넌트가 있어야 합니다. 많은 이점 중에서 이를 통해 특정 사용자 및 애플리케이션에 대해 키 자격 증명 모음에 대한 권한을 부여할 수 있습니다.

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

  • 애플리케이션이 추가되면 등록된 앱 창에서 애플리케이션 ID(ClientID 또는 AppID라고도 함)를 찾습니다. Azure Key Vault 통합을 사용하도록 설정하기 위해 나중에 PowerShell 스크립트의 $spName(서비스 사용자 이름) 매개 변수에 애플리케이션 ID가 할당됩니다.

    Application ID

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

    AAD secret

  • 애플리케이션 ID 및 비밀은 SQL Server에서 자격 증명을 만드는 데도 사용됩니다.

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

키 자격 증명 모음 만들기

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

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

키 자격 증명 모음 만들기 단계에 도달하면 키 자격 증명 모음 URL인 반환된 vaultUri 속성을 기록해 둡니다. 나중에 표시되는 해당 단계에 제공된 예제에서 키 자격 증명 모음 이름은 ContosoKeyVault이므로 키 자격 증명 모음 URL은 https://contosokeyvault.vault.azure.net/입니다.

키 자격 증명 모음 URL은 나중에 PowerShell 스크립트의 $akvURL 매개 변수에 할당되어 Azure 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 통합 사용 및 구성

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

새 VM

Resource Manager와 함께 새 SQL 가상 머신을 프로비저닝하는 경우 Azure Portal은 Azure Key Vault 통합을 구현하는 방법을 제공합니다.

SQL Azure Key Vault Integration

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

기존 VM

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

다음 스크린샷은 기존 SQL Server VM에 대해 포털에서 Azure Key Vault를 사용하도록 설정하는 방법을 보여 줍니다(이 SQL Server 인스턴스는 기본값이 아닌 포트 1401을 사용합니다.)

SQL Key Vault integration for existing VMs

완료되면 보안 페이지 하단의 적용 단추를 선택하여 변경 사항을 저장합니다.

참고 항목

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

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. 키 자격 증명 모음에 저장된 비대칭 키를 사용하여 암호화를 지정하는 데이터베이스를 백업합니다.

    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 Windows Virtual Machines 기반 SQL Server 개요를 참조하세요.

다음 단계

자세한 보안 정보는 Azure VM에서의 SQL Server 보안 고려 사항을 참조하세요.