Azure SQL Managed Instance의 연결 아키텍처

적용 대상:Azure SQL Managed Instance

이 문서에서는 Azure SQL Managed Instance의 연결 아키텍처와 구성 요소가 관리형 인스턴스에 대한 통신 트래픽을 전달하는 방법을 설명합니다.

개요

SQL Managed Instance에서 인스턴스는 Azure 가상 네트워크 내부와 관리형 인스턴스 전용 서브넷 내부에 배치됩니다. 배포는 다음을 제공합니다.

  • 보안 가상 네트워크-로컬(VNet-로컬) IP 주소.
  • 온-프레미스 네트워크를 SQL Managed Instance에 연결하는 기능.
  • 연결된 서버 또는 다른 온-프레미스 데이터 저장소에 SQL Managed Instance를 연결하는 기능.
  • Azure 리소스에 SQL Managed Instance를 연결하는 기능.

참고

2022년 11월 기능 웨이브는 SQL Managed Instance의 기본 연결 구조에 대한 변경 사항을 도입했습니다. 이 문서에서는 현재 아키텍처와 기능 웨이브에 아직 등록되지 않은 인스턴스의 아키텍처에 대한 정보를 제공합니다. 자세한 내용은 2022년 11월 기능 웨이브를 참조하세요.

2022년 11월 기능 웨이브

2022년 11월 기능 웨이브는 SQL Managed Instance 연결 아키텍처에 다음과 같은 변경 사항을 도입했습니다.

  • 관리 엔드포인트를 제거했습니다.
  • 간소화된 필수 네트워크 보안 그룹 규칙(필수 규칙 하나가 제거됨).
  • 포트 443에서 AzureCloud에 대한 아웃바운드를 더 이상 포함하지 않도록 필수 네트워크 보안 그룹 규칙을 수정했습니다.
  • 경로 테이블을 단순화했습니다(필수 경로를 13에서 5로 줄임).

고급 연결 아키텍처

SQL Managed Instance는 유사한 구성 특성으로 그룹화되고 가상 클러스터에 조인되는 격리된 전용 가상 머신의 전용 집합에 호스트되는 서비스 구성 요소로 구성됩니다. 일부 서비스 구성 요소는 고객의 가상 네트워크 서브넷 내에 배포되는 반면, Microsoft가 관리하는 보안 네트워크 환경 내에서 작동하는 서비스도 있습니다.

2022년 11월 이후 Azure SQL Managed Instance에 대한 고급 연결 아키텍처를 보여주는 다이어그램.

고객 애플리케이션은 SQL Managed Instance에 연결하고 가상 네트워크, 피어링된 가상 네트워크, VPN 또는 Azure ExpressRoute로 연결된 네트워크 내의 데이터베이스를 쿼리하고 업데이트할 수 있습니다.

다음 다이어그램은 SQL Managed Instance에 연결하는 엔터티를 보여줍니다. 또한 관리형 인스턴스와 통신해야 하는 리소스도 보여줍니다. 다이어그램 맨 아래의 통신 프로세스는 데이터 원본으로서 SQL Managed Instance에 연결되는 고객 애플리케이션 및 도구를 나타냅니다.

2022년 11월 이후 Azure SQL Managed Instance에 대한 연결 아키텍처의 엔터티를 보여주는 다이어그램.

SQL Managed Instance는 데이터 평면과 컨트롤 플레인의 두 평면에서 작동하는 단일 테넌트 PaaS 제품입니다.

데이터 평면은 호환성, 연결 및 네트워크 격리를 위해 고객의 서브넷 내부에 배포됩니다. 데이터 평면은 인증 및 원격 분석 컬렉션 서비스을 위한 Microsoft Entra ID(이전의 Azure Active Directory), Azure Storage와 같은 Azure 서비스에 따라 달라집니다. 해당 서비스로 이동하는 SQL Managed Instance가 포함된 서브넷에서 발생하는 트래픽이 표시됩니다.

