Azure SQL Database 및 Azure Synapse Analytics에 대한 Azure Private Link

적용 대상:Azure SQL DatabaseAzure Synapse Analytics(전용 SQL 풀만 해당)

Private Link를 사용하면 프라이빗 엔드포인트를 통해 Azure의 다양한 PaaS 서비스에 연결할 수 있습니다. Private Link 기능을 지원하는 PaaS 서비스 목록을 보려면 Private Link 설명서 페이지로 이동하세요. 프라이빗 엔드포인트는 특정 VNet 및 서브넷 내의 개인 IP 주소입니다.

중요

이 문서는 Azure SQL Database와 Azure Synapse Analytics의 전용 SQL 풀(이전의 SQL DW) 모두에 적용됩니다. 이 설정은 서버와 연결된 모든 SQL Database 및 전용 SQL 풀(이전의 SQL DW) 데이터베이스에 적용됩니다. 편의상 '데이터베이스'라는 용어는 Azure SQL Database 및 Azure Synapse Analytics의 데이터베이스를 모두 나타냅니다. 마찬가지로 ‘서버’에 대한 모든 참조는 Azure SQL Database 및 Azure Synapse Analytics의 전용 SQL 풀(이전의 SQL DW)을 호스트하는 논리 서버를 나타냅니다. 이 문서는 Azure SQL Managed Instance 또는 Azure Synapse Analytics 작업 영역의 전용 SQL 풀에는 적용되지 않습니다.

만들기 프로세스

프라이빗 엔드포인트는 Azure Portal, PowerShell 또는 Azure CLI를 사용하여 만들 수 있습니다.

승인 프로세스

네트워크 관리자가 PE(프라이빗 엔드포인트)를 만들면 SQL 관리자가 SQL Database에 대한 PEC(프라이빗 엔드포인트 연결)를 관리할 수 있습니다.

  1. Azure Portal에서 서버 리소스로 이동합니다.

  2. 프라이빗 엔드포인트 승인 페이지로 이동합니다.

    • Azure SQL 데이터베이스의 리소스 메뉴에 있는 보안에서 네트워킹을 선택합니다. 프라이빗 액세스 탭을 선택합니다.
    • Synapse 작업 영역의 리소스 메뉴에 있는 보안 아래에서 프라이빗 엔드포인트 연결을 선택합니다.
  3. 페이지에는 다음이 표시됩니다.

    • 모든 프라이빗 엔드포인트 연결(PEC)의 목록
    • 생성된 프라이빗 엔드포인트(PE)

    서버 리소스에 대한 프라이빗 엔드포인트 연결 목록을 찾는 방법을 보여주는 스크린샷

  4. 프라이빗 엔드포인트가 없는 경우 프라이빗 엔드포인트 만들기 버튼을 사용하여 만듭니다. 그렇지 않은 경우 목록에서 개별 PEC를 눌러 선택합니다.

    Azure Portal에서 프라이빗 엔드포인트 연결을 선택하는 방법을 보여주는 스크린샷

  5. SQL 관리자가 PEC를 승인 또는 거부하도록 선택하고 필요에 따라 짧은 텍스트 응답을 추가할 수 있습니다.

    Azure Portal에서 PEC를 승인하는 방법을 보여주는 스크린샷

  6. 승인되거나 거부되면 목록에 응답 텍스트와 함께 적절한 상태가 반영됩니다.

    관리자의 승인 후 승인됨 상태의 PEC를 보여주는 스크린샷

  7. 마지막으로 프라이빗 엔드포인트 이름을 선택합니다.

    엔드포인트 이름과 함께 PEC 세부 정보를 보여주는 스크린샷

    그러면 프라이빗 엔드포인트 개요 페이지로 이동합니다. 네트워크 인터페이스 링크를 선택하여 프라이빗 엔드포인트 연결에 대한 네트워크 인터페이스 세부 정보를 가져옵니다.

    프라이빗 엔드포인트 연결에 대한 NIC 세부 정보를 보여주는 스크린샷

    네트워크 인터페이스 페이지에는 프라이빗 엔드포인트 연결에 대한 개인 IP 주소가 표시됩니다.

    프라이빗 엔드포인트 연결에 대한 개인 IP 주소를 보여주는 스크린샷

Important

프라이빗 엔드포인트 연결을 추가할 때 논리 서버에 대한 공용 라우팅은 기본적으로 차단되지 않습니다. 방화벽 및 가상 네트워크 창에서 공용 네트워크 액세스 거부 설정은 기본적으로 선택되어 있지 않습니다. 공용 네트워크 액세스를 사용하지 않도록 설정하려면 공용 네트워크 액세스 거부를 선택해야 합니다.

