LoginSignup
3
1

More than 3 years have passed since last update.

Azure Web Apps のステージングスロットで IP アドレス制限

Last updated at Posted at 2018-04-24

はじめに

 本記事の内容は「Azure App Service の静的なアクセス制限」機能が提供されたことで不要となりましたが、過去の記録のために残してあります。

 Azure App Service の静的なアクセス制限は、スロット単位で指定でき、スワップ後もスロットに固定で機能するため、本記事の IP アドレス制限が標準機能で提供された事を意味します。

概要

 Azure App Service (WebApps) は、ステージングパブリッシング機能を提供しています。これにより、WEB サイトの運用者は新しいバージョンの Web サイトを公開する前にステージングスロットでテストを実施し、検証完了後に本番スロットとステージングスロットをスワップする事が可能です。

ステージング環境の IP アドレス制限

 多くの WEB サイトの運用者は検証用のステージングサイトの一般公開を制限したいという要望があります。このため Azure App Service においてもステージングスロットにのみ IP アドレス制限を実施し、本番スロットのみを公開したいという要望があります。またスワップ後もその状態(新しいステージングスロット = 以前の本番スロットの IP アドレス制限の実施)を維持出来なければなりません。

 これを実現するには web.config のルールでホストの環境を識別し、ステージング環境に配置されている場合のみ IP 制限を設定するルールを組み込む方法があります。

サンプル例

正規表現のルールを環境に合わせて修正します。作成した web.config は、本番スロット、ステージングスロットの両方の Azure App Service の site/wwwroot に配置する必要があります。

web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Block unauthorized traffic to staging sites" stopProcessing="true">  
          <match url=".*" />  
            <conditions>  
              <!-- 正規表現でステージグスロットの名前と一致するパターンを指定 -->  
              <add input="{HTTP_HOST}" pattern="^hogeogewebsite\-staging\." />  
              <!-- 正規表現で許可する IP アドレスパターンをホワイトリストで記述 -->  
              <add input="{REMOTE_ADDR}" pattern="167\.220\.232\.156" negate="true" />  
            </conditions>  
          <action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Site is not accessible" />  
        </rule> 
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1