컨트롤 플레인은 자동화된 에이전트를 통해 배포, 관리 및 핵심 서비스 유지 관리 기능을 전달합니다. 이러한 에이전트는 서비스를 운영하는 컴퓨팅 리소스에 대한 독점 액세스 권한을 가집니다. ssh 또는 원격 데스크톱 프로토콜을 사용하여 해당 호스트에 액세스할 수 없습니다. 모든 컨트롤 플레인 통신은 인증서를 사용하여 암호화되고 서명됩니다. 통신 당사자의 신뢰성을 확인하기 위해 SQL Managed Instance는 인증서 해지 목록을 사용하여 해당 인증서를 지속적으로 확인합니다.

통신 개요

애플리케이션은 세 가지 유형의 엔드포인트를 통해 SQL Managed Instance에 연결할 수 있습니다. 이러한 엔드포인트는 다양한 시나리오를 지원하고 고유한 네트워크 속성 및 동작을 보여줍니다.

Azure SQL Managed Instance에 대한 VNet 로컬, 퍼블릭 및 프라이빗 엔드포인트의 표시 범위를 보여주는 다이어그램.

VNet-로컬 엔드포인트

VNet 로컬 엔드포인트는 SQL Managed Instance에 연결하는 기본 수단입니다. VNet 로컬 엔드포인트는 서브넷의 주소 풀에서 IP 주소로 확인되는 <mi_name>.<dns_zone>.database.windows.net 형식의 도메인 이름입니다. 따라서 VNet-local 또는 가상 네트워크에 대한 로컬 엔드포인트입니다. VNet 로컬 엔드포인트는 모든 표준 연결 시나리오에서 SQL Managed Instance에 연결하는 데 사용할 수 있습니다.

VNet 로컬 엔드포인트는 리디렉션 연결 유형을 지원합니다.

VNet 로컬 엔드포인트에 연결할 때 기본 IP 주소가 때때로 변경될 수 있으므로 항상 해당 도메인 이름을 사용합니다.

공용 엔드포인트

퍼블릭 엔드포인트는 <mi_name>.public.<dns_zone>.database.windows.net 형식의 선택적 도메인 이름이며 인터넷에서 연결할 수 있는 공용 IP 주소로 확인됩니다. 퍼블릭 엔드포인트는 포트 3342에서 TDS 트래픽만 SQL Managed Instance에 도달하도록 허용하며 장애 조치(failover) 그룹, Managed Instance 링크 및 유사한 기술과 같은 통합 시나리오에는 사용할 수 없습니다.

퍼블릭 엔드포인트에 연결할 때 기본 IP 주소가 때때로 변경될 수 있으므로 항상 해당 도메인 이름을 사용합니다.

퍼블릭 엔드포인트는 항상 프록시 연결 유형에서 작동합니다.

Azure SQL Managed Instance의 퍼블릭 엔드포인트 구성에서 퍼블릭 엔드포인트를 구성하는 방법을 알아봅니다.

프라이빗 엔드포인트

프라이빗 엔드포인트는 SQL Managed Instance로 트래픽을 전달하는 다른 가상 네트워크의 선택적 고정 IP 주소입니다. 하나의 Azure SQL Managed Instance는 여러 가상 네트워크에 여러 프라이빗 엔드포인트를 보유할 수 있습니다. 프라이이 엔드포인트는 포트 1433에서 TDS 트래픽만 SQL Managed Instance에 도달하도록 허용하며 장애 조치(failover) 그룹, SQL Managed Instance 링크 및 유사한 기술과 같은 통합 시나리오에는 사용할 수 없습니다.

IP 주소를 통해 Azure SQL Managed Instance에 연결하는 기능이 아직 지원되지 않으므로 프라이빗 엔드포인트에 연결할 때는 항상 도메인 이름을 사용합니다.

프라이빗 엔드포인트는 항상 프록시 연결 형식으로 작동합니다.

