5

IIS 6 を実行している Windows 2003 サーバーがあり、Web サイトのセットアップと作成を自動化するスクリプトがいくつかあります。彼らは私がコミッショニングしている新しいサーバーでは動作していません (既に他の 3 つの W2K3 サーバーで問題なく動作しています)。問題は、IIS プロバイダーの WMI セキュリティにあるようです。以下の ASP コードは問題を表しています (ただし、問題の原因は元のコードではありません。これは問題を簡単に示したものです)。

Set wmiProvider = GetObject("winmgmts:\\.\root\MicrosoftIISv2")
If wmiProvider is Nothing Then
Response.Write "Failed to get WMI provider MicrosoftIISv2<br>"
End If

Response.Write "Querying for IISWebService...<br>"
Set colItems = wmiProvider.ExecQuery("Select * From IISWebServer",,0)
Response.Write "Error: " & Hex(Err.Number) & " (" & Err.Description & ")<br>"

これをブラウザで実行すると、ExecQuery 呼び出しの後にアクセス拒否エラーが報告されます。IUSR_ ユーザーの WMI アクセスをルート ブランチからずっと下に設定しました。実際、CIMV2 プロバイダーを使用して、IP アドレス情報を問題なく照会できます。IUSR ユーザーを machine admins グループに入れると、すべて機能しますが、実際にはそうしたくありません。

これは DCOM/WMI のセキュリティ上の問題に違いありませんが、他に何があるかはわかりません。誰でも光を当てることができますか?

4

3 に答える 3

0

これがあなた自身またはあなたの管理者のためのツールとして実行することを意図している場合 (洗い流されていない匿名の大衆とは対照的に)、ここに私が過去に使用した方法があります (YMMV):

  1. Web サイトに新しいディレクトリ (/SiteCreate など) を設定し、そこに WMI スクリプトを配置します。
  2. 適切な権限を持つ Windows ユーザーを構成します (この場合はおそらく管理者ですが、アプリに関連するものを使用する必要があります)。
  3. 手順 1 で作成したディレクトリへの匿名アクセスをオフにてから、手順 2 で作成したユーザーにのみアクセスを許可するようにセキュリティを設定します (そのディレクトリの認証をオンにします)。

これで、ブラウザでそのディレクトリに移動すると、ログイン プロンプトが表示されます。手順 2 で作成したユーザー名とパスワードを入力すると、スクリプトには WMI 要求を実行するための適切な権限が与えられます。

于 2013-07-18T22:48:56.000 に答える