Azure Private Link for Azure Synapse Analytics

Tip

Microsoft Fabric Data Warehouse는 데이터 레이크 기반의 엔터프라이즈 규모 관계형 웨어하우스로, 미래 대비 아키텍처, 기본 제공 AI 및 새로운 기능을 제공합니다. 데이터 웨어하우징이 처음이라면, Fabric Data Warehouse부터 시작하세요. 기존 전용 SQL 풀 워크로드는 업그레이드하면 Fabric을 통해 데이터 과학, 실시간 분석 및 보고 전반에 걸쳐 새로운 기능에 액세스할 수 있습니다.

Azure Private Link를 사용하면 프라이빗 엔드포인트를 통해 Synapse SQL에 연결할 수 있습니다. 사설 엔드포인트는 가상 네트워크와 서브넷 내에서 사설 IP 주소를 가진 네트워크 인터페이스입니다. 트래픽은 공용 인터넷을 거치지 않고 Microsoft 백본 네트워크를 통해 전송됩니다.

항상 모든 클라이언트 드라이버 및 도구에 대한 연결 문자열에 서버()의 FQDN(<server>.database.windows.net정규화된 도메인 이름)을 사용합니다. 사설 IP 주소나 사설 링크 FQDN(<server>.privatelink.database.windows.net)을 사용하는 인증 시도는 작동하지 않습니다. 이 동작은 프라이빗 엔드포인트가 트래픽을 SQL 게이트웨이로 라우팅하기 때문에 설계된 것으로, 인증 요청을 성공적으로 라우팅하려면 올바른 FQDN이 필요합니다.

만들기 프로세스

Azure 포털, PowerShell, 또는 Azure CLI를 사용하여 프라이빗 엔드포인트를 생성하세요:

승인 프로세스

네트워크 관리자가 개인 엔드포인트(PE)를 생성한 후, SQL 관리자는 SQL 데이터베이스와의 개인 엔드포인트 연결(PEC)을 관리할 수 있습니다.

  1. Azure 포털에서 서버 리소스로 가세요.

  2. 프라이빗 엔드포인트 승인 페이지로 가세요. Azure Synapse Analytics SQL 서버 리소스의 리소스 메뉴에서 Security 아래에 있는 Private endpoint connections를 선택하세요.

  3. 다음을 보세요:

    • 모든 프라이빗 엔드포인트 연결(PEC) 목록
    • 생성된 사설 엔드포인트(PE)
  4. 프라이빗 엔드포인트가 없다면, '프라이빗 엔드포인트 만들기'를 선택하여 하나를 생성하세요. 그렇지 않은 경우 목록에서 개별 PEC를 눌러 선택합니다.

  5. SQL 관리자는 PEC를 승인하거나 거부할 수 있으며, 선택적으로 짧은 텍스트 응답을 추가할 수 있습니다.

  6. 승인 또는 거절 후, 목록은 적절한 상태와 응답 텍스트를 반영합니다.

  7. 프라이빗 엔드포인트 이름을 선택하세요.

    이 작업을 하면 Private 엔드포인트 개요 페이지로 이동합니다. 네트워크 인터페이스 링크를 선택하여 프라이빗 엔드포인트 연결의 네트워크 인터페이스 세부 정보를 확인하세요.

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

Important

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

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

Azure Synapse Analytics SQL 서버에서는 논리 서버에 대한 모든 공개 접근 권한을 비활성화하고 가상 네트워크에서만 연결을 허용할 수 있습니다.

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

  1. 논리 서버의 네트워킹 페이지로 이동합니다.
  2. 공용 네트워크 액세스 거부 확인란을 선택합니다.

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

이 시나리오에서는 프라이빗 엔드포인트와 같은 가상 네트워크에서 최신 버전의 Windows를 실행하는 Azure 가상 머신(VM)을 생성했다고 가정해 봅시다.

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

  2. 다음 도구를 사용하여 VM이 프라이빗 엔드포인트를 통해 SQL 데이터베이스에 연결되어 있는지 기본 연결 점검을 할 수 있습니다:

텔넷을 사용해 연결 상태를 확인해 보세요

텔넷은 연결을 테스트하는 데 사용할 수 있는 Windows 기능입니다. Windows 버전에 따라 이 기능을 명시적으로 활성화해야 할 수도 있습니다.

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

telnet 10.9.0.4 1433

텔넷이 성공적으로 연결되면 명령 창에 빈 화면이 표시됩니다.

PowerShell을 사용해 연결 상태를 확인하세요

PowerShell 명령어를 사용해 연결 상태를 확인하세요:

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

PsPing을 사용해 연결 상태를 확인하세요

PsPing을 사용해 프라이빗 엔드포인트가 포트 1433에서 연결 요청을 수신 대기하는지 다음과 같이 확인하세요.