프라이빗 엔드포인트에 대해 자세히 알아보고 Azure SQL Managed Instance용 Azure Private Link에서 구성하는 방법을 알아봅니다.

가상 클러스터 연결 아키텍처

이 섹션에서는 SQL Managed Instance의 가상 클러스터 연결 아키텍처를 자세히 살펴봅니다. 다음 다이어그램은 가상 클러스터의 개념적 레이아웃을 보여줍니다.

VNet 로컬 엔드포인트의 도메인 이름은 내부 부하 분산 장치의 개인 IP 주소로 확인됩니다. 이 도메인 이름은 공용 DNS(Domain Name System) 영역에 등록되고 공개적으로 확인할 수 있지만, 해당 IP 주소는 서브넷의 주소 범위에 속하며 기본값으로 가상 네트워크 내부에서만 연결할 수 있습니다.

부하 분산 장치는 트래픽을 SQL Managed Instance 게이트웨이로 보냅니다. 여러 관리형 인스턴스가 같은 클러스터 내에서 실행될 수 있으므로 게이트웨이는 연결 문자열에 나온 SQL Managed Instance 호스트 이름을 사용하여 트래픽을 올바른 SQL 엔진 서비스로 리디렉션합니다.

dns-zone의 값은 클러스터를 만들 때 자동으로 생성됩니다. 새로 만든 클러스터는 보조 관리형 인스턴스를 호스트하는 경우 영역 ID를 주 클러스터와 공유합니다.

서비스 지원 서브넷 구성

서비스 보안, 관리 효율성 및 가용성을 개선하기 위해 SQL Managed Instance는 Azure 가상 네트워크 인프라의 일부 요소에 네트워크 의도 정책을 적용합니다. 정책은 SQL Managed Instance에 대한 최소 요구 사항이 충족되도록 서브넷, 연결된 네트워크 보안 그룹 및 경로 테이블을 구성합니다. 이 플랫폼 메커니즘은 네트워킹 요구 사항을 사용자에게 투명하게 전달합니다. 이 정책의 주요 목표는 네트워크 구성 오류를 방지하고 정상적인 SQL Managed Instance 작업 및 서비스 수준 계약 약정을 보장하는 것입니다. 관리형 인스턴스를 삭제하면 네트워크 의도 정책도 제거됩니다.

서비스 지원 서브넷 구성은 가상 네트워크 서브넷 위임 기능 위에 구축되어 자동 네트워크 구성 관리를 제공하고 서비스 엔드포인트를 사용하도록 설정합니다.

서비스 엔드포인트를 사용하여 백업 및 감사 로그를 보관하는 스토리지 계정에서 가상 네트워크 방화벽 규칙을 구성할 수 있습니다. 서비스 엔드포인트를 사용하도록 설정한 경우에도 고객은 Azure Private Link를 사용하여 스토리지 계정에 액세스하는 것이 좋습니다. Private Link는 서비스 엔드포인트보다 더 많은 격리를 제공합니다.

중요

컨트롤 플레인 구성 특성으로 인해 서비스 지원 서브넷 구성은 국가별 클라우드에서 서비스 엔드포인트를 사용하도록 설정하지 않습니다.

네트워크 요구 사항

