Azure SQL Managed Instance의 연결 아키텍처

적용 대상: Azure SQL Managed Instance

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

SQL Managed Instance는 Azure Virtual Network 및 관리되는 인스턴스 전용 서브넷 내부에 있습니다. 이 배포는 다음을 제공합니다.

  • 보안 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 대한 연결 아키텍처에 다음과 같은 변경 사항을 도입했습니다.

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

통신 개요

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

Azure SQL Managed Instance 대한 연결 아키텍처의 엔터티를 보여 주는 다이어그램

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

데이터 평면은 호환성, 연결 및 네트워크 격리를 위해 고객의 서브넷 내에 배포되며 일반적으로 VNet 로컬 엔드포인트를 통해 액세스됩니다. 데이터 평면은 인증을 위해 Azure Storage, Azure Active Directory(Azure AD) 및 원격 분석 수집 서비스와 같은 Azure 서비스에 따라 달라집니다. 고객은 SQL Managed Instance 포함하는 서브넷에서 발생하는 해당 서비스에 대한 트래픽을 관찰합니다.

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

고급 연결 아키텍처

높은 수준에서 SQL Managed Instance 가상 클러스터에 조인된 격리된 전용 가상 머신 집합에 호스트되는 서비스 구성 요소 집합입니다. 일부 서비스 구성 요소는 고객의 가상 네트워크 서브넷 내에 배포되고 다른 서비스 구성 요소는 Microsoft에서 관리하는 보안 네트워크 환경에서 작동합니다.

가상 클러스터는 여러 개의 관리되는 인스턴스를 호스트할 수 있습니다. 클러스터는 새 인스턴스 또는 제거된 인스턴스를 수용하기 위해 필요에 따라 자동으로 확장 또는 계약을 맺습니다.

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

Azure SQL Managed Instance 대한 연결 아키텍처를 보여 주는 다이어그램

고객 애플리케이션과의 연결을 용이하게 하기 위해 SQL Managed Instance VNet 로컬 엔드포인트와 퍼블릭 엔드포인트의 두 가지 유형의 엔드포인트를 제공합니다.

VNet 로컬 엔드포인트

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

공용 엔드포인트

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

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

SQL Managed Instance의 연결 아키텍처에 대해 좀 더 자세히 살펴보겠습니다. 다음 다이어그램은 가상 클러스터의 개념적 레이아웃을 보여 줍니다.

Azure SQL Managed Instance 가상 클러스터의 연결 아키텍처를 보여 주는 다이어그램

클라이언트는 <mi_name>.<dns_zone>.database.windows.net 형식을 갖는 호스트 이름을 사용하여 SQL Managed Instance에 연결합니다. 이 호스트 이름은 퍼블릭 DNS(Domain Name System) 영역에 등록되고 공개적으로 확인할 수 있지만, 개인 IP 주소로 확인됩니다. zone-id는 클러스터를 만들 때 자동으로 생성됩니다. 새로 만든 클러스터는 보조 관리되는 인스턴스를 호스트하는 경우 영역 ID를 주 클러스터와 공유합니다. 자세한 내용은 자동 장애 조치(failover) 그룹을 통해 여러 데이터베이스의 투명하고 조정된 장애 조치(failover) 사용을 참조하세요.

이 개인 IP 주소는 SQL Managed Instance의 내부 부하 분산 장치에 속합니다. 부하 분산 장치는 트래픽을 SQL Managed Instance 게이트웨이로 보냅니다. 여러 관리되는 인스턴스가 같은 클러스터 내에서 실행될 수 있으므로 게이트웨이는 SQL Managed Instance 호스트 이름을 사용하여 트래픽을 올바른 SQL 엔진 서비스로 리디렉션합니다.

서비스 지원 서브넷 구성

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

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

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

중요

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

네트워크 요구 사항

SQL Managed Instance 배포되는 서브넷은 다음 특성을 충족해야 합니다.

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

서비스 지원 서브넷 구성을 사용하는 필수 보안 규칙

