본문 바로가기
Azure/Azure Infra & Networking

Azure Networking - Service Endpoint vs Private Endpoint

by ww0610 2025. 12. 18.

개요

Endpoint 형제들이 있습니다.

하나는 Azure 백본 네트워크를 신뢰하는 구조이고
다른 하나는 완전히 사설 IP 기반으로 격리해 버리는 구조인데요

 

네트워크 트래픽 흐름, DNS 구성, 보안 경계 등 기가 막힌 영향을 줍니다

 

두 방식을 한번 비교해보고 정리해 보겠습니다.

구성 요소

Service Endpoint는 VNet에서 Azure PaaS 서비스로 가는 트래픽을 Azure 백본 네트워크로 제한하는 것

Private Endpoint는 PaaS 서비스를 VNet 내부의 사설 IP로 직접 연결하는 것을 뜻합니다.

구분 Service Endpoint Private Endpoint
연결 방식 서비스 자체는 Public Endpoint 유지 서비스에 Private IP 할당
IP 구조 Public IP 기반 Private IP 기반
네트워크 경계 Azure 서비스 단위 VNet 단위
트래픽 경로 VNet → Azure 백본 → PaaS VNet → Private Endpoint → PaaS
외부 인터넷 노출 가능 (제어는 가능) 불가능
DNS 구성 기본 Public DNS 사용 Private DNS Zone 필요
보안 모델 Azure 서비스 신뢰 기반 네트워크 완전 격리
접근 제어 방식 서비스 Firewall + VNet 제한 NSG + Private Endpoint 정책
지원 서비스 Storage, SQL, Web App 등 일부 PaaS 대부분의 Azure PaaS
온프레미스 연동 제한적 ExpressRoute / VPN과 자연스러운 연동
비용 추가 비용 없음 Private Endpoint 단위 과금 발생
운영 난이도 낮음 높음
대표 사용 시나리오 간단한 내부 접근 제한 보안 요구사항이 높은 환경

진행 과정

환경 설정

먼저 VNet부터 생성해 주겠습니다.

Azure Endpoint를 위한 VNet 생성
.
.

IP 대역은 간단하게 10.10.0.0으로 구성했습니다.

.
.

테스트용으로 만들 VM에 붙여줄 서브넷을 만들어줍니다.

Endpoint 테스트를 위한 Subnet 생성
.
.

시작 주소는 10.10.1.0으로 설정하였습니다.

.

주소 대역은 10.10.1.0/24로 잡혀 있고 이후 VM을 배치해서
Service Endpoint랑 Private Endpoint 실습을 진행할 기준 서브넷입니다.

Azure Virtual Network에서 snet-vm 서브넷(10.10.1.0/24)이 구성된 화면
.


이제 VM을 하나 만들어줍니다

Service Endpoint와 Private Endpoint의 접근 차이를 이 VM을 기준으로 확인해 볼 예정입니다.

Service Endpoint 및 Private Endpoint 테스트용 Azure 가상 머신 생성 화면
.

리눅스가 좀 멋져 보이므로 우분투로 진행합니다.

.

인증 방법을 설정해 주고...

.

아까 만들어둔 VNet과 Subnet을 붙여줍니다.

.

자 다음은 스토리지 계정을 만들어줄 건데요

IaaS(VM)에서 Azure PaaS 리소스에 접근할 때
Service Endpoint와 Private Endpoint가 어떻게 다르게 동작하는지 테스트해볼 예정입니다.

Service Endpoint 및 Private Endpoint 테스트를 위한 Azure Blob Storage 생성 단계
.

나머지는 기본값으로 하고 검토+만들기를 클릭해 줍니다.

.


Service Endpoint 구성

이제 Service Endpoint를 붙이기 위해 VNet에서 서브넷 설정으로 들어온 상태인데요
여기서 snet-vm 서브넷을 기준으로 PaaS 서비스 접근을 제어해 볼 예정입니다

Service Endpoint는 서브넷 단위로 설정되기 때문에 아까 만들어둔 서브넷을 선택해 줍니다.