SQL Managed Instance가 배포되는 서브넷에는 다음과 같은 특성이 있어야 합니다.

  • 전용 서브넷: SQL Managed Instance가 사용하는 서브넷은 SQL Managed Instance 서비스에만 위임할 수 있습니다. 서브넷은 게이트웨이 서브넷이 될 수 없으며 서브넷에 SQL Managed Instance 리소스만 배포할 수 있습니다.
  • 서브넷 위임: SQL Managed Instance 서브넷은 Microsoft.Sql/managedInstances 리소스 공급자에게 위임되어야 합니다.
  • 네트워크 보안 그룹: 네트워크 보안 그룹은 SQL Managed Instance 서브넷과 연결되어야 합니다. SQL Managed Instance가 리디렉션 연결에 대해 구성된 경우 네트워크 보안 그룹을 사용하여 포트 1433 및 포트 11000~11999에서 트래픽을 필터링하여 SQL Managed Instance의 데이터 엔드포인트에 대한 액세스를 제어할 수 있습니다. 이 서비스는 규칙을 자동으로 프로비전하고 관리 트래픽의 중단 없는 흐름을 허용하기 위해 필요에 따라 규칙을 최신 상태로 유지합니다.
  • 경로 테이블: 경로 테이블은 SQL Managed Instance 서브넷과 연결되어야 합니다. 가상 네트워크 게이트웨이를 통해 프레미스로 트래픽을 라우팅하거나 방화벽과 같은 가상 네트워크 어플라이언스 통해 모든 트래픽을 안내하는 기본 0.0.0.0/0 경로를 추가하는 등의 방법으로 이 경로 테이블에 항목을 추가할 수 있습니다. Azure SQL Managed Instance는 경로 테이블에서 필요한 항목을 자동으로 프로비전하고 관리합니다.
  • 충분한 IP 주소: SQL Managed Instance 서브넷에는 최소 32개의 IP 주소가 있어야 합니다. 자세한 내용은 SQL Managed Instance의 서브넷 크기 결정을 참조하세요. SQL Managed Instance의 네트워킹 요구 사항을 충족하도록 구성한 후 기존 네트워크에 관리형 인스턴스를 배포할 수 있습니다. 그러지 않으면 새 네트워크 및 서브넷을 만듭니다.
  • Azure 정책에서 허용: Azure Policy를 사용하여 SQL Managed Instance 서브넷 또는 가상 네트워크를 포함하는 범위에서 리소스 생성 또는 수정을 방지하는 경우 정책은 SQL Managed Instance가 내부 리소스를 관리하는 것을 방지해서는 안 됩니다. 정상적인 작동을 위해 다음 리소스를 정책 거부 효과에서 제외해야 합니다.
    • Microsoft.Network/serviceEndpointPolicies 형식의 리소스(리소스 이름이 \_e41f87a2\_로 시작하는 경우)
    • Microsoft.Network/networkIntentPolicies 형식의 모든 리소스
    • Microsoft.Network/virtualNetworks/subnets/contextualServiceEndpointPolicies 형식의 모든 리소스
  • 가상 네트워크 잠금: 전용 서브넷의 가상 네트워크, 상위 리소스 그룹 또는 구독에 대한 잠금은 경우에 따라 SQL Managed Instance의 관리 및 유지 관리 작업을 방해할 수 있습니다. 리소스 잠금을 사용할 때는 특별히 주의하세요.
  • 복제 트래픽: 두 관리형 인스턴스 간의 장애 조치(failover) 그룹에 대한 복제 트래픽은 허브 네트워크를 통해 라우팅되지 않고 직접 이루어져야 합니다.
  • 사용자 지정 DNS 서버: 가상 네트워크가 사용자 지정 DNS 서버를 사용하도록 구성된 경우 DNS 서버는 공용 DNS 레코드를 확인할 수 있어야 합니다. Microsoft Entra 인증과 같은 기능을 사용하려면 FQDN(정규화된 도메인 이름)을 확인해야 할 수 있습니다. 자세한 내용은 Azure SQL Managed Instance에서 프라이빗 DNS 이름 확인을 참조하세요.

서비스 지원 서브넷 구성이 있는 필수 보안 규칙

인바운드 관리 트래픽 흐름을 보장하려면 다음 표에 설명된 규칙이 필요합니다. 규칙은 네트워크 의도 정책에 의해 적용되며 고객이 배포할 필요가 없습니다. 연결 아키텍처 및 관리 트래픽에 대한 자세한 내용은 고급 연결 아키텍처를 참조하세요.

Name 포트 프로토콜 원본 대상 작업
healthprobe-in 모두 모두 AzureLoadBalancer subnet 허용
internal-in 모두 모두 subnet subnet 허용

