ASP.NETからリモートコンピューターを照会すると、WMIアクセスがエラーを拒否しました

asp.net powershell security wmi
ASP.NETからリモートコンピューターを照会すると、WMIアクセスがエラーを拒否しました

リモートシステムへのWMI呼び出しを実行するASP.NETアプリケーションがあります。 アプリケーションWeb.configには、私が理解しているように、アプリケーションユーザーに代わってアプリケーションコードを強制的に実行するオプションが含まれています。

問題は、同じユーザーの同じホストのPowerShellコンソールから問題のリモートサーバーへのWMI要求を正常に実行できるにもかかわらず、「アクセスが拒否されました」というエラーが表示されることです。

// this doesn't work
ManagementScope scope = new ManagementScope();
scope.Path.NamespacePath = "root\\virtualization";
scope.Path.Server = "vs01";
scope.Connect(); // <-- here comes exception

# this works just fine
Get-WmiObject -Namespace 'root\virtualization' -Class Msvm_ComputerSystem -ComputerName vs01

HttpContext.Current.User.Identity.Name、System.Security.Principal.WindowsIdentity.GetCurrent()。Name、System.Threading.Thread.CurrentPrincipal.Identity.Nameプロパティのダンプは、偽装が期待どおりに機能することを示しています。

アイデア? 問題は、ある種の.NETまたはIISセキュリティですか?

  3  1


ベストアンサー

ドメイン管理者に、Webサーバーマシンの委任を有効にする必要があります。 これは、Kerberosのセキュリティ機能です。 デフォルトでは、中間サーバー(この場合はWebサーバー)は、委任許可が与えられていない限り、クライアントの偽装コンテキストをリモートサーバーに渡すことはできません。 これを行わない場合、リモートターゲットサーバーは匿名ユーザーとして入ってくるリクエストを見るでしょう…​ 適切に保護されている場合、アクセスが拒否されます。

中間サーバーが特定のターゲットサーバーにのみ委任できるようにするという一般的なポリシー(制約付き委任と呼ばれる)に注意してください。そのため、Webアプリがネットワーク内のサーバーでWMIを呼び出す必要がある場合、問題が発生する可能性があります。 ドメイン管理者に相談してください。

4


タイトルとURLをコピーしました