VNetにAPI Gatewayをデプロイし、Application Gatewayで保護する

このエントリは2020/03/30現在の情報に基づいています。将来の機能追加や変更に伴い記載内容との乖離が発生する可能性があります。

先日以下のエントリを発見した。

Integrating API Management with App Gateway
https://techcommunity.microsoft.com/t5/azure-paas-developer-blog/integrating-api-management-with-app-gateway/ba-p/1241650

このエントリは自動翻訳で日本語にもできるが、単純に日本語化するのであれば自動翻訳とあまり変わらないので、設定時のはまりどころをメモしておく。なお、以下ではAPI ManagementをAPIM、Application GatewayをAppGWと略して記述する。

AppGWとAPIMの統合

文字通りのドキュメントに従って、AppGWおよびAPIMのインストールや設定を実施する。

内部 VNET 内の API Management と Application Gateway の統合
https://docs.microsoft.com/ja-jp/azure/api-management/api-management-howto-integrate-internal-vnet-appgateway
Integrate API Management in an internal VNET with Application Gateway
https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-integrate-internal-vnet-appgateway

はまりどころ、注意点など

VNetへのデプロイ

VNetにAPIMをデプロイするには、DeveloperもしくはPremiumプランでなければならない(BasicおよびStandardでは下図の「仮想ネットワーク」が表示されない)。また、選択するサブネットはAPIM専用、かつ/29以上にしておく必要がある。もしサブネットに別のリソースが存在するとデプロイに失敗する。

Azure API Management で仮想ネットワークを使用する方法
https://docs.microsoft.com/ja-jp/azure/api-management/api-management-using-with-vnet
How to use Azure API Management with virtual networks
https://docs.microsoft.com/en-us/azure/api-management/api-management-using-with-vnet

今回の例では、内部VNetモードとあるので、「内部」を選択する。

内部、外部の違いはドキュメントに記載がある。

外部モード、内部モードの違い

VNET 接続の有効化
https://docs.microsoft.com/ja-jp/azure/api-management/api-management-using-with-vnet#enable-vnet-connection
Enable VNET connection
https://docs.microsoft.com/en-us/azure/api-management/api-management-using-with-vnet#-enable-vnet-connection

内部モードでVNetへのデプロイが完了すると、概要ページでプライベートIPを確認できる(この例では10.1.0.5)。

もしAPIMをデプロイしたVNetのサブネットでNSGを構成している場合、以下のドキュメントに記載のAPIMが使うポートを空けておく必要がある。

ネットワーク構成に関する一般的な問題
https://docs.microsoft.com/ja-jp/azure/api-management/api-management-using-with-vnet#common-network-configuration-issues
Common Network Configuration Issues
https://docs.microsoft.com/en-us/azure/api-management/api-management-using-with-vnet#-common-network-configuration-issues

カスタム ドメインの設定

デフォルトのドメイン(azure-api.net)以外に変更したいなら、以下のドキュメントに従って構成する。なお、従量課金の場合、Gatewayエンドポイントのみカスタムドメインを適用できる。Premiumの場合、複数のホスト名をGatewayに指定できる。

カスタム ドメイン名の構成
https://docs.microsoft.com/ja-jp/azure/api-management/configure-custom-domain
Configure a custom domain name
https://docs.microsoft.com/en-us/azure/api-management/configure-custom-domain

カスタムドメインを追加する場合、証明書(.pfx形式)が必要。エンドポイントをAppGWで保護する場合にはV1、V2で必要な証明書が異なるので注意。必要な証明書は以下のドキュメントに記載がある。

Azure Application Gateway でバックエンドを許可する証明書を作成する
https://docs.microsoft.com/ja-jp/azure/application-gateway/certificates-for-backend-authentication
Create certificates to allow the backend with Azure Application Gateway
https://docs.microsoft.com/en-us/azure/application-gateway/certificates-for-backend-authentication

証明書のオートローテーションは、SLAが存在するプラン、つまりDeveloperプラン以外でのみ利用可能。そのため、もし証明書のオートローテーションをしたい場合、このシナリオではPremiumプランでのみ実行可能。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中