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

適用対象: Developer | Basic | Standard | Premium

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 インスタンスを外部または内部の仮想ネットワークに挿入できません。

制限事項

  • 受信 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 既存のリソース グループを選択するか、新しいものを作成します。 仮想ネットワークと同じリージョンに存在する必要があります。
    インスタンスの詳細
    Name エンドポイントの名前 (myPrivateEndpoint など) を入力します。
    ネットワーク インターフェイス名 ネットワーク インターフェイスの名前 (例:「myInterface」) を入力します。
    リージョン プライベート エンドポイントの場所を選びます。 仮想ネットワークと同じリージョンに存在する必要があります。 これは、API Management インスタンスがホストされているリージョンとは異なる場合があります。
  5. [リソース] タブを選択するか、ページ下部の [次へ: リソース] ボタンを選択します。 API Management インスタンスに関する以下の情報は、既に入力されています。

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

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

  7. [仮想ネットワーク] タブ、または画面の下部にある [次: 仮想ネットワーク] ボタンを選択します。

  8. [ネットワーク] で、次の情報を入力または選択します。

    設定
    仮想ネットワーク 仮想ネットワークを選択します。
    Subnet サブネットを選択します。
    プライベート IP 構成 多くの場合では、[IP アドレスを動的に割り当てる] を選択します。
    アプリケーション セキュリティ グループ 必要に応じて、[アプリケーション セキュリティ グループ] を選択します。
  9. [DNS] タブ、または画面下部にある [次へ: DNS] ボタンを選択します。

  10. [プライベート DNS の統合] で、次の情報を入力または選択します。

    設定
    プライベート DNS ゾーンとの統合 既定値の [はい] のままにします。
    サブスクリプション サブスクリプションを選択します。
    Resource group リソース グループを選択します。
    プライベート DNS ゾーン 既定値が表示されます: [(new) privatelink.azure-api.net]
  11. [タグ] タブ、または画面下部にある [次へ: タブ] ボタンを選択します。 必要な場合は、タグを入力して Azure リソースを整理します。

  12. [Review + create](レビュー + 作成) を選択します。

  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 に設定してください。

Note

この 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 アドレスは、プライベート エンドポイントが構成されているサブネットのアドレス空間のプライベート アドレスです。

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

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

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. 

次のステップ