この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。
はじめに
AppService から Azure の PaaS である SQLDB や Redis をそのまま利用しようとするとパブリック IP での接続になります。また SQLDB では Azure サービス全体からの接続を許可する必要があるため、他の Azure 利用ユーザーからも接続試行が可能になり、セキュリティ上問題になる場合もありました。
AppService と PaaS との接続を以下に示す様なプライベート接続構成とすることで PaaS 側は仮想ネットワークからのみのアクセスに制限できるためセキュリティが向上し、且つ AppService 側はパブリック IP を介さないことから大量アクセス時の SNAT ポート枯渇への対策にもなります。
ここでは、SQLDB と Redis で考えられる構成例とメリットとデメリットを記載します。
※AppService Environment ILB を構成せず通常の AppService にて閉域網からのみ接続を受け付けるような構成をとることも可能ですが、ここではその構成ではありません。
構成
・As-Is:通常の構成案
ワーカー (WebApps) の送信 IP から直接接続する構成です。
・To-Be:プライベート接続構成案
To-Be は SNAT ポートを使用しないプライベート接続での構成です。構成のポイントを記載します。
- Azure サービスへは、パブリック IP (SNAT ポート) を介さずアクセス可能
- サービスエンドポイント及びプライベートエンドポイントを使用する
- サービスエンドポイント
- VNet 内のプライベート IP がパブリック IP を必要とせず、Azure のバックボーンネットワークを介して、各種サービスのエンドポイントに接続できる機能。
- 名前解決は パブリック IP で解決されるが、ルーティング時にバックボーンを通過する。
- プライベート接続したいリソースの設定にて、仮想ネットワークを指定する。
- プライベートエンドポイント
- 接続元/接続先にパブリック IP を使用せずに、Azure のサービスに仮想ネットワークを接続できる機能。
- VNet のプライベート IP を使用して、サービスを実質的に VNet に取り込める。
- 名前解決は、プライベート DNS ゾーンによりローカルアドレスに解決される。
- プライベート接続したいリソースの設定にて、仮想ネットワークを指定する。
- サービスエンドポイント
- サービスエンドポイント及びプライベートエンドポイントを使用する
- 外部 Web サービスは NAT Gateway を使用する
- Azure リソースであるパブリック IP を使用/固定でき、SNAT ポートを豊富 (64,000個/IP) に使用可能。
- 外部 Web サービスが固定 IP を求めている場合に対応可能 (AppService ではスタンプ毎の送信 IP となるため)。
- AppService のインスタンス当たりの SNAT ポート (128個/インスタンス) から解放される。
- Azure リソースであるパブリック IP を使用/固定でき、SNAT ポートを豊富 (64,000個/IP) に使用可能。
構成した結果
SQLDB
SQLDB のサービスエンドポイントを構成すると、有効なルートに SQLDB のパブリック IP が追加され、Azure全体への許可が不要になります。
通常、ルートは確認出来ませんが、VM を構成することで NIC から有効なルートを確認できます。
Redis
Redis のプライベートエンドポイントを構成すると、AppService (=VNet 内のリソース) の Redis に対する名前解決はプライベート DNS ゾーンによりローカルアドレスに解決されます。また、Redis へのアクセスはローカルアドレスを保持する NIC 経由で Redis へアクセスするようになります。
まとめ
メリット
- SQLDB は Azure サービス全体からのアクセスを拒否でき、セキュリティが高まります。
- Redis は仮想ネットワークからのみのアクセスに制限でき、セキュリティが高まります。
- 外部へのアクセスは NAT Gateway を使用することで、送信 IP の固定化や SNAT ポートの枯渇に対応可能です。
- Azure Monitor Private Link スコープを使用すればよりセキュアにモニタリング可能です。
- その他、サービスエンドポイント・プライベートエンドポイントに対応している PaaS であれば、AppService に限らず VM でも同様のメリットが得られます。
デメリット・注意点
- サービスエンドポイント及び NAT Gateway については、リージョンVNET統合が必要になります。
- AppService プランによっては、Pv2 を使用する必要があります。最新のスケールユニットでは Standard でリージョンVNET統合が使用できますので、Pv3 で作成後 Standard にスケールダウンしましょう。
- プライベートエンドポイントや NAT Gateway は別途料金が掛かります。
参考URL
Reducing SNAT Port consumption in Azure App Services | Developer Support (microsoft.com)
Azure Virtual Network とのアプリの統合 – Azure App Service | Microsoft Docs
Azure Private Link を使用して、ネットワークを Azure Monitor に安全に接続する – Azure Monitor | Microsoft Docs
Azure 仮想ネットワーク サービス エンドポイント | Microsoft Docs
Azure Private Link とは | Microsoft Docs
価格 – Azure Private Link | Microsoft Azure
Virtual Network の価格 | Microsoft Azure
この記事により、AppService 構成の考慮の一助となれば幸いです。