プライベート エンドポイントを使って API Management に非公開で接続する

API Management インスタンスに対してプライベート エンドポイントを構成すると、プライベート ネットワーク内のクライアントが Azure Private Link を介して安全にインスタンスにアクセスできるようになります。

  • プライベート エンドポイントでは、Azure VNet アドレス空間の IP アドレスが使用されます。

  • プライベート ネットワーク上のクライアントと API Management 間のネットワーク トラフィックは、VNet および Microsoft バックボーン ネットワーク上の Private Link を経由することで、パブリック インターネットにさらされないようにします。

  • カスタム DNS 設定または Azure DNS プライベート ゾーンを構成して、API Management のホスト名をエンドポイントのプライベート IP アドレスにマップします。

プライベート エンドポイントを使用した API Management へのセキュリティで保護された接続を示す図。

プライベート エンドポイントと Private Link を使うと、次のことが可能になります。

  • API Management インスタンスへの複数の Private Link 接続を作成します。

  • プライベート エンドポイントを使って、安全な接続でインバウンド トラフィックを送信します。

  • ポリシーを使って、プライベート エンドポイントから送信されるトラフィックを区別します。

  • 受信トラフィックをプライベート エンドポイントのみに制限し、データ流出を防ぎます。

重要

  • プライベート エンドポイントに対する API Management のサポートは、現在プレビュー段階です。
  • プライベート エンドポイントを有効にするには、API Management インスタンスが既に外部または内部の仮想ネットワークで構成されていない必要があります。
  • プレビュー期間中、プライベート エンドポイント接続では、API Management インスタンスへの受信トラフィックのみがサポートされます。 送信トラフィックはサポートされません。

可用性

重要

この機能は、API Management の PremiumStandardBasicDeveloper レベルで使用できます。

制限事項

  • 現在、Private Link 接続をサポートしているのは、API Management インスタンスのゲートウェイ エンドポイントのみです。
  • 現在、各 API Management インスタンスは最大 100 の Private Link 接続をサポートしています。
  • セルフホステッド ゲートウェイでは接続はサポートされていません。

前提条件

  • 既存の API Management インスタンスがある。 まだない場合は、作成してください
    • API Management インスタンスは stv2 コンピューティング プラットフォームでホストされている必要があります。 たとえば、新しいインスタンスを作成するか、既に Premium サービス レベルのインスタンスがある場合は、ゾーン冗長を有効にしてください。
    • 外部または内部仮想ネットワークにインスタンスをデプロイ (挿入) しないでください。
  • プライベート エンドポイントをホストする仮想ネットワークとサブネット。 このサブネットには他の 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. [プライベート エンドポイントの作成][基本] タブで、次の情報を入力または選択します。

    設定
    プロジェクトの詳細
    サブスクリプション サブスクリプションを選択します。
    Resource group 既存のリソース グループを選択するか、新しいものを作成します。 仮想ネットワークと同じリージョンに存在する必要があります。
    インスタンスの詳細
    名前 エンドポイントの名前 (myPrivateEndpoint など) を入力します。
    リージョン プライベート エンドポイントの場所を選びます。 仮想ネットワークと同じリージョンに存在する必要があります。 これは、API Management インスタンスがホストされているリージョンとは異なる場合があります。
  5. [リソース] タブを選択するか、ページ下部の [次へ: リソース] ボタンを選択します。 API Management インスタンスに関する以下の情報は、既に入力されています。

    • サブスクリプション
    • Resource group
    • リソース名
  6. [リソース][ターゲット サブリソース] で、[ゲートウェイ] を選びます。

    Azure portal でプライベート エンドポイントを作成する

  7. [構成] タブを選択するか、 [次へ: 構成] ボタン (画面の下部にあります) を選択します。

  8. [構成] で、次の情報を入力または選択します。

    設定
    ネットワーク
    仮想ネットワーク 仮想ネットワークを選択します。
    Subnet サブネットを選択します。
    プライベート DNS の統合
    プライベート DNS ゾーンとの統合 既定値の [はい] のままにします。
    サブスクリプション サブスクリプションを選択します。
    Resource group リソース グループを選択します。
    プライベート DNS ゾーン 既定値の [(新規) privatelink.azure-api.net] のままにします。
  9. [Review + create](レビュー + 作成) を選択します。

  10. [作成] を選択します

インスタンスへのプライベート エンドポイント接続の一覧表示

プライベート エンドポイントが作成されると、ポータルの API Management インスタンスの [プライベート エンドポイント接続] ページの一覧に表示されます。

また、プライベート エンドポイント接続 - サービス別一覧 REST API を使って、サービス インスタンスへのプライベート エンドポイント接続の一覧を表示することもできます。

エンドポイントの接続状態に注意してください。

  • [承認済み] は、API Management リソースが自動的に接続を承認したことを示します。
  • [保留中] は、リソース所有者が接続を手動で承認する必要があることを示します。

保留中のプライベート エンドポイント接続を承認する

プライベート エンドポイント接続が保留状態の場合、API Management インスタンスの所有者は、その接続を使用する前に手動で承認する必要があります。

十分なアクセス許可がある場合は、ポータルの API Management インスタンスの [プライベート エンドポイント接続] ページで、プライベート エンドポイント接続を承認してください。

また、API Management のプライベート エンドポイント接続 - 作成または更新 REST API を使うこともできます。

PATCH 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 を使います。

PATCH 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. ポータルで、[Private Link センター] に移動します。
  2. [プライベート エンドポイント] を選び、作成したプライベート エンドポイントを選びます。
  3. 左側のナビゲーションで、[DNS の構成] を選びます。
  4. プライベート エンドポイントの DNS レコードと IP アドレスを確認します。 この IP アドレスは、プライベート エンドポイントが構成されているサブネットのアドレス空間のプライベート アドレスです。

仮想ネットワークでのテスト

仮想ネットワークに設定した仮想マシンに接続します。

nslookupdig などのユーティリティを実行し、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. 

次のステップ