ここでは API Management のネットワーク構成のパターンの特徴を説明します。

API Management のネットワーク構成パターン

API Management のネットワーク構成には、 VNet と接続するインジェクションという構成と接続せず単独で動作させる構成があります。さらに、インジェクションの構成では、 VNet との接続構成によって、外部モードと内部モードの 2 種類の構成方法があります。外部モードは、ネットワーク境界に API Management を配置し、通信の受付はパブリックネットワークから受け付け、通信先は VNet 先へ接続します。また、内部モードは、API Management が内部ネットワークに配置されるモードです。

加えて、最近利用可能になった機能として、プライベートリンクと VNet 統合という機能があります。プライベートリンクは VNet のリソースから API Management への接続を閉域で行う機能です。また、 VNet 統合は API Management から VNet 内のリソースへの接続を閉域で行う機能です。

これらの機能はインジェクションと似ていますが、インジェクションの場合は VNet の中に API Management を設置する構成です。一方でプライベートリンク /VNet 統合の機能は API Management は VNet の外側に設置され通信経路を VNet 内に確保する構成です。

VNet 接続なし

まず、 VNet と接続がないパターンについて説明します。この構成では、 API Management に対する通信はパブリックネットワークを経由します。また、 API Management からバックエンドのシステムへの通信もパブリックネットワークを経由します。

この構成が利用されるシナリオとしては、例えば、 App Service や Function のような Azure のサービスに構築した API に対して API Management 経由でアクセスするように構成することで、共通の処理を容易に追加できるようになります。ここで言う共通の処理とは、例えば、 API の認証や、 API のキャッシュ、 API のログの取得などの処理を指します。

もちろん、バックエンドのシステムが、 Azure 上に構築されていない場合にも、 API Management を介してアクセスするように API Management を構成することは可能です。その際にも同様に、 API の認証や、 API のキャッシュ、 API のログの取得などの共通の処理を追加することができます。

さらに、この構成の場合、バックエンドのシステムで API Management からの通信のみにアクセス元 IP アドレスで制限することで、必ず API Management を経由してアクセスするように制限することができます。

インジェクション外部モード

次に、インジェクションの外部モードについて説明します。この構成では、 API Management に対する通信はパブリックネットワークを経由します。また、 API Management からバックエンドのシステムへの通信は、接続した VNet の内部になります。

この構成が選択されるシナリオとしては、例えば、バックエンドのシステムの構成にデータベースが含まれるなど複数のリソースから構成され、かつ、これらのリソースに対してパブリックネットワークからアクセスさせたくない場合に選択されます。

インジェクション内部モード

次に、インジェクションの内部モードについて説明します。この構成では、 API Management に対する通信は VNet の内部からのみを受け付けます。また、 API Management からバックエンドのシステムへの通信も接続した VNet の内部になります。

この構成が選択されるシナリオとしては、バックエンドのシステムを構成するリソースだけでなく、 API 自体をパブリックネットワークからアクセスさせたくない場合に選択されます。

プライベートリンク

次に、プライベートリンクについて説明します。この構成では、 API Management に対する通信はプライベートネットワークを経由します。また、 API Management からバックエンドのシステムへの通信は、特に設定を行わない限り、パブリックネットワークを経由します。

この構成が選択されるシナリオとしては、 API Management でホスティングしている API を仮想ネットワークの中に引き込むことで、閉域内での通信を実現したい場合に選択されます。また、インジェクションの内部モードとの違いとしては、 API Management を仮想ネットワーク内部に設置しているわけではないため、例えば複数の仮想ネットワークにまたがって API Management を引き込むことが容易に実現できます。

VNet 統合

次に、 VNet 統合について説明します。この構成では、 API Management に対する通信は特に設定を行わない限り、パブリックネットワークを経由します。また、 API Management からバックエンドのシステムへの通信は、接続した VNet の内部になります。

この構成が選択されるシナリオとしては、バックエンドのシステムを構成するリソースが仮想ネットワークの内部に存在する場合に選択されます。この点は、インジェクションの外部モードと同じです。違いとしては、より安価なプランで利用できる一方で、統合先がサブネットとなり、接続したサブネットの IP アドレスを占有すると言うデメリットもあります。

現時点 (2024/1) での制約事項

インジェクションとと Azure Private Link

API Management のネットワークの設定をインジェクション (内部・外部) で設置した後、API Management と Azure Private Link を組み合わせて、API Management を構成する場合について説明します。

この構成の場合、下記のようにインジェクションはサポートされていないと言うエラーが表示されて、 Private Link を作成できません。

Call to Microsoft.ApiManagement/service failed. Error message: Setting up Private Endpoint Connection for API Management service /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/rg-name/providers/Microsoft.ApiManagement/service/apim-name is not supported as it is setup in VirtualNetwork Type: Internal. Please disable Virtual Network on the service and try again. (Code: NotSupported)

API Management のネットワーク構成の新機能

2023 年 10 月に API Management に Basic v2 と Standard v2 という新しい SKU が発表されました (発表内容) 。これらのプランは単に新しい料金プランというだけではなく、新たなネットワーク構成パターンとして、 VNet 統合の機能を有しています。この機能を利用することで、これまでの API Management では実現することができなかった API Management のアウトバウンド通信を VNet の内部のリソースに対して、閉域内を通信することができる VNet 統合が機能提供されるようになります。

2023 年 1 月時点では、この機能はプレビュー段階であり、まだ東日本リージョンでは提供されていません。ただ、近い将来、この機能が提供されることが予想されます。