.

여기서 Microsoft.Storage를 Service Endpoint로 추가해 주면

이 snet-vm 서브넷에서 아까 만들어둔 Storage 계정으로 나가는 트래픽은
더 이상 Public 인터넷을 타지 않고 Azure 백본 네트워크를 통해 전달되게 됩니다.
즉, 접근 대상은 여전히 Public Endpoint이긴 한데, 경로만 Azure 내부로 바뀌는 구조라고 보면 됩니다

.
Azure 서브넷에 Service Endpoint를 설정하여 Storage 트래픽을 Azure 백본으로 전환하는 모습
.

이제 스토리지 계정 쪽에서 네트워크 접근을 제한해 줄 차례입니다
네트워킹 메뉴에서 공용 액세스를 관리하면서

방금 Service Endpoint를 설정한 VNet과 snet-vm 서브넷을 허용 대상으로 등록합니다.
이렇게 하면 해당 서브넷에서 오는 트래픽만 스토리지 계정에 접근할 수 있도록 제어되는 구조입니다.

.
Azure Storage 계정 네트워킹 설정에서 VNet 및 Subnet을 허용 대상으로 추가하는 단계
.

다음과 같이 Enable from selected networks를 선택해 주고

.

기존의 VNet과 Subnet을 선택해 줍니다.

.

여기서는 스토리지 계정 방화벽에 TerrywooVNet의 snet-vm 서브넷을 직접 추가하는 단계인데요,
앞에서 Service Endpoint를 설정했기 때문에
이 서브넷에서 들어오는 트래픽만 스토리지 계정 접근이 허용되게 됩니다.


즉, Public 접근은 열려 있어도 실제 허용 대상은
이 VNet/Subnet으로 제한되는 구조입니다.

.
.

한번 테스트해보겠습니다.

만들어둔 VM에 ssh로 접속한 후 다음과 같이 입력해 줍니다.

nslookup <Storage Endpoint>

Azure VM에서 nslookup으로 Blob Storage 엔드포인트가 Public IP로 해석되는 모습
.

스토리지 엔드포인트가 여전히 Public IP로 해석되는데요, 이건 Service Endpoint 구조에서는 정상적인 동작입니다.
Service Endpoint는 IP를 Private로 바꾸는 방식이 아니라,
Public IP를 그대로 쓰되...!! 라우팅만 Azure 백본으로 전환하는 구조이기 때문입니다.

 

curl도 한번 찍어볼까요

Service Endpoint 환경에서 VM에서 Storage로 curl 요청 시 409 응답을 확인하는 화면


HTTP/1.1 409 Public access is not permitted 응답이 나오는데,
이건 네트워크 차단이 아니라 스토리지 방화벽 정책에 의해 거부된 결과입니다.
즉, VM → Storage까지 네트워크 통신 자체는 성공했고,
Service Endpoint가 정상적으로 적용된 상태라고 보면 됩니다.


Service Endpoint의 보안적 한계

다만 보안적인 한계가 뚜렷합니다.

Service Endpoint를 적용해도 스토리지 계정의 Public Endpoint 자체가 사라지는 건 아닌데요
단지 이 VNet / 이 서브넷에서만 접근 가능하게 범위를 좁혀주는 수준입니다.

그래서 구조적으로 보면 완전한 Private 네트워크라고 보긴 어렵습니다.

 

또 하나 중요한 포인트가 있는데요,
Service Endpoint는 Outbound 트래픽,
VM에서 PaaS로 나가는 방향의 보안만 강화해 주는 역할입니다.
Inbound 관점에서 쓸 수 있는 Private IP는 만들어지지 않고,
스토리지 계정 자체에도 Private IP는 존재하지 않습니다.


Private Endpoint 구성

하지만 절망하기에는 이릅니다

여기서부터가 이제 Private Endpoint인데요,
스토리지 계정 네트워킹 메뉴에서 프라이빗 엔드포인트 탭으로 들어오면
Public 접근을 아예 쓰지 않고, VNet 안에 사설 IP를 하나 만들어서 연결하는 방식을 구성할 수 있습니다.


