0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Azure Files × IIS で 403 Forbidden!?原因は意外な落とし穴だった

Last updated at Posted at 2025-03-20

Azure Files を IIS でマウントして Web ページをホストしてみた

背景

今回は Azure Files を使って IIS で Web ページをホストする方法 を試しました。

Web サーバーにファイルを配置するには RDP でコピー するのが簡単ですが、毎回手動でコピーするのはなんかカッコ悪い…。そこで Azure Files を使ってストレージ上にファイルを置き、それを IIS にマウント することで、ファイル管理の手間を減らせないか試してみました。

また、実際に試す中で 403 エラーが発生し、アクセス権限の問題を解決する過程 もあったので、その点についても詳しく記録しておきます。

スクリーンショット 2025-03-20 12.02.12.png


環境

  • Azure VM(Windows Server 2022)
  • IIS(Internet Information Services)
  • Azure Files(SMB 3.0)
  • PowerShell を使用してマウント

手順と試行錯誤

① Azure Files の作成とファイルアップロード

まず、Azure Portal で employee-app というファイル共有を作成し、Web ページのファイルをアップロードしました。

📷 Azure Portal でのファイルアップロード
スクリーンショット 2025-03-18 10.42.10.png


② Azure VM に SMB 共有をマウント

Azure Portal の「接続」オプションから、Windows 用のコマンドを取得し、VM の PowerShell で実行。
これにより、Azure Files を Y: ドライブとしてマウントしました。

📷 ドライブのマウント設定
スクリーンショット 2025-03-18 10.44.22.png

📷 エクスプローラーで確認
スクリーンショット 2025-03-18 11.04.20.png

📷 net use コマンドで確認
スクリーンショット 2025-03-18 11.06.36.png


③ IIS の仮想ディレクトリ設定

次に、IIS の仮想ディレクトリを作成し、物理パスとして ¥¥<ストレージアカウント名>¥employee-app(Azure Files)を指定しました。

📷 IIS で仮想ディレクトリの設定
スクリーンショット 2025-03-18 11.11.52.jpg


④ アクセスしてみると 403 Forbidden エラーが発生

iisreset を実行し、ブラウザでアクセスしてみると…

📷 403.14 エラー発生
スクリーンショット 2025-03-18 11.35.46.png

エラーメッセージ:

HTTP Error 403.14 - Forbidden
The Web server is configured to not list the contents of this directory.


⑤ 権限の問題を疑う

403.14 Forbiddenディレクトリの表示が許可されていない場合に発生 するエラー。
ただ、index.html はあるはずなので、 権限の問題の可能性が高い と考えました。

参考にしたサイト
https://jpaztech.github.io/blog/vm/azure-files-user-mount/

上記のサイトを参考に、New-SmbGlobalMapping を試してみることに。


⑥ New-SmbGlobalMapping の実行

New-SmbGlobalMapping とは?
通常、Windows では net use やエクスプローラーを使って Azure Files をマウントすると、そのマウントは 実行したユーザー専用 になります。そのため、異なるユーザー(例えば IIS の IUSR ユーザー)からは、そのマウント先にアクセスできません。

しかし、Windows Server 2019 / Windows 10 以降では New-SmbGlobalMapping コマンドを使うことで、システム全体で Azure Files をマウント できます。このコマンドを使うことで、IIS などのシステムアカウント(IUSR など)もマウントした Azure Files にアクセスできるようになるため、今回の問題解決に役立つと考えました。

📌 ポイント

net use やエクスプローラーでマウントすると、そのマウントは 実行したユーザーのみに適用 される。
IIS で匿名認証を使う場合、IUSR ユーザーがファイルにアクセスする必要がある。
New-SmbGlobalMapping を使うと、すべてのユーザーが Azure Files にアクセス可能になる。
Windows ユーザーがログインしていない状態でも、IIS などのサービスからファイルを参照できる。

実行したコマンド:

$User = "localhost\<ストレージアカウント名>" 
$PWord = ConvertTo-SecureString -String "<ストレージアカウントアクセスキー>" -AsPlainText -Force
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord

New-SmbGlobalMapping -RemotePath \\<ストレージアカウント名>.file.core.windows.net\<ファイル共有名> -Credential $Credential -LocalPath Y: -Persistent $True 

⑦ それでも解決しない…

再度ブラウザを開いてみると…

📷 403エラー再び発生
スクリーンショット 2025-03-18 11.35.46.png

キャッシュを削除しても問題解決せず…。
そこで Get-ChildItem を実行し、ファイルが正しく見えているか確認。
スクリーンショット 2025-03-18 11.42.16.png


⑧ 実はファイル名が原因だった!

ファイルを見直してみると index.html の拡張子が認識されていない ことが判明。

📷 拡張子が認識されていない警告
スクリーンショット 2025-03-18 11.39.42.png

原因は index.html のファイル名の後ろにスペースが入っていた ことだった…。
このせいで IIS から index.html が正しく見えず、403 エラーの原因になっていた。

📷 ファイル名の後ろに謎のスペースがあった

スクリーンショット 2025-03-18 11.46.00.png

📷 アイコンが正常に表示されるように!
スクリーンショット 2025-03-18 11.49.51.png

修正後、再度 IIS をリセットし、アクセスしてみると…

📷 無事にページが表示!
スクリーンショット 2025-03-18 11.50.39.png


まとめ

  • IIS で 403 エラーが出たら、まずは基本を疑え!
  • 今回は 権限設定ではなく、ファイル名のスペース が原因だった
  • 設定やキャッシュを疑う前に、ファイルの存在や名前をチェックするのが大事
  • トラブルシューティングは焦らず前提条件を確認するのが鉄則!
  • 次回からは、まず シンプルなミスを疑う癖をつけよう
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?