Establecimiento de la seguridad en la creación del espacio de nombres

El archivo con formato de objeto administrado (MOF) que crea un espacio de nombres también puede definir los descriptores de seguridad para el espacio de nombres mediante la inclusión del calificador NamespaceSecuritySDDL con el descriptor de seguridad en formato de lenguaje de definición de descriptores de seguridad (SDDL).

Puede usar NamespaceSecuritySDDL para proteger cualquier espacio de nombres. También puede usar este calificador en un archivo MOF simple para modificar el descriptor de seguridad en un espacio de nombres existente. WMI procesa la cadena SDDL para establecer la seguridad del espacio de nombres, pero no se almacena como cadena. Si no se especifica ningún descriptor de seguridad, se usa la seguridad predeterminada. Para obtener más información, consulte Establecimiento de descriptores de seguridad de espacios de nombres.

El procedimiento siguiente establece el descriptor de seguridad para el espacio de nombres root\MyNamespace. La cadena SDDL establece el propietario y el grupo en usuarios autenticados y especifica una lista de control de acceso discrecional (DACL) heredada por los espacios de nombres secundarios. La DACL permite al usuario leer datos, ejecutar métodos, escribir datos en clases de proveedor y usar el acceso remoto: WBEM_ENABLE, WBEM_METHOD_EXECUTE, WBEM_WRITE_PROVIDER, WBEM_REMOTE_ACCESS. Para más información, consulte Acceso a los espacios de nombres de WMI.

Establecimiento de una DACL de espacio de nombres

  1. Cree un archivo con formato de objeto administrado (MOF) o modifique el archivo MOF existente que defina el espacio de nombres para agregar el calificador NamespaceSecuritySDDL con la cadena SDDL.

    En el ejemplo de código siguiente se muestra que el espacio de nombres que se va a modificar es root\MyNamespace y el archivo se denomina MyNamespace_security.mof.

    #pragma autorecover
    #pragma namespace("\\\\.\\root")
    [NamespaceSecuritySDDL ("O:BAG:BAD:(A;CI;0x60003;;;WD)")]
    Instance of __Namespace
    {
      Name = "MyNamespace";
    };
    
  2. Tenga en cuenta que la cadena SDDL distingue mayúsculas de minúsculas: se debe escribir en mayúsculas.

    En el ejemplo de código siguiente se muestran las letras "o" y "g" de la cadena SDDL en minúsculas, lo que hará que Mofcomp.exe devuelva un error.

    #pragma autorecover
    #pragma namespace("\\\\.\\root")
    [NamespaceSecuritySDDL("o:BAg:BAD:(A;CI;0x60003;;;WD)")] 
    Instance of __Namespace
    {
      Name = "MyNamespace";
    };
    
  3. Ejecute Mofcomp.exe para compilar el archivo MOF.

    c:\mofcomp MyNamespace_security.mof

    En C++, use los métodos IMoFCompiler.

  4. Si se produce un error al intentar establecer la DACL del espacio de nombres, considere los siguientes mensajes:

    Error Descripción
    WBEM_E_INVALID_PARAMETER No hay DACL heredada. La alternativa es que el autor de la llamada haya infringido la DACL o SD en el espacio de nombres primario.
    WBEM_E_ACCESS_DENIED El autor de la llamada no tiene permiso para actualizar la cadena SDDL en MOF.

     

Establecimiento de descriptores de seguridad del espacio de nombres

Constantes de derechos de acceso del espacio de nombres

Constantes de marca ACE del espacio de nombres

Cambio de la seguridad de acceso en objetos protegibles