Hospedaje y seguridad del proveedor
El HostingModel propiedad en el __Win32Provider instancia que representa a su proveedor especifica el modelo de Hosting del proveedor. Establecer esta propiedad hace que el proveedor se cargue en un proceso de host compartido que tiene un nivel de privilegio especificado.
Proceso de host de proveedores compartidos
WMI reside en un host de servicio compartido con otros servicios. Para evitar que se detengan todos los servicios cuando falla un proveedor, los proveedores se cargan en un proceso de host independiente denominado "Wmiprvse.exe". Se puede estar ejecutando más de un proceso con este nombre. Cada uno de ellos puede funcionar bajo una cuenta diferente con distinta seguridad. Tenga en cuenta que, a partir de Windows Vista, utilice el winmgmt para ejecutar WMI en un proceso separado por sí mismo utilizando un puerto fijo. Para más información, véase Conexión a WMI de forma remota a partir de Vista.
El host compartido puede ejecutarse bajo una de las siguientes cuentas de sistema en un proceso de host Wmiprvse.exe:
Un proveedor también puede ser un servidor COM local (.exe), o autoalojado, que no requiere un host de proveedor WMI.
Establecer el modelo de Hosting
Dado que LocalSystem es una cuenta con privilegios, se recomienda configurar HostingModel to NetworkServiceHost cuando un proveedor se ejecuta en un proceso Wmiprvse.exe. La cuenta NetworkServiceHost es para servicios que no requieren amplios privilegios, pero sí necesitan comunicarse remotamente con otros sistemas.
Si no establece un valor para el HostingModel propiedad, WMI establecerá un valor por defecto de NetworkServiceHostOrSelfHost. Si el HostingModel valor está establecido a LocalSystemHost, WMI utiliza rastreo para generar eventos 5603 y 5604 en el Registro de Sucesos de Windows. Debido al local LocalSystem es muy privilegiada, no se recomienda esta configuración. Puede ver estos eventos en el espectador de eventos. Para más información, véase Seguimiento de la actividad de WMI.
Establezca el HostingModel para proveedores desacoplados como "Desacoplado:Com". Proveedores creados añadiendo clases de instrumentación de Microsoft.Management.Infrastructure en .NET Framework son proveedores desacoplados. (System.Management.Instrumentation ya no es compatible). Para obtener más información sobre la creación de un proveedor desacoplado, consulte Incorporar un proveedor a una aplicación.
El modelo de Hosting se especifica en el HostingModel propiedad en el __Win32Provider instancia que representa a su proveedor especifica el modelo de Hosting del proveedor.
Para establecer el modelo de Hosting de un proveedor
En el archivo MOF que define su proveedor, cree una instancia de __Win32Provider.
Asigne un nombre al proveedor en el Nombre propiedad y asignar el identificador de clase (CLSID) del objeto COM proveedor al Clsid propiedad.
El siguiente ejemplo de código asigna asigne un nombre al proveedor en el Nombre propiedad y el CSLID del objeto COM proveedor Clsid propiedad.
Instance of __Win32Provider as $NewProvider { Name = "MyProvider"; Clsid = "{.......}"; }
Asigne el valor de host compartido adecuado al HostingModel propiedad. Los valores de host compartidos, como "NetworkServiceHost", se definen en el archivo HostingSpecification propiedad de MSFT_Providers clase.
El siguiente ejemplo de código asigna un valor de host compartido a la variable HostingModel propiedad.
HostingModel = "NetworkServiceHost";
El siguiente ejemplo de código muestra cómo registrar un proveedor en NetworkServiceHost.
Instance of __Win32Provider as $NewProvider
{
Name = "MyProvider";
Clsid = "{.......}";
HostingModel = "NetworkServiceHost";
}
Si tiene varios proveedores, puede agruparlos en un host de servicio específico registrando su proveedor para que resida en la instancia específica.
El siguiente ejemplo de código también registra un proveedor en NetworkServiceHost. El MSFT_Providers clase define valores para los dos valores que se combinan para crear el __Win32Provider HostingModel propiedad. En el ejemplo, el valor "NetworkServiceHost" procede del archivo HostingSpecification propiedad del MSFT_Providers y "LocalServiceHost" procede de la directiva HostingGroup propiedad.
Instance of __Win32Provider as $NewProvider
{
Name = "MyProvider";
Clsid = "{.......}";
HostingModel = "NetworkServiceHost:MySharedHost";
}
Existen problemas especiales de desarrollo para los proveedores que no están desacoplados y se alojan en el proceso Wmiprvse. Para más información, véase Depuración de proveedores.
Si está escribiendo un proveedor que contiene el registro de proveedores de propiedades o clases, no todos los modelos de roscado funcionan. Para más información, véase Elegir el registro correcto.
Valores de HostingModel para proveedores en proceso
La siguiente lista enumera los valores del modelo de Hosting del proveedor que se deben utilizar en el campo __Win32Provider para los proveedores que se ejecutan en un proceso Wmiprvse.exe.
Valor en __Win32Provider.HostingModel | Descripción |
---|---|
SelfHost | El proveedor comienza a utilizar la implementación del servidor local en lugar de en proceso. El contexto de seguridad del proceso en el que se ejecuta el proveedor determina el contexto de seguridad del proveedor. |
LocalSystemHost | El proveedor, si se implementa como in-process, se carga en un host de proveedor compartido que se ejecuta bajo LocalSystem contexto. Empezando con Windows Vista, LocalSystemHost deja de ser el modelo de Hosting predeterminado si HostingModel de un proveedor WMI (__Win32Provider.HostingModel propiedad) no se especifica. Para más información, consulte Seguridad de los modelos de Hosting. |
LocalSystemHostOrSelfHost | El proveedor se aloja automáticamente o se carga en el proceso Wmiprvse.exe que se ejecuta en el directorio LocalSystem cuenta. Dado que LocalSystem es una cuenta con privilegios elevados, se genera una entrada en el registro de sucesos de seguridad de NT para notificar a los administradores de un proveedor que se ejecuta en este estado de confianza. |
NetworkServiceHost | El proveedor, si se implementa como in-process, se carga en el proceso Wmiprvse.exe que se ejecuta en NetworkService cuenta. A partir de Windows Vista, este es el modelo de Hosting predeterminado si el HostingModel de un proveedor WMI (__Win32Provider.HostingModel propiedad) no se especifica. Para más información, consulte Seguridad de los modelos de Hosting. NetworkServiceHost tiene privilegios limitados y, por tanto, reduce la posibilidad de un ataque de elevación de privilegios. Si el proveedor solo opera en el equipo local, establezca el parámetro HostingModel propiedad a LocalServiceHost. |
NetworkServiceHostOrSelfHost | El proveedor se aloja automáticamente o se carga en el proceso WmiPrvse.exe que se ejecuta en el directorio NetworkService cuenta. NetworkServiceHostOrSelfHost es la configuración por defecto cuando el HostingModel propiedad en __Win32Provider is NULL. Debido a NetworkServiceHostOrSelfHost es el predeterminado, los proveedores de sistemas operativos anteriores pueden seguir funcionando en Windows Vista, Windows Server 2008 y sistemas operativos posteriores. |
LocalServiceHost | El proveedor, si se implementa como in-process, se carga en el proceso Wmiprvse.exe que se ejecuta bajo el LocalService cuenta. Este es el modelo de Hosting recomendado para los servicios porque LocalService tiene privilegios limitados. |
Valores de HostingModel para proveedores desacoplados
La siguiente lista enumera los valores del modelo de Hosting de proveedores desacoplados.
-
Decoupled:Com
-
El proveedor es un proveedor desacoplado alojado en un proceso separado que es un cliente de WMI.
En el siguiente ejemplo se muestra el especificador FoldIdentity para el archivo HostingModel propiedad establecida para FALSE, que permite al proveedor hacerse pasar por el cliente.
Decoupled:Com:FoldIdentity(FALSE)
Si no se especifica FoldIdentity, el valor de FoldIdentity se establece en TRUE por defecto. Por motivos de seguridad, se recomienda no especificar FoldIdentity(FALSE) ya que una aplicación fraudulenta con suplantación de Delegado puede afectar a todo un dominio.
El siguiente ejemplo muestra el HostingModel establecida de la forma recomendada, que equivale a establecer FoldIdentity (TRUE).
Decoupled:Com
-
Decoupled:Noncom
-
Solo para uso interno. No admitida.
Seguridad de los modelos de Hosting
Para la mayoría de las situaciones, LocalSystem no es necesario y el NetworkServiceHost contexto es más apropiado. La mayoría de los Proveedores WMI deben hacerse pasar por el contexto de seguridad del cliente para realizar las operaciones solicitadas en nombre del cliente WMI. A partir de Windows Vista, un proveedor WMI que carece de una definición de modelo de Hosting y se ejecuta como si se está ejecutando bajo LocalSystem no funcionará correctamente. Para corregir esta situación, cambie el modelo de Hosting esperado y asegúrese de que el código del proveedor WMI realiza las operaciones en el contexto de seguridad del cliente suplantando al cliente WMI. LocalSystem no suele ser un requisito. Si su proveedor debe tener ese nivel de privilegio, especifique el modelo de Hosting con la siguiente declaración en el archivo MOF.
HostingModel=LocalSystemHost