아웃바운드 관리 트래픽 흐름을 보장하려면 다음 표에 설명된 규칙이 필요합니다. 연결 아키텍처 및 관리 트래픽에 대한 자세한 내용은 고급 연결 아키텍처를 참조하세요.

Name 포트 프로토콜 원본 대상 작업
AAD-out 443 TCP subnet AzureActiveDirectory Allow
OneDsCollector-out 443 TCP subnet OneDsCollector 허용
internal-out 모두 모두 subnet subnet 허용
StorageP-out 443 모두 subnet Storage.primaryRegion 허용
StorageS-out 443 모두 subnet Storage.secondaryRegion 허용

서비스 지원 서브넷 구성이 있는 필수 경로

다음 표에 설명된 경로는 관리 트래픽이 대상으로 직접 라우팅되도록 하는 데 필요합니다. 경로는 네트워크 의도 정책에 의해 적용되며 고객이 배포할 필요가 없습니다. 연결 아키텍처 및 관리 트래픽에 대한 자세한 내용은 고급 연결 아키텍처를 참조하세요.

이름 주소 접두사 다음 홉
AzureActiveDirectory AzureActiveDirectory 인터넷*
OneDsCollector OneDsCollector 인터넷*
Storage.primaryRegion Storage.primaryRegion 인터넷*
Storage.secondaryRegion Storage.secondaryRegion 인터넷*
subnet-to-vnetlocal subnet 가상 네트워크

참고

*다음 홉 열의 인터넷 값은 가상 네트워크 외부로 트래픽을 라우팅하도록 게이트웨이에 지시합니다. 그러나 대상 주소가 Azure 서비스용인 경우 Azure는 Azure 클라우드 외부가 아닌 Azure 네트워크를 통해 트래픽을 서비스로 직접 라우팅합니다. Azure 서비스 간의 트래픽은 가상 네트워크가 있는 Azure 지역 또는 Azure 서비스 인스턴스가 배포된 Azure 지역과 관계없이 인터넷을 거치지 않습니다. 자세한 내용은 Azure 가상 네트워크 트래픽 라우팅을 참조하세요.

경로 테이블에 항목을 추가하여 가상 네트워크 게이트웨이 또는 가상 네트워크 어플라이언스를 통해 온-프레미스 개인 IP 범위를 대상으로 하는 트래픽을 라우팅할 수도 있습니다.

네트워킹 제약 조건

TLS 1.2는 아웃바운드 연결에 적용됨: 2020년 1월부터 Microsoft는 모든 Azure 서비스의 인트라 서비스 트래픽에 TLS 1.2를 적용합니다. SQL Managed Instance의 경우 이로 인해 복제에 사용되는 아웃바운드 연결과 SQL Server에 대한 연결된 서버 연결에 TLS 1.2가 적용되었습니다. SQL Managed Instance와 함께 2016년 이전 버전의 SQL Server를 사용하는 경우 TLS 1.2 관련 업데이트를 적용해야 합니다.