그런 다음 논리 서버에 대한 공용 액세스를 사용하지 않도록 설정

Azure SQL 데이터베이스 논리 SQL 서버에서는 논리 서버에 대한 모든 공용 액세스를 사용하지 않도록 설정하고 가상 네트워크에서만 연결을 허용한다고 가정합니다.

먼저 프라이빗 엔드포인트 연결이 사용하도록 설정되고 구성되었는지 확인합니다. 그런 다음 논리 서버에 대한 공용 액세스를 사용하지 않도록 설정하려면:

  1. 논리 서버의 네트워킹 페이지로 이동합니다.

  2. 공용 네트워크 액세스 거부 확인란을 선택합니다.

    프라이빗 엔드포인트 연결에 대한 공용 네트워크 액세스를 사용하지 않도록 설정하는 방법을 보여주는 스크린샷

동일한 가상 네트워크의 Azure VM에서 SQL Database로의 연결 테스트

이 시나리오에서는 프라이빗 엔드포인트와 동일한 가상 네트워크에서 최신 버전의 Windows를 실행하는 Azure VM(가상 머신)을 만들었습니다.

  1. 원격 데스크톱(RDP) 세션을 시작하고, 가상 머신에 연결합니다.

  2. 그러면 다음 도구를 사용하여 VM에서 프라이빗 엔드포인트를 통해 SQL Database에 연결하는지 확인하기 위해 몇 가지 기본적인 연결 확인을 수행할 수 있습니다.

텔넷을 사용하여 연결 확인

텔넷 클라이언트는 연결을 테스트하는 데 사용할 수 있는 Windows 기능입니다. Windows OS 버전에 따라 이 기능을 명시적으로 사용하도록 설정해야 할 수도 있습니다.

텔넷을 설치한 후 명령 프롬프트 창을 엽니다. 텔넷 명령을 실행하고, SQL Database의 데이터베이스 IP 주소와 프라이빗 엔드포인트를 지정합니다.

telnet 10.9.0.4 1433

텔넷이 성공적으로 연결되면 아래 이미지와 같은 빈 화면이 명령 창에 출력됩니다.

빈 화면이 있는 텔넷 창의 다이어그램

Powershell 명령을 사용하여 연결 확인:

Test-NetConnection -computer myserver.database.windows.net -port 1433

PsPing을 사용하여 연결 확인

PsPing은 다음과 같이 사용하여 프라이빗 엔드포인트에서 1433 포트의 연결을 수신 대기하는지 확인할 수 있습니다.

논리 SQL Server 및 포트 1433에 대한 FQDN을 제공하여 PsPing을 다음과 같이 실행합니다.

PsPing.exe mysqldbsrvr.database.windows.net:1433

예상되는 출력의 예는 다음과 같습니다.

TCP connect to 10.9.0.4:1433:
5 iterations (warmup 1) ping test:
Connecting to 10.9.0.4:1433 (warmup): from 10.6.0.4:49953: 2.83ms
Connecting to 10.9.0.4:1433: from 10.6.0.4:49954: 1.26ms
Connecting to 10.9.0.4:1433: from 10.6.0.4:49955: 1.98ms
Connecting to 10.9.0.4:1433: from 10.6.0.4:49956: 1.43ms
Connecting to 10.9.0.4:1433: from 10.6.0.4:49958: 2.28ms

출력은 PsPing을 통해 프라이빗 엔드포인트와 연결된 개인 IP 주소를 ping할 수 있음을 보여 줍니다.

Nmap을 사용하여 연결 확인

Nmap(네트워크 매퍼)은 네트워크 검색 및 보안 감사에 사용되는 무료 오픈 소스 도구입니다. 자세한 내용과 다운로드 링크는 https://Nmap.org 를 방문하세요. 이 도구를 사용하여 프라이빗 엔드포인트에서 1433 포트의 연결을 수신 대기하고 있는지 확인할 수 있습니다.

프라이빗 엔드포인트를 호스팅하는 서브넷의 주소 범위를 제공하여 Nmap을 다음과 같이 실행합니다.

Nmap -n -sP 10.9.0.0/24

예상되는 출력의 예는 다음과 같습니다.

Nmap scan report for 10.9.0.4
Host is up (0.00s latency).
Nmap done: 256 IP addresses (1 host up) scanned in 207.00 seconds

결과에서 프라이빗 엔드포인트의 IP 주소에 해당하는 하나의 IP 주소가 사용되고 있음을 보여 줍니다.

SSMS(SQL Server Management Studio)를 사용하여 연결 확인

참고

