Compartir a través de


Delegación con WMI

Cuando se ejecuta un script en un sistema local que obtiene datos de un sistema remoto, WMI suministra sus credenciales al proveedor de los datos en el sistema remoto. Esto solo requiere un nivel de suplantación de Impersonal, porque solo se necesita un salto de red. Sin embargo, si el script se conecta a WMI en el sistema remoto e intenta abrir un archivo de registro en un sistema remoto adicional, entonces el script falla a menos que el nivel de suplantación sea Delegar. Delegar suplantación es necesario para cualquier operación que implique más de un salto de red. Para obtener más información sobre la seguridad de DCOM en WMI, consulte Configuración de la seguridad de los procesos de las aplicaciones cliente. Para más información sobre una conexión de un salto de red entre dos ordenadores, consulte Conexión a WMI en un ordenador remoto.

Para utilizar la delegación para conectarse a un ordenador a través de otro ordenador

  1. Habilitar la delegación en Active Directory (Usuarios y equipos de Active Directory en panel de control tareas administrativas) en el controlador de dominio. La cuenta en el sistema remoto debe estar marcada como Confianza para delegar y la cuenta en el sistema local no debe estar marcada como La cuenta es sensible y no puede delegarse. el sistema local, el sistema remoto y el controlador de dominio deben ser miembros del mismo dominio o de dominios de confianza.

    Nota Utilizar la delegación es un riesgo para la seguridad porque da a procesos fuera de tu control directo la capacidad de utilizar tus credenciales.

  2. Modifique su código de la siguiente manera para indicar que desea utilizar la delegación.

    PowerShell

    consulte el -Impersonation parámetro en el WMI cmdlet para Delegar.

    VBScript

    Establezca el impersonationLevel parámetro para Delegar en la llamada a SWbemLocator.ConnectServer o Delegaren la apodo cadena. También puede establecer la suplantación en un archivo SWbemSecurityobjecto.

    C++

    Establezca el parámetro de nivel de suplantación en RPC_C_IMP_LEVEL_DELEGATE en la llamada a CoInitializeSecurity or CoSetProxyBlanket. Para obtener más información sobre cuándo hacer esas llamadas, consulte Iniciar una COM para un WMI aplicación.

    Para pasar la identidad del cliente a servidores COM remotos en C++, establezca la ocultación en la llamada a CoSetProxyBlanket. Para obtener más información, consulte Ocultación.

Ejemplos

El siguiente ejemplo de código muestra cómo una cadena de alias que establece la suplantación como Delegar. Tenga en cuenta que la autoridad debe ser Kerberos.

set objWMIServices = Getobject("winmgmts:{impersonationLevel=Delegate,authority=kerberos:MyDomain\Computer_B}!\\ComputerB\Root\CIMv2")

El siguiente ejemplo de código muestra cómo establecer la suplantación en Delegar (un valor de 4) usando SWbemLocator.ConnectServer.

Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objLocator.ConnectServer(Computer_B, _
                                             "Root\CIMv2", _
                                             AdminAccount, _
                                             MyPassword, _
                                             "kerberos:Domain\Computer_B")
objWMIService.Security_.ImpersonationLevel = 4

Protección de una conexión WMI remota

Creación remota de procesos con WMI