이러한 규칙은 인바운드 관리 트래픽 흐름을 보장하는 데 필요합니다. 네트워크 의도 정책에 의해 적용되며 고객이 배포할 필요가 없습니다. 연결 아키텍처 및 관리 트래픽에 대한 자세한 내용은 이전 상위 수준 연결 아키텍처 섹션을 참조하세요.

Name 포트 프로토콜 원본 대상 작업
internal-in 모두 모두 서브넷 서브넷 허용

이러한 규칙은 아웃바운드 관리 트래픽 흐름을 보장하는 데 필요합니다. 연결 아키텍처 및 관리 트래픽에 대한 자세한 내용은 위의 단락 을 참조하세요.

Name 포트 프로토콜 원본 대상 작업
AAD-out 443 TCP 서브넷 AzureActiveDirectory Allow
OneDsCollector-out 443 TCP 서브넷 OneDsCollector 허용
internal-out 모두 모두 서브넷 서브넷 허용
StorageP-out 443 모두 서브넷 보관소. primaryRegion 허용
StorageS-out 443 모두 서브넷 보관소. secondaryRegion 허용

서비스 지원 서브넷 구성을 사용하는 필수 경로

관리 트래픽이 대상으로 직접 라우팅되도록 하려면 이러한 경로가 필요합니다. 네트워크 의도 정책에 의해 적용되며 고객이 배포할 필요가 없습니다. 연결 아키텍처 및 관리 트래픽에 대한 자세한 내용은 이전 상위 수준 연결 아키텍처 섹션을 참조하세요.

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

참고

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

또한 경로 테이블에 항목을 추가하여 가상 네트워크 게이트웨이 또는 NVA(가상 네트워크 어플라이언스)를 통해 온-프레미스 프라이빗 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 버전을 사용하는 경우 please ensure that TLS 1.2 관련 업데이트가 적용되었는지 확인하세요.

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

  • Microsoft 피어링: ExpressRoute 회로에서 Microsoft 피어링을 사용하도록 설정하면 SQL Managed Instance 가상 네트워크 내에서 SQL Managed Instance 구성 요소와 종속된 서비스 간의 트래픽 흐름에 영향을 미치는 가상 네트워크와 직접 또는 전이적으로 피어링되어 가용성 문제가 발생합니다. Microsoft 피어링이 이미 사용하도록 설정된 가상 네트워크에 대한 SQL Managed Instance 배포는 실패할 것으로 예상됩니다.
  • 글로벌 가상 네트워크 피어링: Azure 지역 간 가상 네트워크 피어링 연결은 2020년 9월 22일 이전에 만든 서브넷에 배치된 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 서비스는 가상 네트워크 NAT와 인바운드 및 아웃바운드 흐름을 동시 사용을 지원하지 않는 기본 부하 분산 장치를 사용하도록 제한되어 있습니다.
  • Azure Virtual Network의 IPv6: SQL Managed Instance를 이중 스택 IPv4/IPv6 가상 네트워크에 배포하는 작업은 실패할 것으로 예상됩니다. IPv6 주소 접두사가 포함된 NSG(네트워크 보안 그룹) 또는 UDR(라우팅 테이블)을 SQL Managed Instance 서브넷에 연결하거나 이미 Managed Instance 서브넷과 연결된 NSG 또는 UDR에 IPv6 주소 접두사를 추가하면 SQL Managed Instance를 사용할 수 없게 됩니다. 이미 IPv6 접두사가 있는 NSG와 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.net, vault.azure.net. Microsoft 서비스용으로 예약된 이름을 갖는 연결된 Azure DNS 프라이빗 영역을 포함하는 가상 네트워크로는 SQL Managed Instance를 배포할 수 없습니다. Azure DNS 프라이빗 영역을 예약된 이름과 인스턴스가 포함된 가상 네트워크에 연결하면 SQL Managed Instance 사용할 수 없게 될 것입니다. 적절한 Private Link 구성을 위해서는 Azure 프라이빗 엔드포인트 DNS 구성을 따르세요.

다음 단계