인바운드 프라이빗 엔드포인트를 사용하여 API Management에 비공개로 연결

적용 대상: 개발자 | 기본 | 표준 | 프리미엄

개인 네트워크의 클라이언트에서 Azure Private Link를 통해 인스턴스에 안전하게 액세스할 수 있도록 API Management 인스턴스에 대한 인바운드 프라이빗 엔드포인트를 구성할 수 있습니다.

  • 프라이빗 엔드포인트는 호스팅되는 Azure VNet의 IP 주소를 사용합니다.

  • 개인 네트워크의 클라이언트와 API Management 간의 네트워크 트래픽은 VNet과 Microsoft 백본 네트워크의 Private Link를 통해 트래버스하여 퍼블릭 인터넷에서 공개되지 않습니다.

  • API Management 호스트 이름을 엔드포인트의 개인 IP 주소에 매핑하도록 사용자 지정 DNS 설정 또는 Azure DNS 프라이빗 영역을 구성합니다.

프라이빗 엔드포인트를 사용하여 API Management에 대한 보안 인바운드 연결을 보여 주는 다이어그램.

프라이빗 엔드포인트 및 Private Link를 사용하면 다음을 수행할 수 있습니다.

  • API Management 인스턴스에 대한 여러 Private Link 연결을 만듭니다.

  • 프라이빗 엔드포인트를 사용하여 보안 연결에서 인바운드 트래픽을 보냅니다.

  • 정책을 사용하여 프라이빗 엔드포인트에서 제공하는 트래픽을 구분합니다.

  • 들어오는 트래픽을 프라이빗 엔드포인트로만 제한하여 데이터 반출을 방지합니다.

Important

  • API Management 인스턴스에 대한 인바운드 트래픽에 한해 프라이빗 엔드포인트 연결을 구성할 수 있습니다. 현재 아웃바운드 트래픽은 지원되지 않습니다.

    외부 또는 내부 가상 네트워크 모델을 사용하여 API Management 인스턴스에서 프라이빗 엔드포인트에 대한 아웃바운드 연결을 설정할 수 있습니다.

  • 인바운드 프라이빗 엔드포인트를 사용하도록 설정하기 위해 API Management 인스턴스를 외부 또는 내부 가상 네트워크로 삽입할 수 없습니다.

제한 사항

  • API Management 인스턴스의 게이트웨이 엔드포인트만 인바운드 Private Link 연결을 지원합니다.
  • 각 API Management 인스턴스는 최대 100개의 Private Link 연결을 지원합니다.
  • 자체 호스팅 게이트웨이에서는 연결이 지원되지 않습니다.

필수 조건

  • 기존 API Management 인스턴스. 구독이 아직 없다면 하나를 만듭니다.
    • API Management 인스턴스는 stv2컴퓨팅 플랫폼에서 호스트되어야 합니다. 예를 들어 새 인스턴스를 만들거나, 프리미엄 서비스 계층에 인스턴스가 이미 있는 경우 영역 중복성을 사용하도록 설정합니다.
    • 인스턴스를 외부 또는 내부 가상 네트워크에 배포(삽입)하지 않습니다.
  • 프라이빗 엔드포인트를 호스트할 가상 네트워크 및 서브넷. 서브넷에는 다른 Azure 리소스가 포함될 수 있습니다.
  • (권장) 프라이빗 엔드포인트를 테스트하기 위한 가상 네트워크의 동일하거나 다른 서브넷에 있는 가상 머신

프라이빗 엔드포인트 승인 방법

일반적으로 네트워크 관리자는 프라이빗 엔드포인트를 만듭니다. 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

프라이빗 엔드포인트 구성 단계

  1. 구독에서 사용 가능한 프라이빗 엔드포인트 유형 가져오기
  2. 서브넷에서 네트워크 정책 사용 안 함
  3. 프라이빗 엔드포인트 만들기 - 포털
  4. 인스턴스에 대한 프라이빗 엔드포인트 연결 나열
  5. 보류 중인 프라이빗 엔드포인트 연결 승인
  6. 필요에 따라 공용 네트워크 액세스 사용 안 함

구독에서 사용 가능한 프라이빗 엔드포인트 유형 가져오기

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을 사용하여 프라이빗 엔드포인트를 만들면 다음 섹션과 같이 네트워크 정책이 만들기 프로세스의 일부로 사용하지 않도록 자동으로 설정됩니다.

