App Serviceのアクセス元制御を松竹梅で分けてみた
はじめに
App Serviceのアクセス元制御について、コスト観点から「松竹梅」の3段階に分けて考えていきます。Azure App Serviceを例に書いていますが、他のPaaSサービスにも応用できる考え方を含めるように意識してみました。
各プランごとのコストは以下をご参照ください。(Windowsの場合)
App Serviceとは?
Azure App Serviceとは、Azureで提供されているPaaS(Platform as a Service)サービスです。WebアプリケーションやAPIをデプロイして使用できる機能を提供しています。
ここではインフラ的な側面である「アクセス元制御」について記載していきます。まずセキュリティを考える際には、多層防御の考え方に基づいて設計することが一般的です。
多層防御とは?
多層防御とは、単一の境界に依存せず、複数のセキュリティ層を設けて防御し、攻撃の進行を遅らせる考え方です。各セキュリティ層は、以下のように構成されています。
- 物理的なセキュリティ:データセンターの入館制限や監視システム
- IDとアクセス:認証認可によるユーザーやデバイスの制御
- 境界:DDoS対策やファイアウォールによる外部との境界保護
- ネットワーク:ネットワークのセグメンテーションやトラフィック監視
- コンピューティング:仮想マシンのパッチ適用
- アプリケーション:アプリケーションのセキュリティテストや脆弱性管理
- データ:データ暗号化の実施
App ServiceはPaaSなので、物理的なセキュリティはMicrosoftが管理します。
ここではIDとアクセス、およびネットワークで、どんなアクセス元制御が出来るか見ていきます。簡単に設定できるので、ぜひ設定してセキュリティを強化してみてください!
梅(Freeプラン)
まずは最もコストを抑えた「梅」です。Freeプランで使える機能を見ていきます。
- IDとアクセス:FreeプランではApp Service認証が使えないため、認証認可の仕組みをアプリケーション内で実装する必要があります。
- ネットワーク:Freeプランではプライベート通信(プライベートエンドポイント等)はサポートされていませんが、パブリックIPでのアクセス元制御が可能です。要件にもよりますが、開発期間中など非公開にしたい場合は、自宅やオフィスのパブリックIPを許可リストに登録することで、アクセスを制限できます。「設定」→「ネットワーク」→「公衆ネットワークアクセス」から設定できます。(以下キャプチャのIPアドレスは仮のものなので、実際に設定する際はご自身の正しいパブリックIPを設定してください)
また、App Serviceでは、メインサイトのWebアプリケーションのアクセス元制御に加えて、高度なツール(Kudu) のアクセス制限も設定できます。Kuduとは、デバッグやログ確認のためのツールです。設定画面には「メインサイト」と「高度なツール」のタブがそれぞれ用意されており、両方設定することでセキュリティを強化できます。
なお、App Service側のパブリックな送受信のIPアドレスは「設定」→「ネットワーク」の画面で確認できます。
竹(Basicプラン、Premiumプラン)
竹では、比較的コストがかかるBasicプランやPremiumプランで利用可能な機能を紹介します。
※なお、Standardプランは現在レガシ分類されているため、本記事では割愛します。
-
IDとアクセス:アプリケーション内での認証実装に加えて、App Service認証を使用できます。この機能を使うことで、主要なIDプロバイダー(Entra ID、Google、Apple、Xなど)を簡単に統合できます。設定方法は「設定」→「認証」→「IDプロバイダーを追加」から設定していきます。
具体的な設定方法は以下Microsoft Learnを参照してください。
-
ネットワーク:プライベートエンドポイントやVNet統合が使えるようになります。これにより、アプリケーションのトラフィックをプライベートなネットワーク内からのアクセスに制限できます。ただし、App Serviceが直接VNet内にデプロイされるわけではありません。代わりに、プライベートエンドポイントがVNet内にデプロイされ、そのエンドポイントを介してプライベート通信が可能になります。
プライベートエンドポイントを使用する際には、仮想ネットワークやプライベートDNSゾーンの構成が必要になります(具体的な料金は構成によって異なるため割愛します)。
設定方法は「設定」→「ネットワーク」→「プライベートエンドポイント」から設定していきます。
プライベートエンドポイントの設定方法は以下Microsoft Learnを参照してください。
受信をプライベートエンドポイントで受ける場合、例えばApp ServiceからSQL Databaseへの送信の通信にはVNet統合が必要になります。
松(App Service Environment)
最後に一番高価なASE(App Service Environment)を見ていきます。ASEはPremiumプランまでとは異なり、VNet内に直接デプロイできます。また、他のプランではコンピューティングリソースを他の顧客と共有するのに対し、ASEでは専用のコンピューティングリソースが割り当てられます。
ASEを使用する場合は、デプロイ時にプランとして「Isolated」を選択します。
- IDとアクセス:ASEではBasicプランやStandardプランと同様に、App Service認証を使用できます。
- ネットワーク:ASEでは、App ServiceをVNet内に直接デプロイでき、プライベートな通信に制限できます。また、内部負荷分散(ILB)を利用することで、アプリケーションをインターネットに公開せず、特定のネットワーク内でのみ利用可能に設定することが可能です。
ASEについては、以下Microsoft Learnを参照してください。
以上です⛄
Discussion