인바운드 프라이빗 엔드포인트를 사용하여 API Management에 비공개로 연결
적용 대상: 개발자 | 기본 | 표준 | 프리미엄
개인 네트워크의 클라이언트에서 Azure Private Link를 통해 인스턴스에 안전하게 액세스할 수 있도록 API Management 인스턴스에 대한 인바운드 프라이빗 엔드포인트를 구성할 수 있습니다.
프라이빗 엔드포인트는 호스팅되는 Azure VNet의 IP 주소를 사용합니다.
개인 네트워크의 클라이언트와 API Management 간의 네트워크 트래픽은 VNet과 Microsoft 백본 네트워크의 Private Link를 통해 트래버스하여 퍼블릭 인터넷에서 공개되지 않습니다.
API Management 호스트 이름을 엔드포인트의 개인 IP 주소에 매핑하도록 사용자 지정 DNS 설정 또는 Azure DNS 프라이빗 영역을 구성합니다.
프라이빗 엔드포인트 및 Private Link를 사용하면 다음을 수행할 수 있습니다.
API Management 인스턴스에 대한 여러 Private Link 연결을 만듭니다.
프라이빗 엔드포인트를 사용하여 보안 연결에서 인바운드 트래픽을 보냅니다.
정책을 사용하여 프라이빗 엔드포인트에서 제공하는 트래픽을 구분합니다.
들어오는 트래픽을 프라이빗 엔드포인트로만 제한하여 데이터 반출을 방지합니다.
Important
제한 사항
- API Management 인스턴스의 게이트웨이 엔드포인트만 인바운드 Private Link 연결을 지원합니다.
- 각 API Management 인스턴스는 최대 100개의 Private Link 연결을 지원합니다.
- 자체 호스팅 게이트웨이 또는 작업 영역 게이트웨이에서는 연결이 지원되지 않습니다.
필수 조건
- 기존 API Management 인스턴스. 구독이 아직 없다면 하나를 만듭니다.
- API Management 인스턴스는
stv2
컴퓨팅 플랫폼에서 호스트되어야 합니다. - 인스턴스를 외부 또는 내부 가상 네트워크에 배포(삽입)하지 않습니다.
- API Management 인스턴스는
- 프라이빗 엔드포인트를 호스트할 가상 네트워크 및 서브넷. 서브넷에는 다른 Azure 리소스가 포함될 수 있습니다.
- (권장) 프라이빗 엔드포인트를 테스트하기 위한 가상 네트워크의 동일하거나 다른 서브넷에 있는 가상 머신
Azure Cloud Shell에서 Bash 환경을 사용합니다. 자세한 내용은 Azure Cloud Shell의 Bash에 대한 빠른 시작을 참조하세요.
CLI 참조 명령을 로컬에서 실행하려면 Azure CLI를 설치합니다. Windows 또는 macOS에서 실행 중인 경우 Docker 컨테이너에서 Azure CLI를 실행하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너에서 Azure CLI를 실행하는 방법을 참조하세요.
로컬 설치를 사용하는 경우 az login 명령을 사용하여 Azure CLI에 로그인합니다. 인증 프로세스를 완료하려면 터미널에 표시되는 단계를 수행합니다. 다른 로그인 옵션은 Azure CLI를 사용하여 로그인을 참조하세요.
메시지가 표시되면 처음 사용할 때 Azure CLI 확장을 설치합니다. 확장에 대한 자세한 내용은 Azure CLI에서 확장 사용을 참조하세요.
az version을 실행하여 설치된 버전과 종속 라이브러리를 찾습니다. 최신 버전으로 업그레이드하려면 az upgrade를 실행합니다.
프라이빗 엔드포인트 승인 방법
일반적으로 네트워크 관리자는 프라이빗 엔드포인트를 만듭니다. Azure RBAC(역할 기반 액세스 제어) 권한에 따라 만드는 프라이빗 엔드포인트는 트래픽을 API Management 인스턴스에 보내도록 자동으로 승인되거나 리소스 소유자가 수동으로 연결을 승인해야 합니다.
승인 방법 | 최소 RBAC 권한 |
---|---|
자동 | Microsoft.Network/virtualNetworks/** Microsoft.Network/virtualNetworks/subnets/** Microsoft.Network/privateEndpoints/** Microsoft.Network/networkinterfaces/** Microsoft.Network/locations/availablePrivateEndpointTypes/read Microsoft.ApiManagement/service/** Microsoft.ApiManagement/service/privateEndpointConnections/** |
수동 | Microsoft.Network/virtualNetworks/** Microsoft.Network/virtualNetworks/subnets/** Microsoft.Network/privateEndpoints/** Microsoft.Network/networkinterfaces/** Microsoft.Network/locations/availablePrivateEndpointTypes/read |
프라이빗 엔드포인트 구성 단계
- 구독에서 사용 가능한 프라이빗 엔드포인트 유형 가져오기
- 서브넷에서 네트워크 정책 사용 안 함
- 프라이빗 엔드포인트 만들기 - 포털
- 인스턴스에 대한 프라이빗 엔드포인트 연결 나열
- 보류 중인 프라이빗 엔드포인트 연결 승인
- 필요에 따라 공용 네트워크 액세스 사용 안 함
구독에서 사용 가능한 프라이빗 엔드포인트 유형 가져오기
API Management 프라이빗 엔드포인트 유형을 구독 및 위치에서 사용할 수 있는지 확인합니다. 포털에서 Private Link 센터로 이동하여 이 정보를 찾습니다. 지원되는 리소스를 선택합니다.
또한 이 정보는 사용 가능한 프라이빗 엔드포인트 유형 - 목록 REST API를 사용하여 찾을 수도 있습니다.
GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{region}/availablePrivateEndpointTypes?api-version=2021-03-01
출력에 Microsoft.ApiManagement.service
엔드포인트 유형이 포함됩니다.
[...]
"name": "Microsoft.ApiManagement.service",
"id": "/subscriptions/{subscriptionId}/providers/Microsoft.Network/AvailablePrivateEndpointTypes/Microsoft.ApiManagement.service",
"type": "Microsoft.Network/AvailablePrivateEndpointTypes",
"resourceName": "Microsoft.ApiManagement/service",
"displayName": "Microsoft.ApiManagement/service",
"apiVersion": "2021-04-01-preview"
}
[...]
서브넷에서 네트워크 정책 사용 안 함
네트워크 보안 그룹과 같은 네트워크 정책은 프라이빗 엔드포인트에 사용되는 서브넷에서 사용하지 않도록 설정해야 합니다.
Azure PowerShell, Azure CLI 또는 REST API와 같은 도구를 사용하여 프라이빗 엔드포인트를 구성하는 경우 서브넷 구성을 수동으로 업데이트합니다. 예제는 프라이빗 엔드포인트에 대한 네트워크 정책 관리를 참조하세요.
Azure Portal을 사용하여 프라이빗 엔드포인트를 만들면 다음 섹션과 같이 네트워크 정책이 만들기 프로세스의 일부로 사용하지 않도록 자동으로 설정됩니다.
프라이빗 엔드포인트 만들기 - 포털
Azure Portal에서 API Management 서비스로 이동합니다.
왼쪽 메뉴의 배포 + 인프라 아래에서 네트워크를 선택합니다.
인바운드 프라이빗 엔드포인트 연결>+ 엔드포인트 추가를 차례로 선택합니다.
프라이빗 엔드포인트 만들기의 기본 사항 탭에서 다음 정보를 입력하거나 선택합니다.
설정 값 프로젝트 세부 정보 Subscription 구독을 선택합니다. Resource group 기존 리소스 그룹을 선택하거나 새 리소스 그룹을 만듭니다. 가상 네트워크와 동일한 지역에 있어야 합니다. 인스턴스 세부 정보 이름 myPrivateEndpoint와 같은 엔드포인트 이름을 입력합니다. 네트워크 인터페이스 이름 네트워크 인터페이스의 이름(예: myInterface)을 입력합니다 지역 프라이빗 엔드포인트에 대한 위치를 선택합니다. 가상 네트워크와 동일한 지역에 있어야 합니다. API Management 인스턴스가 호스트되는 지역과 다를 수 있습니다. 화면 아래쪽에서 다음: 리소스 단추를 선택합니다. API Management 인스턴스에 대한 다음 정보가 이미 채워져 있습니다.
- 구독
- 리소스 종류
- 리소스 이름
리소스의 대상 하위 리소스에서 게이트웨이를 선택합니다.
화면 하단에서 다음: Virtual Network 단추를 선택합니다.
네트워킹 탭에서 다음 정보를 입력하거나 선택합니다.
설정 값 가상 네트워크 가상 네트워크를 선택합니다. 서브넷 서브넷을 선택합니다. 개인 IP 구성 대부분의 경우 동적으로 IP 주소 할당을 선택합니다. 애플리케이션 보안 그룹 필요에 따라 애플리케이션 보안 그룹을 선택합니다. 화면 아래쪽에서 다음: DNS 단추를 선택합니다.
프라이빗 DNS 통합에서 다음 정보를 입력하거나 선택합니다.
설정 값 프라이빗 DNS 영역과 통합 예(기본값)를 그대로 둡니다. Subscription 구독을 선택합니다. Resource group 리소스 그룹을 선택합니다. 프라이빗 DNS 영역 기본값은 (new) privatelink.azure-api.net로 표시됩니다. 화면 아래쪽에서 다음: 탭 단추를 선택합니다. 원하는 경우 태그를 입력하여 Azure 리소스를 구성합니다.
- 화면 아래쪽에서 다음: 검토 + 만들기 단추를 선택합니다.
만들기를 실행합니다.
인스턴스에 대한 프라이빗 엔드포인트 연결 나열
프라이빗 엔드포인트가 만들어지고 서비스가 업데이트되면 포털에서 API Management 인스턴스의 인바운드 프라이빗 엔드포인트 연결 페이지의 목록에 표시됩니다.
엔드포인트의 연결 상태를 확인합니다.
- 승인됨은 API Management 리소스에서 연결을 자동으로 승인했음을 나타냅니다.
- 보류 중은 리소스 소유자가 연결을 수동으로 승인해야 함을 나타냅니다.
보류 중인 프라이빗 엔드포인트 연결 승인
프라이빗 엔드포인트 연결이 보류 중 상태인 경우 API Management 인스턴스의 소유자가 해당 연결을 사용하기 전에 수동으로 승인해야 합니다.
충분한 권한이 있는 경우 포털에 있는 API Management 인스턴스의 프라이빗 엔드포인트 연결 페이지에서 프라이빗 엔드포인트 연결을 승인합니다. 연결의 상황에 맞는(...) 메뉴에서 승인을 선택합니다.
API Management 프라이빗 엔드포인트 연결 - 만들기 또는 업데이트 REST API를 사용하여 보류 중인 프라이빗 엔드포인트 연결을 승인할 수도 있습니다.
필요에 따라 공용 네트워크 액세스 사용 안 함
필요에 따라 API Management 인스턴스로 들어오는 트래픽을 프라이빗 엔드포인트로만 제한하려면 공용 네트워크 액세스를 사용하지 않도록 설정합니다.
참고 항목
공용 네트워크 액세스는 VNet 삽입과 같은 다른 네트워킹 구성이 아니라 프라이빗 엔드포인트로 구성된 API Management 인스턴스에서만 사용하지 않도록 설정할 수 있습니다.
Azure CLI를 사용하여 공용 네트워크 액세스를 사용하지 않도록 설정하려면 다음 az apim update 명령을 실행하여 API Management 인스턴스 및 리소스 그룹의 이름을 대체합니다.
az apim update --name my-apim-service --resource-group my-resource-group --public-network-access false
API Management 서비스 - 업데이트 REST API를 사용하여 publicNetworkAccess
속성을 Disabled
(으)로 설정하여 공용 네트워크 액세스를 사용하지 않도록 설정할 수도 있습니다.
프라이빗 엔드포인트 연결 유효성 검사
프라이빗 엔드포인트가 만들어지면 포털에서 해당 DNS 설정을 확인합니다.
Azure Portal에서 API Management 서비스로 이동합니다.
왼쪽 메뉴의 배포 + 인프라 아래에서 Network>인바운드 프라이빗 엔드포인트 연결을 선택하고 만든 프라이빗 엔드포인트를 선택합니다.
왼쪽 탐색의 설정 아래에서 DNS 구성을 선택합니다.
프라이빗 엔드포인트의 DNS 레코드 및 IP 주소를 검토합니다. IP 주소는 프라이빗 엔드포인트가 구성된 서브넷의 주소 공간에 있는 개인 주소입니다.
가상 네트워크에서 테스트
가상 네트워크에서 설정한 가상 머신에 연결합니다.
nslookup
또는 dig
와 같은 유틸리티를 실행하여 Private Link를 통해 기본 게이트웨이 엔드포인트의 IP 주소를 조회합니다. 예시:
nslookup my-apim-service.azure-api.net
출력에 프라이빗 엔드포인트와 연결된 개인 IP 주소가 포함됩니다.
기본 게이트웨이 엔드포인트에 대한 가상 네트워크 내에서 시작된 API 호출이 성공해야 합니다.
인터넷에서 테스트
프라이빗 엔드포인트 경로 외부에서 API Management 인스턴스의 기본 게이트웨이 엔드포인트를 호출하려고 시도합니다. 공용 액세스를 사용하지 않도록 설정하면 출력에 상태 코드가 403
인 오류와 다음과 유사한 메시지가 포함됩니다.
Request originated from client public IP address xxx.xxx.xxx.xxx, public network access on this 'Microsoft.ApiManagement/service/my-apim-service' is disabled.
To connect to 'Microsoft.ApiManagement/service/my-apim-service', please use the Private Endpoint from inside your virtual network.
관련 콘텐츠
context.request
변수가 포함된 정책 식을 사용하여 프라이빗 엔드포인트의 트래픽을 식별합니다.- Private Link 가격 책정을 포함하여 프라이빗 엔드포인트 및 Private Link에 대해 자세히 알아봅니다.
- 프라이빗 엔드포인트 연결을 관리합니다.
- Azure 프라이빗 엔드포인트 연결 문제를 해결합니다.
- Resource Manager 템플릿을 사용하여 프라이빗 DNS 통합을 통해 API Management 인스턴스와 프라이빗 엔드포인트를 만듭니다.