프라이빗 엔드포인트 만들기 - 포털

  1. Azure Portal에서 API Management 서비스로 이동합니다.

  2. 왼쪽 메뉴에서 네트워크를 선택합니다.

  3. 인바운드 프라이빗 엔드포인트 연결>+ 엔드포인트 추가를 차례로 선택합니다.

    Azure Portal을 사용하여 프라이빗 엔드포인트 추가

  4. 프라이빗 엔드포인트 만들기기본 사항 탭에서 다음 정보를 입력하거나 선택합니다.

    설정
    프로젝트 세부 정보
    Subscription 구독을 선택합니다.
    Resource group 기존 리소스 그룹을 선택하거나 새 리소스 그룹을 만듭니다. 가상 네트워크와 동일한 지역에 있어야 합니다.
    인스턴스 세부 정보
    이름 myPrivateEndpoint와 같은 엔드포인트 이름을 입력합니다.
    네트워크 인터페이스 이름 네트워크 인터페이스의 이름(예: myInterface)을 입력합니다
    지역 프라이빗 엔드포인트에 대한 위치를 ​​선택합니다. 가상 네트워크와 동일한 지역에 있어야 합니다. API Management 인스턴스가 호스트되는 지역과 다를 수 있습니다.
  5. 페이지 아래쪽에서 리소스 탭 또는 다음: 리소스 단추를 선택합니다. API Management 인스턴스에 대한 다음 정보가 이미 채워져 있습니다.

    • 구독
    • Resource group
    • 리소스 이름
  6. 리소스대상 하위 리소스에서 게이트웨이를 선택합니다.

    Azure Portal에서 프라이빗 엔드포인트 만들기

  7. 화면 하단에서 Virtual Network 탭 또는 다음: Virtual Network 단추를 선택합니다.

  8. 네트워킹 탭에서 다음 정보를 입력하거나 선택합니다.

    설정
    가상 네트워크 가상 네트워크를 선택합니다.
    서브넷 서브넷을 선택합니다.
    개인 IP 구성 대부분의 경우 동적으로 IP 주소 할당을 선택합니다.
    애플리케이션 보안 그룹 필요에 따라 애플리케이션 보안 그룹을 선택합니다.
  9. 화면 아래쪽에서 DNS 탭 또는 다음: DNS 단추를 선택합니다.

  10. 프라이빗 DNS 통합에서 다음 정보를 입력하거나 선택합니다.

    설정
    프라이빗 DNS 영역과 통합 (기본값)를 그대로 둡니다.
    Subscription 구독을 선택합니다.
    Resource group 리소스 그룹을 선택합니다.
    프라이빗 DNS 영역 기본값은 (new) privatelink.azure-api.net로 표시됩니다.
  11. 화면 아래쪽에서 태그 탭 또는 다음: 태그 단추를 선택합니다. 원하는 경우 태그를 입력하여 Azure 리소스를 구성합니다.

  12. 검토 + 만들기를 선택합니다.

  13. 만들기를 선택합니다.

인스턴스에 대한 프라이빗 엔드포인트 연결 나열

프라이빗 엔드포인트가 만들어지면 포털에 있는 API Management 인스턴스의 인바운드 프라이빗 엔드포인트 연결 페이지 목록에 표시됩니다.

또한 프라이빗 엔드포인트 연결 - 서비스별 목록 REST API를 사용하여 서비스 인스턴스에 대한 프라이빗 엔드포인트 연결을 나열할 수도 있습니다.

엔드포인트의 연결 상태를 확인합니다.

  • 승인됨은 API Management 리소스에서 연결을 자동으로 승인했음을 나타냅니다.
  • 보류 중은 리소스 소유자가 연결을 수동으로 승인해야 함을 나타냅니다.

보류 중인 프라이빗 엔드포인트 연결 승인

프라이빗 엔드포인트 연결이 보류 중 상태인 경우 API Management 인스턴스의 소유자가 해당 연결을 사용하기 전에 수동으로 승인해야 합니다.

충분한 권한이 있는 경우 포털에 있는 API Management 인스턴스의 프라이빗 엔드포인트 연결 페이지에서 프라이빗 엔드포인트 연결을 승인합니다.

또한 API Management 프라이빗 엔드포인트 연결 - 만들기 또는 업데이트 REST API를 사용할 수도 있습니다.

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{apimServiceName}privateEndpointConnections/{privateEndpointConnectionName}?api-version=2021-08-01

필요에 따라 공용 네트워크 액세스 사용 안 함

필요에 따라 API Management 인스턴스로 들어오는 트래픽을 프라이빗 엔드포인트로만 제한하려면 공용 네트워크 액세스를 사용하지 않도록 설정합니다. API Management 서비스 - 만들기 또는 업데이트 REST API를 사용하여 publicNetworkAccess 속성을 Disabled로 설정합니다.

참고 항목

publicNetworkAccess 속성은 VNet 삽입과 같은 다른 네트워킹 구성이 아니라 프라이빗 엔드포인트로 구성된 API Management 인스턴스에 대한 공용 액세스를 사용하지 않도록 설정하는 데만 사용할 수 있습니다.

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{apimServiceName}?api-version=2021-08-01
Authorization: Bearer {{authToken.response.body.access_token}}
Content-Type: application/json

다음 JSON 본문을 사용합니다.

{
  [...]
  "properties": {
    "publicNetworkAccess": "Disabled"
  }
}

프라이빗 엔드포인트 연결 유효성 검사

프라이빗 엔드포인트가 만들어지면 포털에서 해당 DNS 설정을 확인합니다.

  1. Azure Portal에서 API Management 서비스로 이동합니다.

  2. 왼쪽 메뉴에서 네트워크>인바운드 프라이빗 엔드포인트 연결을 선택하고 만든 프라이빗 엔드포인트를 선택합니다.

  3. 왼쪽 탐색 영역에서 DNS 구성을 선택합니다.

  4. 프라이빗 엔드포인트의 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. 

다음 단계