다음을 통해 공유


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를 연결하는 기능.

고급 연결 아키텍처

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에서 구성하는 방법을 알아봅니다.

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

다음 다이어그램은 가상 클러스터 아키텍처의 개념적 레이아웃을 보여줍니다.

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

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

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

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

네트워크 요구 사항

Azure SQL Managed Instance를 사용하려면 위임된 서브넷의 측면을 특정 방식으로 구성해야 하며, 서비스 지원 서브넷 구성을 사용하여 수행할 수 있습니다. 서비스에 필요한 것 외에도 사용자는 다음과 같은 서브넷 네트워크 구성을 완전히 제어할 수 있습니다.

  • 일부 또는 모든 포트에서 트래픽 허용 또는 차단
  • 가상 네트워크 어플라이언스 또는 게이트웨이를 통해 트래픽을 라우팅하는 경로 테이블에 항목 추가
  • 사용자 지정 DNS 확인 구성 또는
  • 피어링 또는 VPN 설정

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 이름 확인을 참조하세요.

서비스 지원 서브넷 구성

서비스 보안, 관리 효율성 및 가용성을 개선하기 위해 SQL Managed Instance는 Azure 가상 네트워크 인프라에서 서비스 지원 서브넷 구성 및 네트워크 의도 정책을 사용하여 네트워크, 연결된 구성 요소 및 경로 테이블을 구성하여 SQL Managed Instance에 대한 최소 요구 사항을 충족하는지 확인합니다.

자동으로 구성된 네트워크 보안 그룹 및 경로 테이블 규칙은 고객에게 표시되고 접두사 중 하나로 주석이 추가됩니다.

  • Microsoft.Sql-managedInstances_UseOnly_mi- 필수 규칙 및 경로의 경우
  • Microsoft.Sql-managedInstances_UseOnly_mi-optional- 선택적 규칙 및 경로의 경우

자세한 내용은 서비스 지원 서브넷 구성을 검토하세요.

연결 아키텍처 및 관리 트래픽에 대한 자세한 내용은 고급 연결 아키텍처를 참조하세요.

네트워킹 제약 조건

  • 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 서비스용 DNS 레코드: 다음 도메인 이름은 예약되어 있으며 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에서 재정의되어서는 안 됩니다. Azure DNS 프라이빗 영역 또는 사용자 지정 DNS 서버를 통해 하나 이상의 도메인 이름이 재정의되는 가상 네트워크에 SQL Managed Instance를 배포하지 못합니다. 관리되는 인스턴스를 사용할 수 없는 관리되는 인스턴스 렌더링이 포함된 가상 네트워크에서 이 도메인 확인을 재정의합니다. 관리되는 인스턴스를 포함하는 가상 네트워크 내에서 Private Link DNS 레코드를 구성하는 방법에 대한 자세한 내용은 Azure 프라이빗 엔드포인트 DNS 구성을 참조하세요.