LAMP開発者のためのWindows Azure講座

第9回 Azure上にPHP+MySQLでアプリを作ってみよう[その2]

この記事を読むのに必要な時間:およそ 5.5 分

IPによるアクセス制限

もっとも,このままデプロイすると全公開されてしまうので,簡単なアクセス制限をかけることにします。LAMP環境の.htaccessに近い働きをするのが,IISのWeb.configです。

Web.configだけでベーシック認証などを行うことはできません。ただ,IPやホスト名によるアクセス制限は可能です。ここでは,以下のようにして,特定のIP(111.222.333.444と555.666.777.888)以外からのアクセスは,403エラーが表示されるようにリライトしています。

リスト4 Web.config


<configuration>

  <!-- 中略  -->

  <system.webServer>

  <!-- 中略  -->

    <rewrite>
      <rules>
        <rule name="AccessControl" stopProcessing="true">
          <match url="^(.*)$" ignoreCase="false" />
          <conditions logicalGrouping="MatchAny">
            <add input="{REMOTE_ADDR}" pattern="111\.222\.333\.444" negate="true" />
            <add input="{REMOTE_ADDR}" pattern="555\.666\.777\.888" negate="true" />
          </conditions>
          <action type="CustomResponse" url="index.php" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

図4のようなエラーが表示されます。

図4 特定のIP以外からは403エラーを表示させる

図4 特定のIP以外からは403エラーを表示させる

なお,上記のREMOTE_ADDR部分は,URL,QUERY_STRINGなどのサーバ変数が利用できます。またpatternは正規表現なので,特定のURLに対するアクセスなどを細かく制御することができます。negate以下を削除すると,特定のIPからのアクセスについて,403コードを返す動作になります。

リモートデスクトップ接続の設定

また,デプロイ後にリモートデスクトップ接続ができるように設定しておきましょう。Azureでは,LAMP環境のようにSSHを使ってログを確認したりファイルを修正,管理したりといった手段がありません。Azure上でサーバの挙動を確認するてっとりばやい方法は,やはりリモートデスクトップ接続です。

リモートデスクトップ接続のセットアップは,Visual StudioなどのGUIを用いる方法が用意されています。ただ,SSHの鍵作成などと比べるとやや面倒なので,できるだけコマンドラインでセットアップしたほうがいいと思います。そのガイドがこちらです。

デプロイ後にリモートデスクトップ接続すると,図5のように,Fドライブがローカルドライブとしてマウントされ,また,Eドライブのapproot以下にindex.phpなどのファイルが展開されていることがわかります。また,通常のローカルサーバのように,タスクマネージャでプロセスの動作確認を行なったり,メモ帳でエラーログの確認などを行なったりできます。

図5 リモートデスクトップ接続でWebRoleにアクセスした画面

図5 リモートデスクトップ接続でWebRoleにアクセスした画面

ちなみに,ブラウザ上での表示は図6になります。

図6 経費精算アプリのサンプル画面

図6 経費精算アプリのサンプル画面

以上で,サンプルアプリのAzure上での動作確認は終わりです。もっとも,このレベルの小さなアプリなら社内サーバやVPSで十分です。Azureを利用するなら,もっと目に見えるかたちでのメリット,コスト効果がほしいところです。次回は,そのあたりを整理したいと思います。

著者プロフィール

齋藤公二(さいとうこうじ)

インサイト合同会社

『月刊Computerwold』『CIO Magazine』(IDGジャパン)の記者,編集者などを経て,2011年11月インサイト合同会社設立。エンタープライズITを中心とした記事の執筆,編集のほか,OSSを利用した企業Webサイト,サービスサイトの制作を担当する。