클라이언트의 연결 문자열에 있는 서버의 FQDN(정규화된 도메인 이름) 을 사용합니다(<server>.database.windows.net). IP 주소에 직접 또는 개인 링크 FQDN(<server>.privatelink.database.windows.net)을 사용하여 수행된 모든 로그인 시도가 실패합니다. 프라이빗 엔드포인트는 트래픽을 지역의 SQL 게이트웨이로 라우팅하고 로그인이 성공하려면 올바른 FQDN을 지정해야 하기 때문에 이 동작은 의도된 것입니다.

SSMS를 사용하여 SQL Database에 연결하려면 여기의 단계를 따르세요. SSMS를 사용하여 SQL Database에 연결한 후 다음 쿼리는 연결하는 Azure VM의 개인 IP 주소와 일치하는 client_net_address를 반영해야 합니다.

SELECT client_net_address
FROM sys.dm_exec_connections
WHERE session_id = @@SPID;

프라이빗 엔드포인트를 사용하여 연결 정책 리디렉션

대기 시간을 줄이고 처리량을 향상하려면 리디렉션 연결 정책과 함께 프라이빗 링크를 사용하는 것이 좋습니다. 연결에서 이 모드를 사용하려면 클라이언트는 다음 필수 구성 요소를 충족해야 합니다.

  • 프라이빗 엔드포인트를 호스팅하는 VNET에서 포트 범위 1433에서 65535까지의 인바운드 통신을 허용합니다.

  • 클라이언트를 호스팅하는 VNET에서 포트 범위 1433에서 65535까지의 아웃바운드 통신을 허용합니다.

  • 리디렉션 지원이 기본 제공되는 최신 버전의 드라이버를 사용하세요. 리디렉션 지원은 ODBC, OLEDB, NET SqlClient 데이터 공급자, Core .NET SqlClient 데이터 공급자 및 JDBC(버전 9.4 이상) 드라이버에 포함됩니다. 다른 모든 드라이버에서 발생하는 연결은 프록시됩니다.

필수 구성 요소를 충족한 후 클라이언트는 연결 정책 리디렉션을 선택해야 합니다.

1433-65535 포트 범위에서 아웃바운드 액세스를 허용하도록 방화벽 설정을 수정할 수 없는 경우 대체 해결 방법은 연결 정책을 프록시로 변경하는 것입니다.

기본 연결 정책을 사용하는 기존 프라이빗 엔드포인트는 프록시 처리됩니다. 즉, 포트 1433의 프록시 연결 정책을 사용합니다. 이 작업을 수행하는 이유는 리디렉션에 필요한 포트 범위가 열려 있지 않아 클라이언트의 트래픽이 SQL Database에 도달하는 데 방해가 되지 않도록 하기 위해서입니다.

프라이빗 피어링을 통한 온-프레미스 연결

고객이 온-프레미스 머신에서 퍼블릭 엔드포인트에 연결하는 경우 서버 수준 방화벽 규칙을 사용하여 IP 주소를 IP 기반 방화벽에 추가해야 합니다. 이 모델은 개발 또는 테스트 워크로드를 위해 개별 머신에 액세스할 수 있도록 하는 데 효과적이지만 프로덕션 환경에서는 관리하기가 어렵습니다.

Private Link를 사용하면 고객이 ExpressRoute, 프라이빗 피어링 또는 VPN 터널링을 사용하여 프라이빗 엔드포인트에 대한 프레미스 간 액세스를 사용하도록 설정할 수 있습니다. 그런 다음, 고객이 퍼블릭 엔드포인트를 통한 모든 액세스를 사용하지 않도록 설정하고, IP 기반 방화벽을 사용하여 IP 주소를 허용하지 않을 수 있습니다.

클라이언트는 동일한 가상 네트워크에서 프라이빗 엔드포인트에 연결할 수 있고, 동일한 지역의 가상 네트워크를 피어링 하거나, 가상 네트워크를 통해 지역간 가상 네트워크 연결을 통해 연결할 수 있습니다. 또한 클라이언트는 ExpressRoute, 프라이빗 피어링 또는 VPN 터널링을 사용하여 온-프레미스에서 연결할 수 있습니다. 다음의 간소화된 다이어그램은 일반적인 사용 사례를 보여 줍니다.

연결 옵션 다이어그램

또한 가상 네트워크에서 직접 실행되지는 않지만 가상 네트워크와 통합된 서비스(예: App Service Web Apps 또는 Functions)도 데이터베이스에 대해 프라이빗 연결을 할 수도 있습니다. 이 특정 사용 사례에 대한 자세한 내용은 Azure SQL 데이터베이스에 대한 프라이빗 연결을 사용하는 웹앱 아키텍처 시나리오를 참조하세요.

피어링된 Virtual Network의 Azure VM에서 연결

피어링된 가상 네트워크의 Azure VM에서 SQL Database로의 연결을 설정하도록 가상 네트워크 피어링을 구성합니다.

