2010-02-10 17 views
5

Tengo un servidor de Windows 2003 que ejecuta IIS 6 y tengo algunos scripts que realizan la configuración automática y la creación de sitios web. No están trabajando en la puesta en marcha de un nuevo servidor I Cam (ya funcionan felizmente en otros 3 servidores W2K3). El problema parece reducirse a la seguridad de WMI en el proveedor de IIS. El código ASP a continuación representa el problema (aunque no es el código original el que causa el problema, esta es una demostración simplificada del problema).Acceso Denegados errores al acceder al proveedor de WMI de IIS desde 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>" 

Si ejecuto esto en mi navegador, aparece un error de acceso denegado después de la llamada a ExecQuery. He establecido el acceso WMI para el usuario IUSR_ desde la rama Root hasta el final. De hecho, puedo consultar la información de la dirección IP utilizando el proveedor CIMV2 con bastante alegría. Si pongo al usuario de IUSR en el grupo de administradores de máquina, todo funciona, pero realmente no quiero hacer eso.

Esto debe ser un problema de seguridad DCOM/WMI, pero no sé qué más hay. ¿Alguien puede arrojar algo de luz?

+0

Usted tendrá que pasar las credenciales explícitas para aquellas secuencias de comandos para ejecutar desde requieren altos permisos – Lizz

+1

¿Puede mostrar el error exacto? Además, ¿hay algún evento registrado en los registros de Windows? –

Respuesta

0

Si esto es algo que va a ejecutar como una herramienta para usted o su administrador (a diferencia de las masas anónimas sin lavar), aquí es una forma en que he utilizado en el pasado (tu caso es distinto):

  1. Configure un nuevo directorio en su sitio web (ej./SiteCreate) y coloque sus scripts WMI allí
  2. Configure un usuario de Windows que tenga los derechos apropiados (probablemente el administrador en este caso pero debe usar lo que sea pertinente para su aplicación)
  3. Turn off el acceso anónimo al directorio que creó en el paso 1 y luego configure la seguridad para permitir el acceso solo al usuario que creó en el paso 2 (active la autenticación para ese directorio)

Ahora, cuando navegue a ese directorio en su navegador, debe obtener un aviso de inicio de sesión . Cuando ingrese el nombre de usuario/contraseña que creó en el paso 2, su secuencia de comandos tendrá los derechos apropiados para realizar sus solicitudes WMI.

1

Después de leer el comentario de G. Stoynev preguntando si se registraron eventos en los registros de Windows, verifiqué los registros de eventos en el servidor al que intento acceder a IIS de forma remota a través de WMI, y he aquí encontré un evento con el siguiente texto: se negó

acceso al espacio de nombres root \ WebAdministration debido a que el espacio de nombres está marcado con RequiresEncryption pero el guión o aplicación ha intentado conectarse a este espacio de nombres con un nivel de autenticación a continuación Pkt_Privacy. Cambie el nivel de autenticación a Pkt_Privacy y vuelva a ejecutar el script o la aplicación.

Consulte el código en this answer para la pregunta SO relacionada c# - "Access is denied" Exception with WMI.

He aquí algunos ejemplos de código C# que añadí que parecía resolver este problema para mí:

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

No es un problema DCOM, más que un problema de seguridad y cifrado de WMI.Intente cambiar el apodo GetObject para incluir suplantación y pktPrivacy, por ejemplo:

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

consulte el artículo siga MS para obtener más información: http://msdn.microsoft.com/en-us/library/aa393618(v=vs.85).aspx

Cuestiones relacionadas