Azure App Service / Web Apps、ウェブサイトへのアクセスを制限する[その2]

Azure App Service / Web Apps、ウェブサイトへのアクセスを制限する[その1] では、IPアドレス帯で、アクセス制限する方法を説明しました。 [その2]では、Azure AD でのIDプロバイダー認証&認可を説明します。 その前に「認証」と「認可」の違いをしっかり理解してておくことが大事です。英語だと、Authentication、Authorization です。英語でも日本語でも似たような単語なので混同されている場合もよくあるので、このふたつの定義の理解は重要です。(Azure ポータルでは「認可」ではなく、「承認」となっています。) Azure AD を使った認証&認可でのアクセス制限では、認証には、Azure AD を利用し、認可は、特定のAzure AD に所属しているユーザーにアクセス権を与えるのがもっともシンプルです。 実際の設定方法については、「Azure Active Directory ログインを使用するように App Service アプリケーションを構成する方法」を参照してみてください。この認証&認可の設定で、指定したAzure ADに登録されているユーザーのみ、そのウェブサイトにアクセスできるようになります。ステージングウェブサイトであれば、事前にウェブサイトをチェックするべきユーザーにAzure ADのアカウントを発行すれば良い事になります。 [その1]で紹介した、IPアドレス帯での制限と比較すると、AzureADを利用する方法は、アクセス元のIPアドレスを制限しないという点で柔軟です。たとえば、外出先からステージングウェブサイト上のコンテンツを確認したい場合など、IPアドレス帯で制限していると、VPN経由でアクセスするなどの手段が必要となりますが`、Azure ADを使う方法の場合、公衆端末からもアクセスできます(ブラウザはプライベートモードを使うなど気を使う必要はあります)。 なお、Azure AD についても最小限の知識は必要になります。特に Azure AD の組織アカウント(独自ドメインを適用していなければ、****.onmicrosoft.com という形式になります)と、Microsoft アカウント(***@live.com、***@hotmail.com、***@outlook.comなどのメールアドレスが使われることが多いです)は、どちらもマイクロソフトのIDプロバイダーですので、混同されてるケースもあります。この違いは、ぜひ理解していただきたいので「Azure Active Directory のドキュメント」から始まるドキュメントは目を通しておくことをお勧めします。 尚、Google、Facebook、Twitter、マイクロソフトIDを使用した認証もApp Service / Web Apps は対応していますが、認可については、ウェブアプリケーション側で実装が必要になるので、Azure AD認証のように設定だけでアクセス制限することはできません。

0

Azure App Service / Web Apps、ウェブサイトへのアクセスを制限する[その1]

App Service / Web Apps を使ってウェブサイトを構築する際、様々な場面で、特定ユーザーのみアクセスを許可したい場面、いわゆるアクセス制限をかけたいという場面があります。 例えば、公開前の作業サイト、いわゆるステージングサーバー。社内からのアクセスのみ許可したいといったイントラネットの拡張サイト。などなど色々なシナリオがあります。 App Service / Web Apps では、フロントエンドのロードバランサーを他のユーザーと共有しているため、必ず、インターネットへ公開する、という仕様のために、上記のような制限を実施したいというニーズがうまれます。 App Service / Web Apps で、ウェブサイトへのアクセスを制限するには以下の方法があります。 アクセス元のIPアドレス帯での制限する Azure Active Directory(Azure AD) での ID プロバイダー 認証&認可 (基本認証・ダイジェスト認証) 基本認証・ダイジェスト認証は、App Service / Web Apps の機能としては提供されていませんので、1. もしくは 2. の方法を考慮します。(ただし、基本認証・ダイジェスト認証が、App Service / Web Apps で利用できないわけではありません。追って紹介したいと思います。) それぞれ特徴がありますが、公衆回線利用の場合など、アクセス元が固定されていない場合は、Azure AD 認証を利用。IPアドレスが固定されているオフィスからのみアクセスであれば、IPアドレス帯での制限が利用しやすいと思います。 アクセス元のIPアドレス帯で制限する この方法は、IIS の設定で実現します。App Service / Web Apps の機能ではありませんが、実際に、IPアドレス帯でアクセス制限が可能です。 具体的には、web.config…

0

Azure Web Apps ならではの方法で www付きドメインをネイキッドドメインにリダイレクトする方法

ウェブサイト運用する際、www付きドメインを使うのか、www無しドメインを使うのか迷うところですが、いずれにせよ、どちらかのドメインに寄せる設定をすると思います。 Azure Web Apps の場合、当然、IISでのテクニックがそのまま利用できるのですが、Web Appsならでは方法をご紹介します。 大まかな流れ 運用サイト用の Web Apps 以外に、リダイレクト専用の Web Apps を運用サイトと同じ App Service Plan で作成する リダイレクト専用の Web Apps の web.config で運用サイトへのリダイレクトを設定する 重要なのは、1.のリダイレクト専用の Web Apps を作成するところです。単一の App Service Plan を利用することで、追加追加費用が発生しないところがポイントです。 リダイレクト専用 Web Apps の web.config ですが、以下の様な単純なリダイレクト(https://examples.com の部分は任意に変更)で問題ありません。ウラをかえすと、単一の Web Apps でリダイレクトを制御すると設定が多少に複雑になります。 <?xml version="1.0" encoding="UTF-8"?><configuration>    <system.webServer>        <httpRedirect enabled="true" destination="https://examples.com" exactDestination="true" httpResponseStatus="Permanent" />    </system.webServer></configuration> IIS  マネージャを使って設定する場合、HTTP…

0

Let’s Encrypt を使って Azure Web Apps でのhttps通信を設定する

Azure Web Apps 拡張機能(Site Extention)の「Azure Let's Encryption」を使ってHTTPS通信を設定する方法をまとめておきます(いわゆるSSLを張るというやつです)。goorooの「"Let's Encrypt" Azure Web Apps the Free and Easy Way 」に記載されていることの手順と注意すべき点の解説です。「"Let's Encrypt" Azure Web Apps the Free and Easy Way 」では、一部、Powershell を使って作業していますが、この投稿では、すべて、ポータル作業で実施していますので、より簡単な作業になっていると思います。 前提 ここで使用している Azure Let's Encryption のバージョンは 0.4.4 です。将来的に、設定方法が変わる可能性があるかもしれません。 App Service Planは、Basic 以上が必要です。 現在、Let's Encryptはパブリックベータ中という事もご留意ください。 Let's Encrypt については 本家サイトをご参照ください https://letsencrypt.org/ 準備 Azure Web Apps の作成 カスタムドメインの設定 この2つは、特に迷うことはないとおもいますので、通常通り設定します。 この際、Resource…

0

Azure Web Appsでの改ざん検知をWeb ジョブとSchedulerを組み合わせで実施する

Azure App Service の Web App でPowershellを使って簡易的に改ざん検知を実施する方法をサンプルスクリプトも含めて紹介します。 概要 Powershell で、改ざんされていないファイル群のハッシュを作成し保存し、定期的に、そのデータと、現在のハッシュデータを比較し、相違があればメールを送信するというスクリプトサンプルです。 事前準備 このスクリプトを実行するにあたって、別途SMTPサーバーが必要です。自前のSMTPサーバーを利用しても、Azureのマーケットプレイスで取得できる、Sendgrid (無料プランでOKです)を使っても構いません(以下の例では、Sendgridを利用しています)。 手順1スクリプトの作成 作成するPowershell スクリプトは、以下の2つです。 ハッシュ情報DBの作成Powershellスクリプト(例:CreateHashDb.ps1) $loc = "D:\home\site\wwwroot" $ignore = @("bin",”temp2”); $ignoreExt =@("*.exe"); $dbPath = "D:\home\site\integritychecker.xml"; $files = Get-ChildItem -Path $loc -Recurse -Exclude $ignoreExt | ? { !$_.PSIsContainer } | % { $relative = $_.FullName.Replace($loc,""); $nomatch = $true; foreach ($folder in $ignore) {…

0