IIS でのアクセス権限の設定方法

アクセス権限の設定って何?

IIS ではサーバーのセキュリティを守るため、どのユーザーがどのようなことをできるのか、 きめ細かく設定できるように設計されています。

例えば匿名ユーザーが、サーバー上に好き勝手にファイルを作成できては困りますよね?

ですから、デフォルトでは匿名ユーザーはデフォルトでスタティックコンテンツの読み取りだけが出来るように設定されています。

アクセス権限の設定は、必要に応じて変更してください。

読み取り専用のコンテンツを公開するときには、特に何もする必要はありません。

練習問題: user1 のみに対するファイルのアップロード許可

具体例が無いとわかりにくいと思いますので、ここでは具体的な問題を考えて見ましょう。

問題 C:\inetpub\wwwroot がサイトのドキュメントルートであるとする。
C:\inetpub\wwwroot\incoming というディレクトリを作成する。また、user1, user2 という二つのユーザーを作成する。

user1, user2 両方に incoming ディレクトリ内のファイルの読み取りを許可し、 user1 にファイルアップロードを許可したい。どうすればよいか?

それでは、この問題を考えてみましょう。

まずは、incoming という名前のディレクトリにファイルをアップロードするのですから、そのディレクトリを作成する必要がありますよね。

C:\inetpub\wwwroot> md incoming

C:\inetpub\wwwroot>

IIS マネージャの表示を更新すると、incoming ディレクトリが見えます。

このディレクトリのアクセス権限を見てみましょう。

ちなみに、メニューのキャプションは日本語で "アクセス許可" の設定となっていますが、 英語版のキャプションは "Edit Permissions" です。許可も拒否も設定できるのでここは、 「アクセス権限の編集」 とか、あるいは 「パーミッションの変更」 のほうが良いと思います。

このディレクトリの設定を見ると、次のようであることがわかりました。

Users グループには読み取り 権限が設定されています。Users グループのなかに user1 と user2 両方入っているので、読み取りはできるはずです。

では次に、user1 にファイルのアップロードを許可します。

ファイルのアップロード操作は書き込み権限に当たるので、下図のように user1 に対して 変更 権限を与えます。

試しに HTTP PUT リクエストを利用してファイルをアップロードします。

HTTP PUT リクエストを簡単に説明すると、PUT /incoming/foo.txt という要求をサーバーに送ると、 /incoming ディレクトリの中に foo.txt という名前のファイルを作成し、PUT リクエストボディの内容が foo.txt に格納されます。

user1 の基本認証を設定し、PUT リクエストを送信します。

incoming ディレクトリ内に作成するファイルの名前は file1.txt であり、その中身は "Hello, world!" という文字にします。

レスポンスのステータスが 201 Created です。これは正しくファイルが作成されたことを示しています。

試しに GET リクエストにして、ファイルを要求してみましょう。

このように、確かにレスポンスステータスが 200 OK であり、 レスポンスの中身として、PUT リクエストで送信した "Hello, world!" という文字も返されていることがわかります。

さらに、user2 を使って GET リクエストで file1.txt を取得してみましょう。

同様の手順で user2 を使って、/incoming/file2.txt を作成してみましょう。 設定は user1 の時と同様で、基本認証情報のみが異なります。

図のように、user2 によるファイルの作成は失敗しました。

以上で、意図したとおりの設定に出来たことが確認できました。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Web/DB プログラミング徹底解説