Front DoorとNATゲートウェイを利用してApp Serviceを保護する

Kazunori Hamamoto Kazunori Hamamoto
Front DoorとNATゲートウェイを利用してApp Serviceを保護する

はじめに

この記事はAzure App Service Team BlogZero to Heroシリーズの記事に感銘を受けて、和訳&改変&自分で新規執筆した記事です。 この記事を通してWeb Appsの基礎から実運用の方法まで、筆者自身が見直す機会としてシリーズ化して掲載する事にしました。 本家の「Zero to Hero」というフレーズの通り、Azure App Serviceを使ったことの無い方は一人前になれるように、すでに利用している方は知識のアップデートに役立てていただければと思います。

なお、連載の5回目からは筆者オリジナルのコンテンツを掲載しています。目次からまとめて読めますので、是非どうぞ。

【Azure初心者から上級者まで!】Azure App Service を使いこなしてゼロからヒーローになる

概要

この記事は App Service でゼロからヒーロー シリーズの第8回です。 この記事を読むためには初回記事を読み終えていることを想定しています。

前回の記事ではApplication GatewayとAzure Firewallを利用して受信トラフィックと送信トラフィックを制限してApp Serviceを保護する方法を紹介しました。今回は前回の代替手段としてAzure Front DoorとNATゲートウェイを利用してアプリケーションを保護する方法をご紹介します。

WEBアプリケーションを保護する

今回の構成では、受信トラフィックをAzure Front DoorとApp Serviceのアクセス機能制限を制御します。送信トラフィックはNATゲートウェイを利用して制限して構成します。

前回行った、Application GatewayとFirewallとの組み合わせの方法よりも安価で構成できますが、Applicatin Gatewayを利用した柔軟なルーティング機能や、送信する宛先をFQDNで制御する事はできなくなります。

今回の構成を図に表すと以下のような構成となります。

Web Appのトラフィック制御

受信トラフィックを保護する

1. Front Doorを作成する

こちらの記事を参考にしてFront Doorを作成して、バックエンドにApp Serviceを指定します。今回は全てのトラフィックをsigma-zero-to-hero.azurewebsites.netへルーティングするように構成します。

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

App Serviceのアクセス制限を利用してFront Doorからのアクセスのみを受け付けるように設定します。

Azureポータルで、[ネットワーク]メニューに遷移します。[アクセス制限を構成する]をクリックしてアクセス制限の設定画面を表示します。

[規則の追加]をクリックして以下のようにService TagでFront Door Backendを指定して、Front Doorからの接続を許可するように設定します。

以上のようにして、Webアプリは、すべての受信トラフィックがFront Doorを介してアプリにルーティングされます。 Front DoorでWebアプリケーションファイアウォール(WAF)サポートを有効にすることができます。Front Door以外から接続するとApp Serviceのアクセス制限の機能によりHTTPステータスが403が返却されます。

送信トラフィックを保護する

送信トラフィックを制御するにはApp ServiceのリージョンVNET統合の機能を利用する必要があります。この機能を利用する事で、NATゲートウェイを指定したサブネットへApp Serviceを統合することで、すべての送信アドレスがNATゲートウェイを介して送信されるようになります。

1. NATゲートウェイとApp Serviceを含めるためのVNETを作成する

Application GatewayとWeb Appを含めるためのVNETを作成します。VNET作成の詳細はこちらを参照してください。

2. NATゲートウェイを作成する

Azure Portalを開いてAzure サービスにある[リソースの作成] をクリックします。検索項目で [NAT gateway] と入力してNATゲートウェイを作るためのブレードが開いて作成します。

基本タブでは名前や地域を設定します。

NATゲートウェイの作成-基本タブ

  • NAT gateway name : 任意の名前を入力します
  • 地域 : VNETと同じ地域を選択します
  • Availability zone:[None] を選択します
  • Idle timeout : [4] を指定します

Outbound IPタブではNATゲートウェイのIPアドレスを指定します。存在しない場合はこの時点で作成します。ここで指定したIPアドレスでApp Seriviceの送信リクエストが行われます。

NATゲートウェイの作成-Outbound IPタブ

SubnetタブではNATゲートウェイを設定するVNETのサブネットを指定します。次の手順でApp ServiceをVNET統合するのと同じサブネットを指定してください。

NATゲートウェイの作成-Subnetタブ

3. リージョンVNET統合を行う

Azureポータルで、[ネットワーク]メニューに遷移します。[構成するにはここをクリック]をクリックしてVNET統合の設定画面を表示して、App Serviceを含めるサブネットを選択します。

VNET統合

4. App Serviceの送信トラフィックをすべてAzure VNET経由で送信されるように変更する

規定ではRFC1918のトラフィックのみがVNET経由で送信されますが、「WEBSITE_VNET_ROUTE_ALL」をApp Serviceに設定するとすべての送信トラフィックをVNET経由で送信されるようになります。設定方法はこちらを参考にしてください。

5. NATゲートウェイを設定するSubnetを指定する

App ServiceVNET統合をするとVNET内に指定しているNATゲートウェイの設定が消えてしまうようなので、NATゲートウェイのサブネット設定を確認します。

NATゲートウェイのブレードで、[Subnets]メニューに遷移します。サブネットが指定されていない場合はVNET統合をしたApp Serviceと同じサブネットを選択して[Save]をクリックして設定してください。

NATゲートウェイサブネットの確認

6. 送信トラフィックの設定を確認する

App Serviceのコンソールからcurlコマンドを利用する事で簡単に確認をすることができます。App Serviceの開発ツールセクションにある[コンソール]をクリックしてコンソール画面を表示します。

curl -Ss ifconfig.io と入力すると送信IPアドレスが表示されます。NATゲートウエイのOutbound IPで指定したパブリックIPアドレスと同様のアドレスになっているはずです。

コンソールの実行結果

まとめ

おめでとうございます。App Serviceの受信トラフィックと送信トラフィックを制御して保護する事ができるようになりました。Front DoorのWAFを有効にして受信トラフィックで不正なアクセスを検知する事が可能です。送信アドレスをプロトコルやポート、FQDNで制御したい場合は前回の記事と同様にAzure Firewallの利用を検討してください。

お問い合わせはこちらから

問い合わせる
TOP