匿名アクセスのユーザー設定って何?
匿名ユーザーって何?
IIS の資料を読んだり、設定を行っていると、匿名ユーザー という言い方が頻繁にでてきます。 匿名ユーザーって、何のことだかわかりますか?
匿名ユーザーは認証されていないユーザー
匿名ユーザーというのは、ひとことでいうと 「認証されていないユーザー」 のことです。
「認証」 (Authenticate) というのは、 「ユーザーを識別すること」 ということです。 ユーザー名とパスワードを入力するなどすることによって本人確認が出来て、誰がアクセスしているか分かることです。
認証の仕組み ~ ブラウザがサーバーに情報を送る
認証するための情報は、 Web クライアント (要は Web ブラウザ) が必要に応じて IIS に送信します。
あなたも経験があると思いますが、ブラウザで何かの情報を見ていると、「ユーザー名とパスワードを入力してください」 という入力ボックスが表示されることがありますよね?
あの入力ボックスは、Web サーバーが 「このコンテンツをみるためには 『認証』 が必要ですよ!」 とブラウザに伝えたことをきっかけに、ブラウザがユーザーに認証情報の入力を促しているものなのです。
ユーザーが認証情報を入力して、ブラウザがそれを Web サーバーに送信します。 Web サーバーはその認証情報を確認して、Web サーバーに登録されたユーザーであればその認証情報を受け入れます。
匿名ユーザーのユーザーとは?
IIS の 匿名ユーザーの設定 をみていると、「匿名ユーザー」 として IUSR_<コンピュータ名> (あるいは IUSR ) という名前のユーザーを指定するところがあることに気付くと思います。
このユーザーは一体何のために設定するのでしょうか?
これを理解するためには、 Windows のセキュリティ機構を少し理解する必要があります。
Windows のセキュリティは 「誰に対して何を許可・拒否するか」 ということで構成されています。 従って、何をするにしても 「その作業を誰がしているか」 ということをシステムが識別することは大変重要なのです。
しかし IIS では、認証しない限り誰がアクセスしてきているか分かりません。
このため、「認証情報が無く、誰がアクセスしているか分からない時は、便宜上このユーザーが IIS を使っていることにする」 という状況のために用意するユーザーアカウントが 「匿名ユーザー」 というアカウント設定なのです。
Windows アカウントと関連付けされる
IIS は Windows アカウントに登録されたユーザーのみを認証ユーザーとして受け入れます。 さらに IIS はユーザー認証した場合、そのユーザーに 「偽装」 (impersonate) を行ってリクエストを処理します。
これにより、HTTP プロトコルで受け渡しされたユーザー情報が Windows アカウントに関連付けされるため、 HTTP リクエスト処理に Windows セキュリティ機構が利用できるようになります。
このような仕組みになっているため、IIS は 「匿名ユーザー」 にも何らかの Windows アカウントを関連付けします。 そして、その匿名ユーザーに対して必要最低限のアクセス許可のみを設定することによって、IIS 及び Windows のセキュリティを高めているのです。