App Serviceのアクセス元制御を松竹梅で分けてみた

2025/01/20に公開

はじめに

App Serviceのアクセス元制御について、コスト観点から「松竹梅」の3段階に分けて考えていきます。Azure App Serviceを例に書いていますが、他のPaaSサービスにも応用できる考え方を含めるように意識してみました。

各プランごとのコストは以下をご参照ください。(Windowsの場合)
https://azure.microsoft.com/ja-jp/pricing/details/app-service/windows/

App Serviceとは?

Azure App Serviceとは、Azureで提供されているPaaS(Platform as a Service)サービスです。WebアプリケーションやAPIをデプロイして使用できる機能を提供しています。

ここではインフラ的な側面である「アクセス元制御」について記載していきます。まずセキュリティを考える際には、多層防御の考え方に基づいて設計することが一般的です。

多層防御とは?

多層防御とは、単一の境界に依存せず、複数のセキュリティ層を設けて防御し、攻撃の進行を遅らせる考え方です。各セキュリティ層は、以下のように構成されています。

  • 物理的なセキュリティ:データセンターの入館制限や監視システム
  • IDとアクセス:認証認可によるユーザーやデバイスの制御
  • 境界:DDoS対策やファイアウォールによる外部との境界保護
  • ネットワーク:ネットワークのセグメンテーションやトラフィック監視
  • コンピューティング:仮想マシンのパッチ適用
  • アプリケーション:アプリケーションのセキュリティテストや脆弱性管理
  • データ:データ暗号化の実施

App ServiceはPaaSなので、物理的なセキュリティはMicrosoftが管理します。
ここではIDとアクセス、およびネットワークで、どんなアクセス元制御が出来るか見ていきます。簡単に設定できるので、ぜひ設定してセキュリティを強化してみてください!

https://learn.microsoft.com/ja-jp/training/modules/describe-security-concepts-methodologies/3-describe-defense-depth

梅(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を参照してください。

https://learn.microsoft.com/ja-jp/azure/app-service/scenario-secure-app-authentication-app-service?tabs=workforce-configuration

  • ネットワーク:プライベートエンドポイントやVNet統合が使えるようになります。これにより、アプリケーションのトラフィックをプライベートなネットワーク内からのアクセスに制限できます。ただし、App Serviceが直接VNet内にデプロイされるわけではありません。代わりに、プライベートエンドポイントがVNet内にデプロイされ、そのエンドポイントを介してプライベート通信が可能になります。
    プライベートエンドポイントを使用する際には、仮想ネットワークやプライベートDNSゾーンの構成が必要になります(具体的な料金は構成によって異なるため割愛します)。
    設定方法は「設定」→「ネットワーク」→「プライベートエンドポイント」から設定していきます。

プライベートエンドポイントの設定方法は以下Microsoft Learnを参照してください。

https://learn.microsoft.com/ja-jp/azure/private-link/create-private-endpoint-portal?tabs=dynamic-ip

受信をプライベートエンドポイントで受ける場合、例えばApp ServiceからSQL Databaseへの送信の通信にはVNet統合が必要になります。

https://learn.microsoft.com/ja-jp/azure/app-service/overview-vnet-integration

松(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を参照してください。

https://learn.microsoft.com/ja-jp/azure/app-service/environment/overview

以上です⛄

Discussion