다음 가상 네트워크 기능은 현재 SQL Managed Instance에서 지원되지 않습니다.

  • 포트 25에서 외부 SMTP 릴레이로 데이터베이스 메일 전달: 포트 25를 통해 외부 이메일 서비스로 데이터베이스 메일을 보내는 작업은 Microsoft Azure의 특정 구독 유형에서만 사용할 수 있습니다. 다른 구독 유형의 인스턴스는 다른 포트(예: 587)를 사용하여 외부 SMTP 릴레이에 연결해야 합니다. 그렇지 않으면 인스턴스가 데이터베이스 메일을 전달하지 못할 수 있습니다. 자세한 내용은 Azure에서 아웃바운드 SMTP 연결 문제 해결을 참조하세요.
  • Microsoft 피어링: SQL Managed Instance가 상주하는 가상 네트워크와 직접 또는 전이적으로 피어링되는 ExpressRoute 회로에서 Microsoft 피어링을 사용하도록 설정하면 가상 네트워크 내부의 SQL Managed Instance 구성 요소와 종속 서비스 간의 트래픽 흐름에 영향을 미칩니다. 가용성 문제가 발생합니다. Microsoft 피어링이 이미 사용하도록 설정된 가상 네트워크에 대한 SQL Managed Instance 배포는 실패할 것으로 예상됩니다.
  • 가상 네트워크 피어링 - 글로벌: Azure 지역 간 가상 네트워크 피어링 연결은 2020년 9월 9일 이전에 생성된 서브넷에 배치된 SQL Managed Instance의 인스턴스에 대해 작동하지 않습니다.
  • 가상 네트워크 피어링 – 구성: SQL Managed Instances를 사용하는 서브넷이 포함된 가상 네트워크 간에 가상 네트워크 피어링을 설정할 때 이러한 서브넷은 서로 다른 경로 테이블 및 NSG(네트워크 보안 그룹)를 사용해야 합니다. 가상 네트워크 피어링에 참여하는 둘 이상의 서브넷에서 경로 테이블과 NSG를 다시 사용하면 해당 경로 테이블 또는 NSG를 사용하는 모든 서브넷에서 연결 문제가 발생하고 SQL Managed Instance의 관리 작업이 실패합니다.
  • AzurePlatformDNS: AzurePlatformDNS 서비스 태그를 사용하여 플랫폼 DNS 확인을 차단하면 SQL Managed Instance를 사용할 수 없게 됩니다. SQL Managed Instance는 엔진 내부의 DNS 확인을 위해 고객 정의 DNS를 지원하지만 플랫폼 작업을 위한 플랫폼 DNS에 대한 종속성이 있습니다.
  • NAT 게이트웨이: Azure Virtual Network NAT를 사용하여 특정 공용 IP 주소와의 아웃바운드 연결을 제어하면 SQL Managed Instance를 사용할 수 없게 됩니다. SQL Managed Instance 서비스는 현재 Azure Virtual Network NAT와 인바운드 및 아웃바운드 흐름의 공존을 제공하지 않는 기본 부하 분산 장치를 사용하도록 제한되어 있습니다.
  • Azure Virtual Network의 IPv6: SQL Managed Instance를 이중 스택 IPv4/IPv6 가상 네트워크에 배포하는 작업은 실패할 것으로 예상됩니다. IPv6 주소 접두사가 포함된 UDR(사용자 정의 경로)과 네트워크 보안 그룹 또는 경로 테이블을 SQL Managed Instance 서브넷에 연결하면 SQL Managed Instance를 사용할 수 없게 됩니다. 또한 관리형 인스턴스 서브넷과 이미 연결된 UDR 또는 네트워크 보안 그룹에 IPv6 주소 접두사를 추가하면 SQL Managed Instance를 사용할 수 없게 됩니다. 이미 IPv6 접두사가 있는 네트워크 보안 그룹 및 UDR이 있는 서브넷에 대한 SQL Managed Instance 배포는 실패할 것으로 예상됩니다.
  • Microsoft 서비스용으로 예약된 이름이 있는 Azure DNS 프라이빗 영역: 다음 도메인 이름은 예약된 이름(windows.net, database.windows.net, core.windows.net, blob.core.windows.net, table.core.windows.net, management.core.windows.net, monitoring.core.windows.net, queue.core.windows.net, graph.windows.net, login.microsoftonline.com, login.windows.net, servicebus.windows.netvault.azure.net)입니다. Microsoft 서비스용으로 예약된 이름을 사용하는 연결된 Azure DNS 프라이빗 영역이 있는 가상 네트워크에 SQL Managed Instance를 배포할 수 없습니다. 예약된 이름을 사용하는 Azure DNS 프라이빗 영역을 관리형 인스턴스가 포함된 가상 네트워크와 연결하면 SQL Managed Instance를 사용할 수 없게 됩니다. Private Link 구성에 대한 자세한 내용은 Azure 프라이빗 엔드포인트 DNS 구성을 참조하세요.

다음 단계