以前の記事に書いたように、共有フォルダ上の.Netアプリケーションを動かすには caspol による設定と、(場合によっては)共有フォルダのあるサーバをイントラネットとして定義する必要があります。
本来は、Windows自身が正しくアドレスを解釈して、イントラネット・インターネットを判断すべきなのですが。。
その点ついて、IEやエクスプローラがどのようにゾーンをイントラネット、インターネットと判断してるのかは@IT:検証 IEの自動Proxy設定とセキュリティ・ゾーンが参考になります。
また、MS自身がアドレス形式によってイントラネットがインターネットゾーンとしてしまうことも、MSサポート:FQDN または IP アドレスを使用すると、イントラネット サイトがインターネット サイトとして識別されるにて認めています。
さて、本題ですが、いちいちクライアントPCのインターネットオプションからLAN内のサーバをイントラネットに追加するのは面倒です。
(しかも、これってユーザ毎の設定っぽいのでドメイン環境だとPC個別に設定してもあまり意味がありません。)
そこで、思いついたのが Active Directory のグループポリシーを使ってすべてのユーザにイントラネットの定義を自動的に設定する方法です。(Windowsドメインを構築してないとできませんけどね。)
グループポリシーの "ユーザーの構成" → "管理用テンプレート" → "Windowsコンポーネント" → "Internet Explorer" → "インターネットコントロールパネル" → "セキュリティページ" を開きます。
そして、"サイトとゾーンの割り当て一覧" を有効にし、値の名前と値を入れて設定します。
・値の名前にサーバのアドレスが入ります。(例:file://192.168.0.100)
・値の意味は下記となるようです。
"1":イントラネット ゾーン
"2":信頼済みサイト ゾーン
"3":インターネット ゾーン
"4":制限付きゾーン
ただし、ここで設定するとユーザが今まで個別に設定してたゾーンは無視されるので注意しなければなりません。
よって、ユーザがあらかじめ個別にゾーンを指定してたか調査して行う方が安全です。
これに気付かなかったため、大事になっちゃいました。
特に、やられたのがIE6の仕様です。
上記の設定を適用後、あるユーザに個別にゾーンの追加をしようと思い、IEでインターネットオプションのセキュリティタブから信頼済みサイト登録しようと思ってダイアログウィンドウ開きます。
「次のWebサイトをゾーンに追加する」でURLを入れて「追加」ボタン押すと、下のサイトリストには入力したURLが入ります。
てっきりこれでOKかと思って閉じました。
が、再度「サイト」ボタン押下すると追加したものがありません。
IE7だとサイトの追加画面はすべて無効で登録ができない仕様になってます。
また、登録してるのにリストに出てこないケースもありました。
これはMSも認めており、MSサポート:Windows XP SP2 の [サイトとゾーンの割り当て一覧] ポリシーで IP アドレスのサイトが反映されないに記されています。
本当に設定を確認したければ、レジストリを見ろということですかね。。。
グループポリシーエディタの説明には「このポリシーを構成しなかった場合、ユーザーは自分でサイトとゾーンの割り当てを選択することができます。」としかありません。もうちょい詳しく書いてほしいですよね。
ゾーンとして設定するURLやIPアドレスには、ワイルドカードも使えるようです。
例: *.example.co.jp ←これだとすべてのプロトコルで信頼って意味になるようです。
詳しくはよりセキュリティを高めるための設定: Internet Explorerに書かれてます。
最初は "ユーザーの構成" → "Windowsの設定" → "InternetExplorerのメンテナンス" → "セキュリティ" の "セキュリティゾーンおよびコンテンツの規制" かと思ってましたけど、警告でたのでやめて、上記の方法にしてみました。
とりあえず今のところは問題なく運用できてます。