受信プライベート エンドポイントを使用して API Management に非公開で接続する
適用対象: 開発者 | Basic | Standard | Standard v2 | Premium
API Management インスタンスに対して受信プライベート エンドポイントを構成すると、プライベート ネットワーク内のクライアントが Azure Private Link を介して安全にインスタンスにアクセスできるようになります。
Note
Standard v2 レベルでのプライベート エンドポイントのサポートは、現在、限定プレビュー段階です。 サインアップするには、このフォームに入力してください。
プライベート エンドポイントは、ホストされている Azure 仮想ネットワークの IP アドレスを使用します。
プライベート ネットワーク上のクライアントと API Management 間のネットワーク トラフィックは、仮想ネットワークおよび Microsoft バックボーン ネットワーク上の Private Link を経由することで、パブリック インターネットにさらされないようにします。
カスタム DNS 設定または Azure DNS プライベート ゾーンを構成して、API Management のホスト名をエンドポイントのプライベート IP アドレスにマップします。
プライベート エンドポイントと Private Link を使うと、次のことが可能になります。
API Management インスタンスへの複数の Private Link 接続を作成します。
プライベート エンドポイントを使って、安全な接続でインバウンド トラフィックを送信します。
ポリシーを使って、プライベート エンドポイントから送信されるトラフィックを区別します。
受信トラフィックをプライベート エンドポイントのみに制限し、データ流出を防ぎます。
Standard v2 インスタンスへの受信プライベート エンドポイントと送信仮想ネットワーク統合を組み合わせて API Management クライアントとバックエンド サービスのエンドツーエンドのネットワーク分離を提供します。
重要
- API Management インスタンスへの受信トラフィックに対してのみ、プライベート エンドポイント接続を構成できます。
制限事項
- 受信 Private Link 接続をサポートしているのは、API Management インスタンスのゲートウェイ エンドポイントのみです。
- 各 API Management インスタンスは最大 100 の Private Link 接続をサポートしています。
- 接続は、セルフホステッド ゲートウェイまたはワークスペースのゲートウェイではサポートされていません。
- クラシック 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 |
プライベート エンドポイントの構成手順
サブスクリプションで使用可能なプライベート エンドポイントの種類を取得する
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 を使ってプライベート エンドポイントを作成すると、作成プロセスの一環としてネットワーク ポリシーは自動的に無効化されます。
プライベート エンドポイントの作成 - ポータル
API Management インスタンスのプライベート エンドポイントは、Azure portal で作成できます。
クラシック API Management レベルでは、インスタンスの作成時にプライベート エンドポイントを作成できます。 既存のインスタンスでは、Azure portal でインスタンスの [ネットワーク] ブレードを使用します。
Azure portal で API Management サービスに移動します。
左側のメニューの [デプロイとインフラストラクチャ] で、[ネットワーク] を選択します。
[受信プライベート エンドポイント接続]>[+ エンドポイント追加] を選択します。
[プライベート エンドポイントの作成] の [基本] タブで、次の情報を入力または選択します。
設定 値 プロジェクトの詳細 サブスクリプション サブスクリプションを選択します。 Resource group 既存のリソース グループを選択するか、新しいものを作成します。 仮想ネットワークと同じリージョンに存在する必要があります。 インスタンスの詳細 Name エンドポイントの名前 (myPrivateEndpoint など) を入力します。 ネットワーク インターフェイス名 ネットワーク インターフェイスの名前 (例:「myInterface」) を入力します。 リージョン プライベート エンドポイントの場所を選びます。 仮想ネットワークと同じリージョンに存在する必要があります。 これは、API Management インスタンスがホストされているリージョンとは異なる場合があります。 画面の下部にある [次へ: リソース] ボタンを選択します。 API Management インスタンスに関する以下の情報は、既に入力されています。
- サブスクリプション
- リソースの種類
- リソース名
[リソース] の [ターゲット サブリソース] で、[ゲートウェイ] を選びます。
重要
API Management では、ゲートウェイ サブリソースのみがサポートされています。 その他のサブリソースはサポートされていません。
画面の下部にある [次: 仮想ネットワーク ] ボタンを選びます。
[仮想ネットワーク] で次の情報を入力または選択します。
設定 値 仮想ネットワーク 仮想ネットワークを選択します。 Subnet サブネットを選択します。 プライベート IP 構成 多くの場合では、[IP アドレスを動的に割り当てる] を選択します。 アプリケーション セキュリティ グループ 必要に応じて、[アプリケーション セキュリティ グループ] を選択します。 画面の下部にある [次へ: DNS] ボタンを選択します。
[プライベート DNS の統合] で、次の情報を入力または選択します。
設定 値 プライベート DNS ゾーンとの統合 既定値の [はい] のままにします。 サブスクリプション サブスクリプションを選択します。 Resource group リソース グループを選択します。 プライベート DNS ゾーン 既定値が表示されます: [(new) privatelink.azure-api.net]。 画面の下部にある [次へ: タブ] ボタンを選択します。 必要な場合は、タグを入力して Azure リソースを整理します。
画面の下部にある [次へ: 確認と作成] ボタンを選択します。 [作成] を選択します
インスタンスへのプライベート エンドポイント接続の一覧表示
プライベート エンドポイントが作成され、サービスが更新されると、ポータルの API Management インスタンスの [受信プライベート エンドポイント接続] ページの一覧に表示されます。
エンドポイントの接続状態に注意してください。
- [承認済み] は、API Management リソースが自動的に接続を承認したことを示します。
- [保留中] は、リソース所有者が接続を手動で承認する必要があることを示します。
保留中のプライベート エンドポイント接続を承認する
プライベート エンドポイント接続が保留状態の場合、API Management インスタンスの所有者は、その接続を使用する前に手動で承認する必要があります。
十分なアクセス許可がある場合は、ポータルの API Management インスタンスの [プライベート エンドポイント接続] ページで、プライベート エンドポイント接続を承認してください。 接続のコンテキスト (...) メニューで、[承認] を選択します。
また、API Management の Private Endpoint Connection - Create Or Update REST API を使用して、保留中のプライベート エンドポイント接続を承認することもできます。
パブリック ネットワーク アクセスを必要に応じて無効にする
必要に応じて、API Management インスタンスへの受信トラフィックをプライベート エンドポイントのみに制限するには、公衆ネットワーク アクセス プロパティを無効化します。
Note
公衆ネットワーク アクセスを無効にできるのは、プライベート エンドポイントで構成された API Management インスタンスにおいてだけであり、他のネットワーク構成では無効にできません。
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 の設定を確認します。
Azure portal で API Management サービスに移動します。
左側のメニューの [デプロイとインフラストラクチャ] で、[ネットワーク]>[受信プライベート エンドポイント接続] を選択して、作成したプライベート エンドポイントを選択します。
左側のナビゲーションの [設定] で、[DNS 構成] を選択します。
プライベート エンドポイントの DNS レコードと IP アドレスを確認します。 この IP アドレスは、プライベート エンドポイントが構成されているサブネットのアドレス空間のプライベート アドレスです。
仮想ネットワークでのテスト
仮想ネットワークに設定した仮想マシンに接続します。
nslookup
や dig
などのユーティリティを実行し、Private Link 経由でデフォルト ゲートウェイのエンドポイントの IP アドレスを検索します。 次に例を示します。
nslookup my-apim-service.privatelink.azure-api.net
出力には、プライベート エンドポイントに関連付けられたプライベート IP アドレスが含まれます。
仮想ネットワーク内でデフォルト ゲートウェイのエンドポイントに対して開始された API 呼び出しは成功するはずです。
インターネットからのテスト
プライベート エンドポイントのパスの外部から、API Management インスタンスのデフォルト ゲートウェイのエンドポイントを呼び出すことを試みます。 パブリック アクセスが無効になっている場合、出力には状態コード 403
のエラーと、次のようなメッセージが含まれます。
Request originated from client public IP address 192.0.2.12, 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 テンプレートを使って、クラシック API Management インスタンスと、プライベート DNS 統合を使ったプライベート エンドポイントを作成します。
- Private Link を使用して Azure Front Door Premium を Azure API Management に接続する (プレビュー)。