適用対象: 開発者 | Basic | Standard | Standard v2 | Premium
API Management インスタンスに対して受信プライベート エンドポイントを構成すると、プライベート ネットワーク内のクライアントが Azure Private Link を介して安全にインスタンスにアクセスできるようになります。
プライベート エンドポイントは、ホストされている 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 インスタンスへの受信トラフィックに対してのみ、プライベート エンドポイント接続を構成できます。
- プライベート エンドポイントを構成 した後 でのみ、API Management インスタンスへのパブリック ネットワーク アクセスを無効にできます。
制限事項
- API Management インスタンスの ゲートウェイ エンドポイント のみが、受信 Private Link 接続をサポートします。
- 各 API Management インスタンスは最大 100 の Private Link 接続をサポートしています。
- 接続は、セルフホステッド ゲートウェイまたはワークスペースのゲートウェイではサポートされていません。
- クラシック API Management レベルでは、プライベート エンドポイントは、内部または外部の仮想ネットワークに挿入されたインスタンスではサポートされていません。
一般的なシナリオ
受信プライベート エンドポイントを使用して、API Management ゲートウェイへのプライベート専用アクセスを直接有効にして、機密データまたはバックエンドの公開を制限します。
サポートされる構成は次のとおりです。
- ファイアウォール経由でクライアント要求を渡し、API Management ゲートウェイにプライベートに要求をルーティングする規則を構成します。
- 外部トラフィックを受信し、API Management ゲートウェイにプライベートにトラフィックをルーティングするように Azure Front Door (または Azure Application Gateway を使用した Azure Front Door) を構成します。 たとえば、「 Private Link を使用して Azure API Management に Azure Front Door Premium を接続する」を参照してください。
前提条件
- 既存の API Management インスタンスがある。 まだない場合は、作成してください。
- プライベート エンドポイントをホストするサブネットを含む仮想ネットワーク。 サブネットには他の Azure リソースを含めることができますが、別のサービスに委任することはできません。
- (推奨) プライベート エンドポイントをテストするための、仮想ネットワーク内の同じまたは異なるサブネットにある仮想マシン。
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の概要」を参照してください。
CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、「 Azure CLI を使用した Azure への認証」を参照してください。
初回使用時にインストールを求められたら、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 portal で API Management インスタンスを作成するときにプライベート エンドポイントを作成することも、既存のインスタンスにプライベート エンドポイントを追加することもできます。 プライベート リンク センターを使用してプライベート エンドポイントを作成することもできます。
既存の API Management インスタンスにプライベート エンドポイントを追加するには:
Azure portal で API Management サービスに移動します。
左側のメニューの [デプロイとインフラストラクチャ] で、[ネットワーク] を選択します。
[受信プライベート エンドポイント接続]>[+ エンドポイント追加] を選択します。
[基本] タブで、次の情報を入力または選択します:
設定 価値 プロジェクトの詳細 サブスクリプション サブスクリプションを選択します。 リソース グループ 既存のリソース グループを選択するか、新しいものを作成します。 仮想ネットワークと同じリージョンに存在する必要があります。 インスタンスの詳細 名前 エンドポイントの名前 (myPrivateEndpoint など) を入力します。 ネットワーク インターフェイス名 ネットワーク インターフェイスの名前 (例:「myInterface」) を入力します。 リージョン プライベート エンドポイントの場所を選びます。 仮想ネットワークと同じリージョンに存在する必要があります。 これは、API Management インスタンスがホストされているリージョンとは異なる場合があります。 画面の下部にある [次へ: リソース] ボタンを選択します。 API Management インスタンスに関する以下の情報は、既に入力されています。
- サブスクリプション
- リソースの種類
- リソース名
[リソース] の [ターゲット サブリソース] で、[ゲートウェイ] を選びます。
重要
API Management では、ゲートウェイ サブリソースのみがサポートされています。 その他のサブリソースはサポートされていません。
画面の下部にある [次: 仮想ネットワーク ] ボタンを選びます。
[仮想ネットワーク] で次の情報を入力または選択します。
設定 価値 仮想ネットワーク 仮想ネットワークを選択します。 サブネット サブネットを選択します。 プライベート IP 構成 多くの場合では、[IP アドレスを動的に割り当てる] を選択します。 アプリケーション セキュリティ グループ 必要に応じて、[アプリケーション セキュリティ グループ] を選択します。 画面の下部にある [次へ: DNS] ボタンを選択します。
[プライベート DNS の統合] で、次の情報を入力または選択します。
設定 価値 プライベート DNS ゾーンとの統合 既定値の [はい] のままにします。 サブスクリプション サブスクリプションを選択します。 リソース グループ リソース グループを選択します。 プライベート 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 インスタンスへの受信トラフィックをプライベート エンドポイントのみに制限するには、公衆ネットワーク アクセス プロパティを無効化します。 パブリック ネットワーク アクセスは、プライベート エンドポイントを構成した後でのみ無効にすることができます。
注
公衆ネットワーク アクセスを無効にできるのは、プライベート エンドポイントで構成された API Management インスタンスにおいてだけであり、他のネットワーク構成では無効にできません。
Azure CLI を使用してクラシック 層のパブリック ネットワーク アクセス プロパティを無効にするには、次の az apim update コマンドを実行し、API Management インスタンスとリソース グループの名前を置き換えます。
az apim update --name my-apim-service --resource-group my-resource-group --public-network-access false
プロパティを publicNetworkAccess
に設定することで、Disabled
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.
Standard v2 レベルでのカスタム ドメイン名の制限
現在、Standard v2 レベルでは、API Management では、ゲートウェイ エンドポイントへのトラフィックを許可するために、パブリックに解決可能な DNS 名が必要です。 ゲートウェイ エンドポイントのカスタム ドメイン名を構成する場合、その名前はプライベート DNS ゾーンに限定されず、パブリックに解決できる必要があります。
ゲートウェイへのパブリック アクセスを制限し、プライベート ドメイン名を構成するシナリオの回避策として、プライベート ドメイン名でトラフィックを受信し、API Management インスタンスのゲートウェイ エンドポイントにルーティングするように Application Gateway を設定できます。 アーキテクチャの例については、この GitHub リポジトリを参照してください。
関連するコンテンツ
-
ポリシー式と
context.request
変数を使って、プライベート エンドポイントからのトラフィックを識別します。 - 「プライベート エンドポイント」、「Private Link」、「Private Link の価格」で詳細を確認する。
- プライベート エンドポイント接続を管理します。
- Azure プライベート エンドポイント接続に関する問題をトラブルシューティングします。
- Resource Manager テンプレートを使って、クラシック API Management インスタンスと、プライベート DNS 統合を使ったプライベート エンドポイントを作成します。