2010-02-10 16 views
5

Ho un server che esegue Windows 2003 IIS 6 e hanno alcuni script che fanno l'installazione automatica e la creazione di siti web. Non stanno lavorando su un nuovo server per la messa in servizio (funzionano già tranquillamente con altri 3 server W2K3). Il problema sembra ridursi alla sicurezza WMI sul provider IIS. Il codice ASP sotto rappresenta il problema (anche se non è il codice originale che causa il problema - questa è una dimostrazione semplificata del problema).errori di accesso negato accesso a provider WMI di IIS da 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>" 

Se corro questo nel mio browser, ottengo un errore di accesso negato riferito dopo la chiamata ExecQuery. Ho impostato l'accesso WMI per l'utente IUSR_ dal ramo Root fino in fondo. In effetti, posso interrogare le informazioni sull'indirizzo IP usando il fornitore CIMV2 abbastanza felicemente. Se metto l'utente IUSR nel gruppo amministratori macchina funziona il tutto, ma io in realtà non voglio farlo.

questo deve essere un problema di sicurezza DCOM/WMI, ma non riesco a capire che cosa il resto c'è. Qualcuno può chiarire?

+0

Avrete bisogno di passare le credenziali esplicite per quegli script da eseguire dal richiedono permessi elevati – Lizz

+1

Puoi mostrare l'errore esatto. Inoltre, ci sono degli eventi registrati nei registri di Windows? –

risposta

0

Se questo è qualcosa che si intende eseguire come strumento per te o il vostro amministratore (in contrasto con le masse anonime non lavate), ecco un modo che ho usato in passato (YMMV):

  1. Impostare una nuova directory nel tuo sito web (ad esempio/SiteCreate) e inserire il vostro script WMI là
  2. Configurare un utente Windows che dispone dei diritti appropriati (probabilmente admin in questo caso, ma si dovrebbe usare tutto ciò che è pertinente alla tua app)
  3. Girare fuori l'accesso anonimo alla directory creata nel passaggio 1 quindi imposta la sicurezza per consentire l'accesso solo all'utente che hai creato nel passaggio 2 (attiva l'autenticazione per quella directory)

Ora, quando accedi a quella directory nel tuo browser, dovresti ottenere un prompt di login . Quando inserisci il nome utente/password che hai creato nel passaggio 2, lo script avrà i diritti appropriati per eseguire le richieste WMI.

1

Dopo aver letto il commento di G. Stoynev che chiede se sono stati registrati eventi nei registri di Windows, ho controllato i registri eventi sul server a cui sto tentando di accedere a IIS in remoto tramite WMI, ed ecco che ho trovato un evento con il seguente testo:

l'accesso al WebAdministration spazio dei nomi root \ è stato negato perché lo spazio dei nomi è contrassegnato con RequiresEncryption ma lo script o applicazione ha tentato di connettersi a questo spazio dei nomi con un livello di autenticazione di seguito Pkt_Privacy. Cambia il livello di autenticazione in Pkt_Privacy ed esegui nuovamente lo script o l'applicazione.

Vedere il codice in this answer nella relativa domanda SO c# - "Access is denied" Exception with WMI.

Ecco qualche esempio di codice C# che ho aggiunto che sembrava risolvere il problema per me:

ConnectionOptions options = new ConnectionOptions(); 
options.Authentication = AuthenticationLevel.PacketPrivacy; 
ManagementScope managementScope = new ManagementScope(@"\\remote-server\root\WebAdministration", options); 
// ... 
0

Non è un problema DCOM, a maggior ragione una sicurezza e crittografia problema WMI.Provare a cambiare il moniker GetObject per includere la rappresentazione e pktPrivacy, ad esempio:

Set wmiProvider = GetObject("winmgmts:{impersonationLevel=impersonate;authenticationLevel=pktPrivacy}!\root\MicrosoftIISv2")

consultare l'articolo seguire MS per ulteriori informazioni: http://msdn.microsoft.com/en-us/library/aa393618(v=vs.85).aspx