가상 네트워크의 Azure VM에서 가상 네트워크 환경으로 연결

가상 네트워크를 가상 네트워크 VPN 게이트웨이 연결을 구성하여 다른 지역 또는 구독의 Azure VM에서 SQL Database 데이터베이스에 대한 연결을 설정합니다.

VPN을 통해 온-프레미스 환경에서 연결

온-프레미스 환경에서 SQL Database 데이터베이스로의 연결을 설정하려면 다음 옵션 중 하나를 선택하고 구현합니다.

서비스의 FQDN으로 공용 IP 주소를 확인할 수 있으므로 DNS 구성 시나리오도 고려합니다.

Polybase 및 COPY 문을 사용하여 Azure Synapse Analytics에서 Azure Storage로 연결

PolyBase 및 COPY 문은 일반적으로 Azure Storage 계정에서 Azure Synapse Analytics로 데이터를 로드하는 데 사용됩니다. 데이터를 로드하는 Azure Storage 계정에서 프라이빗 엔드포인트, 서비스 엔드포인트 또는 IP 기반 방화벽을 통해 가상 네트워크 서브넷 집합에만 액세스하도록 제한하는 경우 PolyBase 및 COPY 문에서 계정으로의 연결이 끊어집니다. 가상 네트워크로 보안이 유지되는 Azure Storage에 연결하는 Azure Synapse Analytics를 통해 가져오기 및 내보내기 시나리오를 사용하도록 설정하는 경우 여기에서 제공하는 단계를 따르세요.

데이터 반출 방지

Azure SQL Database의 데이터 반출은 데이터베이스 관리자와 같은 사용자가 한 시스템에서 데이터를 추출하여 조직 외부의 다른 위치 또는 시스템으로 이동할 수 있는 경우입니다. 예를 들어 사용자는 데이터를 타사 소유의 스토리지 계정으로 이동합니다.

SQL Database의 데이터베이스에 연결하는 Azure 가상 머신 내에서 SSMS(SQL Server Management Studio)를 실행하는 사용자가 있는 시나리오를 고려해 보세요. 이 데이터베이스는 미국 서부 데이터 센터에 있습니다. 다음 예에서는 네트워크 액세스 제어를 사용하여 SQL Database에서 퍼블릭 엔드포인트를 통한 액세스를 제한하는 방법을 보여 줍니다.

  1. [Azure 서비스 허용]을 끄기로 설정하여 퍼블릭 엔드포인트를 통해 SQL Database로의 모든 Azure 서비스 트래픽을 사용하지 않도록 설정합니다. 서버 및 데이터베이스 수준 방화벽 규칙에서 IP 주소가 허용되지 않는지 확인합니다. 자세한 내용은 Azure SQL Database 및 Azure Synapse Analytics 네트워크 액세스 제어를 참조하세요.
  2. VM의 개인 IP 주소를 사용하는 SQL Database의 데이터베이스로의 트래픽만 허용합니다. 자세한 내용은 서비스 엔드포인트가상 네트워크 방화벽 규칙 문서를 참조하세요.
  3. Azure VM에서 다음과 같이 NSG(네트워크 보안 그룹) 및 서비스 태그를 사용하여 나가는 연결의 범위를 좁힙니다.
    • 서비스 태그 = SQL.WestUs에 대한 트래픽을 허용하는 NSG 규칙을 지정합니다. 미국 서부에서는 SQL Database에만 연결할 수 있습니다.
    • 서비스 태그 = SQL에 대한 트래픽을 거부하는 NSG 규칙(우선 순위가 높음)을 지정합니다. 모든 지역에서 SQL Database에 대한 연결을 거부합니다.

이 설정이 완료되면 Azure VM에서 미국 서부 지역의 SQL Database의 데이터베이스에만 연결할 수 있습니다. 그러나 연결은 단일 SQL Database의 단일 데이터베이스로 제한되지 않습니다. VM은 구독에 속하지 않은 데이터베이스를 포함하여 미국 서부 지역의 모든 데이터베이스에 계속 연결할 수 있습니다. 위의 시나리오에서 데이터 반출의 범위를 특정 지역으로 좁혔지만 완전히 제거하지는 않았습니다.

Private Link를 사용하면 이제 고객이 NSG와 같은 네트워크 액세스 제어를 설정하여 프라이빗 엔드포인트에 대한 액세스를 제한할 수 있습니다. 그러면 개별 Azure PaaS 리소스가 특정 프라이빗 엔드포인트에 매핑됩니다. 악의적인 참가자는 매핑된 PaaS 리소스(예: SQL Database의 데이터베이스)에만 액세스할 수 있으며 다른 리소스에는 액세스할 수 없습니다.