호스트 보호 서비스 증명 플랜
적용 대상: SQL Server 2019(15.x) 이상 - Windows만 해당
증명은 클라이언트 응용 프로그램이 보안 Enclave를 사용한 Always Encrypted를 사용할 때 SQL Server 프로세스 내에서 신뢰할 수 있는 Enclave와 통신하는지 확인할 수 있는 워크플로입니다.
SQL Server에서 보안 Enclave를 사용한 Always Encrypted는 Windows 하이퍼바이저를 사용하며 특별한 하드웨어를 요구하지 않는 소프트웨어 기반 기술인 VBS(가상화 기반 보안) Enclave(가상화 기반 보안 보안 모드 또는 VSM Enclave라고도 함)를 사용합니다. VBS Enclave 증명에는 Enclave 내의 코드가 유효하고 SQL Server를 호스트하는 컴퓨터가 신뢰할 수 있는지 모두 확인하는 작업이 포함됩니다. 증명은 SQL Server 컴퓨터의 ID(및 필요에 따라 구성)의 유효성을 검사할 수 있는 제3자를 도입하여 이 목표를 달성합니다. SQL Server는 Enclave를 사용하여 쿼리를 실행하려면 먼저 증명 서비스에 운영 환경에 대한 정보를 제공하여 상태 인증서를 얻어야 합니다. 그러면 이 상태 인증서가 클라이언트로 전송되어 증명 서비스를 사용한 인증을 독립적으로 확인할 수 있습니다. 상태 인증서를 신뢰하는 클라이언트는 신뢰할 수 있는 VBS enclave와 통신하고 있는 것으로 판단하고 해당 enclave를 사용하는 쿼리를 실행하게 됩니다.
증명은 악의적인 OS 관리자의 일부 공격(예: Enclave 내에서 실행되는 SQL Server 라이브러리 변조와 관련된 공격)을 감지하는 데 중요합니다. 이러한 공격에 대해 신경 쓰지 않는 경우(예: 비프로덕션 환경에서 보안 Enclave를 사용한 Always Encrypted 사용) 증명 없이 SQL Server에서 보안 Enclave를 사용한 Always Encrypted 계획을 참조하세요.
Windows Server 2019 또는 이후 버전의 HGS(호스트 보호자 서비스) 역할은 VBS enclave를 사용하여 Always Encrypted에 대한 원격 증명 기능을 제공합니다. 이 문서에서는 VBS enclave 및 HGS 증명과 함께 Always Encrypted를 사용하기 위한 배포 전 결정 및 요구 사항을 안내합니다.
참고 항목
SQL Server가 VM에 배포되면 VBS Enclave는 VM 내의 공격으로부터 데이터를 보호하는 데 도움이 됩니다. 단, VBS Enclave는 호스트에서 시작된 권한 있는 시스템 계정을 사용하여 공격으로부터 어떠한 보호도 제공하지 않습니다. 예를 들어 호스트 컴퓨터에서 생성된 VM의 메모리 덤프에는 Enclave의 메모리가 포함될 수 있습니다.
아키텍처 개요
HGS(호스트 보호자 서비스)는 Windows Server 2019 또는 이후 버전에서 실행되는 클러스터된 웹 서비스입니다. 일반적인 배포에는 1-3개의 HGS 서버, SQL Server를 실행하는 하나 이상의 컴퓨터 및 클라이언트 응용 프로그램 또는 도구(예: SQL Server Management Studio)를 실행하는 컴퓨터가 있습니다. HGS는 SQL Server를 실행하는 컴퓨터를 신뢰할 수 있는지 확인하는 일을 담당하므로 보호하고 있는 SQL Server 인스턴스로부터 물리적 격리와 논리적 격리가 모두 필요합니다. 동일한 관리자가 HGS 및 SQL Server 컴퓨터에 액세스할 수 있는 경우 악의적인 컴퓨터가 SQL Server를 실행할 수 있도록 증명 서비스를 구성하여 VBS Enclave를 손상시킬 수 있습니다.
HGS 도메인
HGS 설치 프로그램은 HGS 서버, 장애 조치(failover) 클러스터 리소스 및 관리자 계정에 대한 새 Active Directory 도메인을 자동으로 만듭니다.
SQL Server를 실행하는 컴퓨터는 도메인에 있을 필요는 없지만 도메인에 있는 경우 HGS 서버에서 사용하는 도메인과 다른 도메인이어야 합니다.
고가용성
HGS 기능은 자동으로 장애 조치(failover) 클러스터를 설치하고 구성합니다. 프로덕션 환경에서는 고가용성을 위해 세 개의 HGS 서버를 사용하는 것이 좋습니다. 클러스터 쿼럼을 결정하는 방법과 외부 감시를 사용하는 두 노드 클러스터를 비롯한 대체 구성에 대한 자세한 내용은 장애 조치(failover) 클러스터 설명서를 참조하세요.
HGS 노드 사이에는 공유 스토리지가 필요하지 않습니다. 증명 데이터베이스의 복사본은 각 HGS 서버에 저장되며 클러스터 서비스가 이를 네트워크를 통해 자동으로 복제합니다.
네트워크 연결
SQL 클라이언트와 SQL Server 모두 HTTP를 통해 HGS와 통신할 수 있어야 합니다. TLS 인증서를 사용하여 SQL 클라이언트와 HGS 간에, 그리고 SQL Server와 HGS 간에 이루어지는 모든 통신을 암호화하도록 HGS를 구성합니다. 이 구성은 중간자 공격으로부터 보호하고 올바른 HGS 서버와 통신하도록 합니다.
HGS 서버는 증명 서비스 데이터베이스가 동기화 상태를 유지하도록 클러스터의 각 노드 간에 연결이 필요합니다. 장애 조치 클러스터 모범 사례는 클러스터 통신을 위해 네트워크 하나의 HGS 노드를 연결하고 다른 클라이언트가 HGS와 통신할 수 있도록 별도의 네트워크를 사용하는 것입니다.
증명 모드
SQL Server를 실행하는 컴퓨터가 HGS를 사용하여 증명하려고 하면 먼저 HGS에 이를 어떻게 증명해야 하는지 묻습니다. HGS는 SQL Server를 사용한 두 가지 증명 모드를 지원합니다.
증명 모드 | 설명 |
---|---|
TPM | TPM(신뢰할 수 있는 플랫폼 모듈) 증명은 HGS를 사용하여 증명하는 컴퓨터의 ID 및 무결성에 대한 가장 강력한 보증을 제공합니다. SQL Server를 실행하는 컴퓨터에 TPM 버전 2.0이 설치되어 있어야 합니다. 각 TPM 칩에는 특정 컴퓨터를 식별하는 데 사용할 수 있는 고유하고 변경할 수 없는 ID(인증 키)가 포함되어 있습니다. 또한 TPM은 컴퓨터의 부팅 프로세스를 측정하여 읽을 수 있지만 운영 체제에서 수정할 수는 없는 PCR(플랫폼 제어 레지스터)에 보안에 중요한 측정값의 해시를 저장합니다. 이러한 측정값은 증명 과정에서 컴퓨터가 선언하는 보안 구성에 대한 암호화 증명을 제공합니다. |
호스트 키 | 호스트 키 증명은 비대칭 키 쌍을 사용하여 컴퓨터의 ID만 확인하는 더 간단한 형태의 증명입니다. 프라이빗 키는 SQL Server를 실행하는 컴퓨터에 저장되고 공개 키는 HGS에 제공됩니다. 컴퓨터의 보안 구성이 측정되지 않고 SQL Server를 실행하는 컴퓨터에 TPM 2.0 칩이 필요하지 않습니다. SQL Server 컴퓨터에 설치된 프라이빗 키를 보호하는 것이 중요합니다. 이 키를 획득하는 모든 사용자는 합법적인 SQL Server 컴퓨터와 SQL Server 내에서 실행되는 VBS enclave를 가장할 수 있습니다. |
일반적으로 다음을 수행하는 것이 좋습니다.
- 물리적 프로덕션 서버의 경우 제공하는 추가 보증에 TPM 증명을 사용하는 것이 좋습니다.
- 가상 프로덕션 서버의 경우 대부분의 가상 머신에는 가상 TPM 또는 보안 부팅이 없으므로 호스트 키 증명을 권장합니다. 온-프레미스 보호된 VM 같이 보안이 강화된 VM을 사용하는 경우 TPM 모드를 사용하도록 선택할 수 있습니다. 모든 가상화된 배포에서 증명 프로세스는 VM 아래의 가상화 플랫폼이 아닌 VM 환경만 분석합니다.
- 개발/테스트 시나리오의 경우 버전을 더 쉽게 업그레이드할 수 있으므로 호스트 키 증명을 권장합니다.
신뢰 모델
VBS Enclave 신뢰 모델에서 암호화된 쿼리 및 데이터를 호스트 OS로부터 보호하기 위해 소프트웨어 기반 Enclave에서 평가합니다. 이 Enclave에 대한 액세스는 동일한 컴퓨터에서 실행되는 두 가상 머신이 서로의 메모리에 액세스할 수 없는 것과 동일한 방식으로 하이퍼바이저에 의해 보호됩니다.
클라이언트가 VBS의 합법적인 인스턴스와 통신하는 것을 신뢰하려면 SQL Server 컴퓨터에서 하드웨어 신뢰할 수 있는 루트를 설정하는 TPM 기반 증명을 사용해야 합니다.
부팅 프로세스 중에 캡처된 TPM 측정에는 VBS 인스턴스의 고유 ID 키가 포함되므로 해당 정확한 컴퓨터에서만 상태 인증서가 유효한지 확인합니다. 또한 VBS를 실행하는 컴퓨터에서 TPM을 사용할 수 있는 경우 VBS ID 키의 비공개 부분은 TPM에 의해 보호되므로 누구도 해당 VBS 인스턴스를 가장하지 못하게 됩니다.
UEFI가 합법적인 Microsoft 서명 부팅 로더를 로드하고 루트킷이 하이퍼바이저 부팅 프로세스를 가로채지 않도록 TPM 증명에 보안 부팅이 필요합니다. 또한 직접 메모리 액세스를 사용하는 하드웨어 장치에서 enclave 메모리를 검사하거나 수정할 수 없도록 하려면 기본적으로 IOMMU 장치가 필요합니다.
이러한 보호는 모두 SQL Server를 실행하는 컴퓨터가 물리적 컴퓨터라고 가정합니다. SQL Server를 실행하는 컴퓨터를 가상화하는 경우 더 이상 하이퍼바이저 또는 하이퍼바이저 관리자가 VM의 메모리를 검사하지 못하도록 보장할 수 없으며. 예를 들어 하이퍼바이저 관리자는 VM의 메모리를 덤프하고 Enclave에 있는 쿼리 및 데이터의 일반 텍스트 버전에 액세스할 수 있습니다. 마찬가지로 VM에 가상 TPM이 있더라도 VM 운영 체제 및 부팅 환경의 상태와 무결성만 측정할 수 있습니다. VM을 제어하는 하이퍼바이저의 상태는 측정할 수 없습니다.
그러나 SQL Server가 가상화된 경우에도 Enclave는 VM 운영 체제 내에서 시작된 공격으로부터 여전히 보호됩니다. 하이퍼바이저 또는 클라우드 공급자를 신뢰하고 중요한 데이터에 대한 데이터베이스 관리자 및 OS 관리자 공격을 주로 우려하는 경우 가상화된 SQL Server가 요구 사항을 충족할 수 있습니다.
마찬가지로, 보안이 가장 중요하지 않은 개발/테스트 시나리오 또는 SQL Server를 실행하는 컴퓨터에 TPM 2.0 모듈이 설치되지 않은 상황에서 호스트 키 증명은 여전히 유용합니다. 보안 부팅 및 TPM 1.2 모듈을 포함하여 언급된 많은 보안 기능을 사용하여 여전히 VBS 및 운영 체제 전체를 더 잘 보호할 수 있습니다. 그러나 HGS가 컴퓨터에 호스트 키 증명을 사용하여 이러한 설정을 실제로 사용하도록 설정했는지 확인할 수 있는 방법이 없으므로 클라이언트는 호스트가 실제로 사용 가능한 모든 보호를 사용하고 있다고 확신할 수 없습니다.
필수 조건
HGS 서버 필수 구성 요소
호스트 보호 서비스 역할을 실행하는 컴퓨터는 다음 요구 사항을 충족해야 합니다.
구성 요소 | 요구 사항 |
---|---|
운영 체제 | Windows Server 2019 또는 이후 버전, Standard 또는 Datacenter Edition |
CPU | 코어 2개(분), 코어 4개(권장) |
RAM | 8GB(분) |
NIC | 고정 IP를 사용하는 2개의 NIC 권장(클러스터 트래픽용 1개, HGS 서비스용 1개) |
HGS는 암호화 및 암호 해독이 필요한 작업의 수 때문에 CPU 바인딩된 역할입니다. 암호화 가속 기능을 제공하는 최신 프로세서를 사용하면 HGS 성능이 향상됩니다. 증명 데이터에 대한 스토리지 요구 사항은 고유 컴퓨터 증명당 10KB~1MB 범위에서 최소화됩니다.
시작하기 전에 HGS 컴퓨터를 도메인에 가입시키지 마세요.
SQL Server 컴퓨터 필수 구성 요소
SQL Server를 실행하는 컴퓨터는 SQL Server 설치 요구 사항과 Hyper-V 하드웨어 요구 사항을 모두 충족해야 합니다.
요구 사항은 다음과 같습니다.
- SQL Server 2019(15.x) 이상
- Windows 10 버전 1809 이상 - Enterprise Edition, Windows 11 이상 - Enterprise Edition, Windows 서버 2019 이상 - 데이터 센터 버전. 기타 버전의 Windows 10/11 및 Windows 서버는 HGS를 사용하는 증명을 지원하지 않습니다.
- 가상화 기술에 대한 CPU 지원:
- Extended Page Tables이 가능한 Intel VT-x.
- AMD-V의 신속한 가상화 인덱싱
- VM에서 SQL Server를 실행하는 경우:
- Azure의 경우 2세대 VM 크기(권장 사항) 또는 중첩 가상화가 적용된 1세대 VM 크기를 사용합니다. 어떤 1세대 VM 크기가 중첩 가상화를 지원하는지 확인하려면 개별 VM 크기 문서를 참조하세요.
- Hyper-V 2016 이상(Azure 외부)에서는 VM이 2세대 VM(권장)인지 확인하세요. 적어도 중첩 가상화가 적용된 1세대 VM이어야 합니다. 자세한 내용은 Hyper-V에 1 또는 2세대 가상 머신을 만들어야 하나요? 및 중첩 가상화 구성을 참조하세요.
- VMware 설명서에 설명된 대로 VMWare vSphere 6.7 이상에서 VM에 대한 가상화 기반 보안 지원을 사용합니다.
- 다른 하이퍼바이저 및 퍼블릭 클라우드는 VBS Enclave를 사용한 Always Encrypted를 사용하도록 설정하는 중첩된 가상화 기능도 지원할 수 있습니다. 호환성 및 구성 지침은 가상화 솔루션의 설명서를 확인하세요.
- TPM 증명을 사용하려는 경우 서버에서 사용할 TPM 2.0 rev 1.16 칩이 필요합니다. 현재 HGS 증명은 TPM 2.0 rev 1.38 칩에서 작동하지 않습니다. 또한 TPM에 유효한 인증 키 인증서가 있어야 합니다.
HGS로 증명 구성 시 역할 및 책임
HGS를 사용하여 증명을 설정하려면 HGS, SQL Server 컴퓨터, SQL Server 인스턴스 및 Enclave 증명을 트리거하는 응용 프로그램과 같은 다양한 유형의 구성 요소를 구성해야 합니다. 각 형식의 구성 요소는 다음과 같은 고유한 역할 중 하나를 수행하는 사용자가 구성합니다.
- HGS 관리자 - HGS를 배포하고, HGS에 SQL Server 컴퓨터를 등록하고, HGS 증명 URL을 SQL Server 컴퓨터 관리자 및 클라이언트 애플리케이션 관리자와 공유합니다.
- SQL Server 컴퓨터 관리자 - 증명 클라이언트 구성 요소를 설치하고, SQL Server 컴퓨터에서 VBS를 사용하도록 설정하며, HGS 관리자에게 HGS에 SQL Server 컴퓨터를 등록하는 데 필요한 정보를 제공하고, SQL Server 컴퓨터에서 증명 URL을 구성하며, SQL Server 컴퓨터가 HGS를 사용하여 성공적으로 증명할 수 있도록 확인합니다.
- DBA - SQL Server 인스턴스에서 보안 Enclave를 구성합니다.
- 애플리케이션 관리자 - HGS 관리자로부터 가져온 증명 URL을 사용하여 애플리케이션을 구성합니다.
프로덕션 환경(실제 중요한 데이터 처리)에서 조직은 증명을 구성할 때 각 고유한 역할을 서로 다른 사용자가 수행하는 역할 분리를 준수해야 합니다. 특히 SQL Server 컴퓨터 관리자와 DBA가 중요한 데이터에 액세스할 수 없도록 함으로써 공격 노출 영역을 줄이기 위해 조직에 Always Encrypted를 배포하는 경우에는 SQL Server 관리자와 DBA가 HGS 서버를 제어하지 않아야 합니다.
개발 또는 테스트 환경 고려 사항
개발 또는 테스트 환경에서 VBS Enclave를 사용한 Always Encrypted를 사용하고 있으며 SQL Server를 실행하는 컴퓨터의 고가용성 또는 강력한 보호가 필요하지 않은 경우 간소화된 배포를 위해 다음을 일부 또는 모두 양보할 수 있습니다.
- 증명 없이 보안 Enclave를 사용한 Always Encrypted 사용 - 증명 없이 SQL Server에서 보안 Enclave를 사용한 Always Encrypted 계획을 참조하세요.
- 대안:
- HGS의 노드를 하나만 배포합니다. HGS가 장애 조치 클러스터를 설치하는 경우에도 고가용성이 중요하지 않은 경우에는 노드를 더 추가할 필요가 없습니다.
- 더 간단한 설정 환경을 위해 TPM 모드 대신 호스트 키 모드를 사용합니다.
- HGS 및/또는 SQL Server를 가상화하여 물리적 리소스를 절약합니다.
- SQL Server와 동일한 컴퓨터에서 보안 Enclave를 사용한 Always Encrypted를 구성하기 위해 SSMS 또는 기타 도구를 실행합니다. 이렇게 하면 열 마스터 키가 SQL Server와 동일한 컴퓨터에 있게 되므로 프로덕션 환경에서는 이 작업을 수행하지 마세요.