다시 스토리지 계정의 네트워킹으로 돌아와 프라이빗 엔드포인트를 생성해 줍니다.

Azure Storage 계정 네트워킹 메뉴에서 Private Endpoint 생성 화면
.

프라이빗 엔드포인트 생성 과정에서 대상 리소스로 스토리지 계정을 선택했고
그중에서도 접근할 하위 리소스는 blob으로 지정한 상태입니다.
이렇게 설정하면 Blob 서비스에 대해 VNet 내부에 전용 사설 IP가 하나 만들어지게 됩니다.

Private Endpoint 생성 과정에서 대상 하위 리소스로 blob을 지정하는 예시
.

지금은 실습이니 같은 서브넷을 공유하지만 실무에서는 VM Private Endpoint는는 다른 서브넷 권장합니다.

Azure Private Endpoint 생성 시 VNet과 Subnet을 선택하는 단계
.

Private Endpoint를 제대로 쓰려면 DNS 구성이 해줘야 합니다.
여기서는 Private DNS 영역과 통합을 로 선택해서
Azure가 privatelink.blob.core.windows.net 프라이빗 DNS 영역을 자동으로 만들어주도록 설정했습니다.

 

이렇게 하면 VM에서 기존 Blob FQDN으로 접근하더라도
DNS 해석 결과가 Public IP가 아니라 Private Endpoint에 할당된 사설 IP로 바뀌게 됩니다.

Azure Private Endpoint 생성 시 프라이빗 DNS 영역과 통합 설정 화면
.

Private Endpoint가 만들어졌으면,  자동으로 Private IP가 하나 배정됩니다.

Private DNS Zone이 생성되면서 그 안에 A레코드가 생기고

VM에서 Storage와 연결해도 자동으로 Private IP로 매핑될 겁니다

 

Private Endpoint의 NIC에 들어가서 Private IP를 확인해 봅니다.

.
.

더 확실한 테스트를 위해 Storage 대한 공용 엑세스액세스(Public access)도 꺼주겠습니다.

그럼에도 불구하고 VM에서 Storage 접속은 잘될 겁니다.

Private Endp[oint 테스트를 위해 Public Network를 끄는 화면
.

아까처럼 VM에 ssh로 붙은 후 다음과 같이 입력해 봅니다.

nslookup <Storage Endpoint>

Azure Private Endpoint 구성 후 nslookup 결과가 Private IP로 해석되는 화면
.

이번에는 Private Endpoint를 붙인 상태에서 확인해보니

nslookup 결과를 보면 기존 blob.core.windows.net 주소가
privatelink.blob.core.windows.net으로 CNAME이 바뀌고

해석된 IP도 10.10.1.5 같은 Private IP로 내려오는 걸 확인할 수 있습니다.

 

Service Endpoint 때는 Public IP를 그대로 사용했던 반면,
Private Endpoint에서는 Public access를 사용 안 하는 상태에서도
VM에서 정상적으로 연결이 되고 있고요,
네트워크 경로 자체가 완전히 VNet 내부로 들어온 걸 DNS 결과로 확인할 수 있는 지점입니다.


참고자료

프라이빗 엔드포인트란? - Azure Private Link | Microsoft Learn

 

프라이빗 엔드포인트란? - Azure Private Link

이 문서에서는 Azure 프라이빗 링크의 프라이빗 엔드포인트 기능을 사용하는 방법을 알아봅니다.

learn.microsoft.com

Azure Virtual Network 서비스 엔드포인트 | Microsoft Learn

 

Azure Virtual Network 서비스 엔드포인트

서비스 엔드포인트를 사용하여 가상 네트워크에서 Azure 리소스에 대한 직접 액세스를 사용하는 방법을 알아봅니다.

learn.microsoft.com

Service Endpoints vs Private Endpoints | Microsoft Community Hub

 

Service Endpoints vs Private Endpoints | Microsoft Community Hub

Howdy Readers!

techcommunity.microsoft.com

 

 

 

반응형