次の方法で共有


受信プライベート エンドポイントを使用して 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 インスタンスを外部または内部の仮想ネットワークに挿入できません。

制限事項

前提条件

  • 既存の 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

プライベート エンドポイントの構成手順

  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 インスタンスに関する以下の情報は、既に入力されています。

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

    Azure portal でプライベート エンドポイントを作成するための設定を示すスクリーンショット。

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

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

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

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

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

    1. 画面の下部にある [次へ: 確認と作成] ボタンを選択します。
  12. [作成] を選択します

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

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

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

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

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

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

十分なアクセス許可がある場合は、ポータルの API Management インスタンスの [プライベート エンドポイント接続] ページで、プライベート エンドポイント接続を承認してください。 接続のコンテキスト (...) メニューで、[承認] を選択します。

また、API Management の Private Endpoint Connection - Create Or Update REST API を使用して、保留中のプライベート エンドポイント接続を承認することもできます。

パブリック ネットワーク アクセスを必要に応じて無効にする

必要に応じて、API Management インスタンスへの受信トラフィックをプライベート エンドポイントのみに制限するには、パブリック ネットワーク アクセスを無効化します。

Note

パブリック ネットワーク アクセスを無効にできるのは、プライベート エンドポイントで構成された API Management インスタンスにおいてだけであり、VNet インジェクションなどの他のネットワーク構成では無効にできません。

Azure CLI を使用してパブリック ネットワーク アクセスを無効にするには、API Management インスタンスとリソース グループの名前を置き換えて、次の az apim update コマンドを実行します。

az apim update --name my-apim-service --resource-group my-resource-group --public-network-access false

publicNetworkAccess プロパティを Disabled に設定することで、API Management Service - Update REST API を使用してパブリック ネットワーク アクセスを無効にすることもできます。

プライベート エンドポイント接続の検証

プライベート エンドポイントを作成したら、ポータルでその 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.