Azure App Serviceのアクセス制限を試してみた

App Service,Azure

Azure App ServiceはAzure上で提供されるWeb アプリケーション ホスティング プラットフォームサービスになります。
リソースデプロイ直後から利用出来ます。

Azure App Serviceですがデフォルト状態では受信アクセスがAnyで許可されています。
インターネットからアクセスが可能な状態でデプロイされます。
すぐに確認出来て便利ではあるのですがセキュリティ的には好ましくない状態となっています。

Azure App Serviceでは受信のアクセス制限が出来ます。
アクセス制限は特定のIP、仮想ネットワーク、サービスタグを指定して設定する事が出来ます。

今回は受信のアクセス制限の設定方法の確認、アクセス拒否(許可していないIPアドレスからのアクセス)の動作確認までやってみました。

※本記事ではプライベートエンドポイントを利用しておりません。

スポンサーリンク

Azure App Serviceのアクセス制限方法を確認

公式サイトの記事を参考に設定を確認してみます。

Azure App Service のアクセス制限を設定する

App Serviceのネットワーク設定

App Serviceのアクセス制御はネットワークのリソースメニューで設定が出来ます。
受信トラフィックに関する設定、送信トラフィックに関する設定があります。
受信、送信それぞれ個別に設定が必要になります。

※今回の内容は受信側のアクセス制御になります。

アクセス制限の場所
ネットワーク設定の受信トラフィックにアクセス制限設定があります。

受信アクセス制限は App Service自体で行う

Azure App Serviceの受信アクセス制限はネットワークセキュリティグループ(NSG)ではありません。
Azure App Serviceのメニュー内にあるアクセス制限を利用します。

※プライベートエンドポイント利用時は除きます。

アクセス制限は複数のルールを設定する事ができます。
優先度の高い順から処理されます。

デフォルトではAllow allのルールが存在しています。
このルールはソースAny、アクションAllowとなっており、外部からのアクセスがすべて許可された状態になっています。

アクセス制限は2つのアドレスに対して個別に設定が出来ます。

    • app名.azurewebsites.net
      • メインサイト
      • サービス系のアクセス
    • app名.scm.azurewebsites.net
      • 高度なツールサイト
      • 管理系のアクセス
アクセス制限設定画面(旧画面)

旧画面です。

デフォルト設定では両方ともにAllow allの規則のみが存在しています。
サービス系、管理系ともに外部からアクセスできる状態になっています。

2023年7月現在では設定画面が変わっています。

アクセス制限設定画面

新画面です。

インターネットアクセス許可の設定が追加されています。
メインサイト、高度なツールサイトという表現に変わっています。
一致しないルールのアクションの設定が追加になっています。

アクセス制限規則の設定項目

IPアドレスでアクセス制限設定する場合を例に設定項目を確認してみます。

規則の設定内容

特定のIPから通信許可(拒否)と言ったようにネットワークセキュリティグループ(NSG)と同様に設定が出来ます。

  •  全般設定
    •  名前
      • 規則の名前
    • アクション
      • 規則に合致した時に通信を許可するか拒否するかの選択
    • 優先度
      • 規則の優先度
      • 優先度の高い(1に近い)方から処理されます
  • ソースの設定
    •  
    • 種類
      • IPアドレス、仮想ネットワーク、サービスタグなどソースの種別
    • IPアドレスブロック
      • 規則に適用するアドレス
    • HTTPヘッダーのフィルター設定

ソースの種類

アクセス制限ではソースの種類を選択する事が出来ます。

ソースの種類
ソースの種類にはIPアドレス(IPv4、IPv6)、仮想ネットワーク、サービスタグがあります。

サービスタグの設定

サービスタグを指定してアクセス制御設定をする事が出来ます。

サービスタグ
NGSと同様にサービスの指定が出来ます。
AzureFrontDoor.BackendなどもありFront Door経由のアクセスしか許可しないと言った設定も可能となっています。
ApplicationinsightsAvailabilityなどもあり可用性テストのみを許可すると言った設定も出来ます。

仮想ネットワークでの制限

仮想ネットワーク(サブネット)を指定してアクセス制御設定をする事が出来ます。
管理画面は仮想ネットワークからのみ許可すると言うような制限も出来ます。

仮想ネットワーク
仮想ネットワーク名、サブネットを指定して設定します。
指定するとサブネットでMicrosoft.Web/serverFarmsへの委任設定が自動的に行われます。

Azure App Serviceのアクセス制限設定して動作確認

こちらで作成したサイトを利用してアクセス制御を確認てみます。

特定のIPアドレスからのアクセスを許可する

特定のIPアドレスからのみ接続許可する設定をやってみます。

IPベースでのアクセス制御

アクセス制限の画面で規則の追加を選択します。

名前を設定します。
アクションは許可を選択します。
優先度を設定します。
ソースの種類でIPアドレスを選択します。
IPアドレスブロックに許可するIPアドレスを入力します。
規則の追加を選択します。

アクセス制限の画面に作成した規則が追加されている事が分かります。
Allow allの規則が無くなりDeny allの規則が作成されています。
この2つの規則により特定のIPアドレスからのアクセスのみが許可されます。

アクセス制限(拒否)されたアクセスは403エラーになる

許可したIPアドレス以外からアクセスして確認してみます。

アクセス確認

許可していないIPアドレスからのアクセスの場合は403エラーが表示されます。

アクセス制限が有効に機能している事が分かりました。

管理画面へのアクセスをサブネットからのみに制限

管理画面へのアクセスをサブネットからに制限してみます。
app名.scm.azurewebsites.netタブで規則追加する事により管理画面へのアクセス制御する事が出来ます。

仮想ネットワークへのアクセス許可
名前を設定します。
アクションは許可を選択します。
優先度を設定します。
ソースの種類で仮想ネットワークを選択します。
仮想ネットワーク名、サブネット名を選択します。
規則の追加を選択します。
アクセス制限の画面に作成した規則が追加されている事が分かります。
Allow allの規則が無くなりDeny allの規則が作成されています。
特定の仮想ネットワークのみからのアクセスに制限されている事が分かります。

許可していないIPアドレスから管理画面へアクセス

許可していないIPアドレスからAzure App Serviceの管理画面へアクセスしてみます。

 
App ServiceのリソースメニューでSSHを選択します。
移動を選択すると新規タブでApp ServiceにSSH接続を開始します。

アクセス許可していないIPアドレスからアクセスすると403エラーが表示されます。

アクセス制限が有効に機能している事が分かりました。

サービス系と管理画面のアクセス制限を同じにする

サービス系(app名.azurewebsites.net)と管理系(app名.scm.azurewebsites.net)のアクセス制限を同じ設定する事が出来ます。

同一アクセス制限にする
wordpress-testsite.azurewebsites.net と同じ制限にチェックを入れるだけで、同じアクセス制限にする事が出来ます。

最後に

今回はAzure App Serviceの受信アクセスの制限方法について確認してみました。
Azure App Serviceのアクセス制御はIPアドレスによる制限だけではなく、サービスタグによる制限なども可能となっておりとても便利かつ簡単に設定できる事が分かりました。
構築作業期間中や内部向けのサイトなどの場合はアクセス制御を利用して制限しておいた方が良いかと思いました。

スポンサーリンク