논리 SQL 서버와 포트 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 주소에 핑을 보낼 수 있음을 보여줍니다.

Nmap을 사용하여 연결성을 확인해

Nmap(Network Mapper)은 네트워크 발견 및 보안 감사를 위한 무료 오픈소스 도구입니다. 자세한 정보와 다운로드 링크는 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 주소에 해당합니다.

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

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

SSMS를 사용하여 SQL Database에 연결의 단계를 따르세요. SSMS를 사용해 연결하면, 다음 쿼리는 연결 중인 Azure VM의 사설 IP 주소와 일치하는 client_net_address를 반환합니다:

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

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

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

Private Link를 사용하면 ExpressRoute, 프라이빗 피어링 또는 VPN 터널링을 통해 프라이빗 엔드포인트에 대한 온-프레미스 간 액세스를 활성화할 수 있습니다. 그 후 퍼블릭 엔드포인트를 통한 모든 접근 권한을 비활성화하고 IP 기반 방화벽을 사용하지 않아 어떤 IP 주소도 허용하지 않도록 할 수 있습니다.

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

또한 가상 네트워크에서 직접 실행되지는 않지만 가상 네트워크와 통합된 서비스(예: App Service Web Apps 또는 Functions)도 데이터베이스에 대해 프라이빗 연결을 할 수도 있습니다.

피어링된 가상 네트워크의 Azure VM에서 연결

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

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

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

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

온프레미스 환경에서 연결을 구축하려면 다음 옵션 중 하나를 선택하고 구현하세요:

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

PolyBase와 COPY statement를 사용하여 Azure Synapse Analytics에서 Azure Storage로 연결

PolyBase와 COPY 문을 사용해서 Azure Storage 계정에서 Azure Synapse Analytics로 데이터를 로드하세요. 데이터를 로드하는 Azure Storage 계정이 프라이빗 엔드포인트, 서비스 엔드포인트 또는 IP 기반 방화벽을 사용해 지정된 가상 네트워크 서브넷 집합에서만 액세스를 허용하면, PolyBase와 COPY 문에서 해당 계정으로의 연결이 끊깁니다. 가상 네트워크에 보안이 설정된 Azure Storage에 연결하는 Azure Synapse Analytics를 사용하여 가져오기 및 내보내기 시나리오를 모두 사용하도록 설정하려면 Azure Storage에서 가상 네트워크 서비스 엔드포인트를 사용하는 경우의 영향을 참조하세요.

데이터 반출 방지

데이터 유출은 데이터베이스 관리자와 같은 사용자가 한 시스템에서 데이터를 추출하여 조직 외부의 다른 위치나 시스템으로 이동시킬 때 발생합니다. 예를 들어 사용자는 데이터를 타사 소유의 스토리지 계정으로 이동합니다.

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

  1. 공개 엔드포인트를 통해 SQL 데이터베이스로 가는 모든 Azure 서비스 트래픽을 비활성화하려면 Allow Azure Services를 OFF로 설정하세요. 서버 및 데이터베이스 수준의 방화벽 규칙이 IP 주소를 허용하지 않도록 하세요. 자세한 내용은 Azure Synapse Analytics 네트워크 접근 제어를 참조하세요.
  2. VM의 사설 IP 주소로만 트래픽을 허용하세요. 자세한 내용은 가상 네트워크 방화벽 규칙을 참조하세요.
  3. Azure VM에서는 네트워크 보안 그룹(NSG)과 서비스 태그를 사용하여 다음과 같이 출력 연결 범위를 좁히세요:
    • 서비스 태그 = SQL.WestUs에 대한 트래픽을 허용하고 미국 서부의 SQL 데이터베이스에 대한 연결만 허용하는 NSG 규칙을 지정합니다.
    • 서비스 태그 = 에 대한 트래픽을 거부하는 Sql의 NSG 규칙을 지정하세요. - 모든 지역에서 SQL 데이터베이스에 대한 연결을 거부합니다.

이 설정이 끝나면 Azure VM은 미국 서부 지역의 자원에만 연결할 수 있습니다. 하지만 연결성은 단일 데이터베이스에만 국한되지 않습니다. VM은 구독에 포함되지 않은 데이터베이스를 포함해 미국 서부 지역 내 모든 데이터베이스에 연결할 수 있습니다. 이전 시나리오에서 데이터 유출 범위를 특정 지역으로 줄였지만, 완전히 없애지는 못했습니다.

Private Link를 사용하면 NSG와 같은 네트워크 접근 제어를 설정하여 프라이빗 엔드포인트에 대한 접근을 제한할 수 있습니다. 개별 Azure PaaS 리소스를 특정 프라이빗 엔드포인트에 매핑할 수 있습니다. 악의적인 내부자는 매핑된 PaaS 자원에만 접근할 수 있고 다른 자원에는 접근할 수 없습니다.