Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El lenguaje de definición de descriptores de seguridad (SDDL) se usa para representar descriptores de seguridad. La seguridad de los objetos de dispositivo se puede especificar mediante una cadena SDDL que se coloca en un archivo INF o se pasa a IoCreateDeviceSecure. El lenguaje de definición de descriptores de seguridad está totalmente documentado en la documentación del SDK de Microsoft Windows.
Aunque los archivos INF admiten la gama completa de SDDL, solo un subconjunto del lenguaje es compatible con la rutina IoCreateDeviceSecure . Este subconjunto se define aquí.
Las cadenas SDDL para objetos de dispositivo tienen el formato "D:P" seguido de una o varias expresiones del formato "(A;; Access;;;; SID)". El valor de SID especifica un identificador de seguridad que determina a quién se aplica el valor de Access (por ejemplo, un usuario o grupo). El valor de Access especifica los derechos de acceso permitidos para el SID. Los valores de Access y SID son los siguientes.
Al usar SDDL para objetos de dispositivo, el controlador debe vincularse con Wdmsec.lib.
Acceso
Especifica un valor de ACCESS_MASK que determina el acceso permitido. Este valor se puede escribir en el formato "0xhex" como un valor hexadecimal, o como una secuencia de códigos simbólicos de dos letras que representan derechos de acceso.
Los códigos siguientes se pueden usar para especificar derechos de acceso genéricos.
Código | Derecho de acceso genérico |
---|---|
Disponibilidad general |
GENÉRICO_TODO |
GR |
Acceso genérico (GENERIC_READ) |
GW |
GENERIC_WRITE |
GX |
GENERIC_EXECUTE |
Los códigos siguientes se pueden usar para especificar derechos de acceso específicos.
Código | Derecho de acceso específico |
---|---|
RC |
CONTROL_DE_LECTURA |
SD |
ELIMINAR |
Enana blanca |
WRITE_DAC |
WO |
ESCRIBIR_PROPIETARIO |
GENERIC_ALL concede todos los derechos enumerados en las dos tablas anteriores, incluida la capacidad de cambiar la ACL.
SID
Especifica el SID al que se concede el acceso especificado. Los SID representan cuentas, alias, grupos, usuarios o equipos.
Las siguientes identificaciones SID representan cuentas en el equipo.
SID | Descripción |
---|---|
SY |
Sistema Representa el propio sistema operativo, incluidos sus componentes en modo de usuario. |
LS |
Servicio local Una cuenta predefinida para los servicios locales (que también pertenece a Authenticated y World). Este SID está disponible a partir de Windows XP. |
NS |
Servicio de red Una cuenta predefinida para los servicios de red (que también pertenece a Authenticated y World). Este SID está disponible a partir de Windows XP. |
Los siguientes SID representan grupos en la máquina.
SID | Descripción |
---|---|
BA |
Administradores El grupo administradores integrado en el equipo. |
Unidad de negocio |
Grupo de usuarios integrado Grupo que cubre todas las cuentas de usuario locales y los usuarios del dominio. |
BG |
Grupo de invitados predeterminado Grupo que cubre a los usuarios que inician sesión con la cuenta de invitado local o de dominio. |
Los siguientes SID describen la medida en que se ha autenticado un usuario.
SID | Descripción |
---|---|
UA |
Usuarios autenticados Cualquier usuario reconocido por el equipo local o por un dominio. Los usuarios que han iniciado sesión con la cuenta de invitado builtin no se autentican. Sin embargo, los miembros del grupo Invitados que tienen cuentas individuales en el equipo o el dominio son autenticados. |
UN |
Usuario anónimo conectado Cualquier usuario que haya iniciado sesión sin una identidad, como una sesión de red anónima. Los usuarios que inician sesión con la cuenta de invitado builtin no se autentican ni son anónimos. Este SID está disponible a partir de Windows XP. |
Los siguientes SID describen cómo el usuario inició sesión en la máquina.
SID | Descripción |
---|---|
UI |
Usuarios interactivos Usuarios que iniciaron sesión inicialmente en la máquina "de forma interactiva", como inicios de sesión locales y inicios de sesión de Escritorio remoto. |
NI |
Usuario de inicio de sesión de red Los usuarios que acceden a la máquina de forma remota, sin acceso interactivo a escritorio (por ejemplo, uso compartido de archivos o llamadas RPC). |
WD |
Mundo Antes de Windows XP, este SID abarca todas las sesiones, ya sean usuarios autenticados, usuarios anónimos o la cuenta de invitado builtin. A partir de Windows XP, este SID no cubre sesiones de inicio de sesión anónimas; solo cubre usuarios autenticados y la cuenta de invitado builtin. El código no confiable o "restringido" tampoco está cubierto por el SID Mundial. Para obtener más información, vea la descripción del SID de código restringido (RC) en la tabla siguiente. |
Los siguientes SID merecen una mención especial.
SID | Descripción |
---|---|
RC |
Código restringido Este SID se usa para controlar el acceso mediante código que no es de confianza. La validación de las listas de control de acceso (ACL) contra tokens con RC consta de dos comprobaciones: una contra la lista habitual de identificadores de seguridad (SID) del token (que contiene, por ejemplo, WD) y otra contra una segunda lista (que normalmente contiene RC y un subconjunto de los SID originales del token). Solo se concede acceso si un token supera ambas pruebas. Por lo tanto, RC realmente funciona en combinación con otros SID. Cualquier ACL que especifique RC también debe especificar WD. Cuando RC se empareja con WD en una ACL, se describe un superconjunto de Todos que incluye el código no confiable. Es posible que el código que no sea de confianza se inicie mediante la opción Ejecutar como en el Explorador. De forma predeterminada, World no cubre código que no es de confianza. |
UD |
User-Mode Controladores Este SID concede acceso a los controladores en modo de usuario. Actualmente, este SID solo cubre los controladores escritos para User-Mode Driver Framework (UMDF). Este SID está disponible a partir de Windows 8. En versiones anteriores de Windows, que no reconocen la abreviatura "UD", debe especificar la forma completa de este SID (S-1-5-84-0-0-0-0-0-0) para conceder acceso a los controladores UMDF. Para obtener más información, consulte Control de acceso a dispositivos en la documentación de User-Mode Driver Framework. |
Ejemplos de SDDL para objetos de dispositivo
En esta sección se describen las cadenas SDDL predefinidas que se encuentran en Wdmsec.h. También puede usarlos como plantillas para definir nuevas cadenas SDDL para objetos de dispositivo.
SDDL_DEVOBJ_KERNEL_ONLY
"D:P"
SDDL_DEVOBJ_KERNEL_ONLY es la ACL "vacía". El código en modo de usuario (incluidos los procesos que se ejecutan como sistema) no puede abrir el dispositivo.
Un controlador de bus PnP podría usar este descriptor al crear un PDO. Después, el archivo INF podría especificar la configuración de seguridad más flexible para el dispositivo. Al especificar este descriptor, el controlador de bus se aseguraría de que ningún intento de abrir el dispositivo antes de que se procesara el INF tuviera éxito.
Del mismo modo, un controlador que no sea WDM podría usar este descriptor para hacer que sus objetos de dispositivo no sean accesibles hasta que el programa en modo de usuario adecuado (como un instalador) establezca el descriptor de seguridad final en el Registro.
En todos estos casos, el valor predeterminado es una seguridad estricta, flexible según sea necesario.
SDDL_DEVOBJ_SYS_ALL
"D:P(A;; GA;;; SY)"
SDDL_DEVOBJ_SYS_ALL es similar a SDDL_DEVOBJ_KERNEL_ONLY, salvo que además del código en modo kernel, el código en modo de usuario que se ejecuta como Sistema también puede abrir el dispositivo para cualquier acceso.
Un controlador heredado puede usar esta ACL para empezar con una configuración de seguridad estricta y permitir que su servicio abra el dispositivo en tiempo de ejecución a usuarios individuales mediante la función SetFileSecurity en modo de usuario. En este caso, el servicio tendría que ejecutarse como Sistema.
SDDL_DEVOBJ_SYS_ALL_ADM_ALL
"D:P(A;; GA;;; SY)(A;; GA;;; BA)"
SDDL_DEVOBJ_SYS_ALL_ADM_ALL permite que el kernel, el sistema y el administrador tengan el control total sobre el dispositivo. Ningún otro usuario puede acceder al dispositivo.
SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_R
"D:P(A;;GA;;;SY)(A;;GRGWGX;;;BA)(A;;GR;;;WD)"
SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_R permite que el kernel y el sistema tengan el control completo sobre el dispositivo. De forma predeterminada, el administrador puede acceder a todo el dispositivo, pero no puede cambiar la ACL (el administrador debe tomar el control del dispositivo primero).
A todos (al SID mundial) se les otorga acceso de lectura. El código que no es de confianza no puede acceder al dispositivo (es posible que el código que no sea de confianza se inicie mediante la opción Ejecutar como en el Explorador. De forma predeterminada, World no cubre el código restringido).
Tenga en cuenta también que el acceso transversal no se concede a los usuarios normales. Por lo tanto, podría no ser un descriptor adecuado para un dispositivo con un espacio de nombres.
SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_R_RES_R
"D:P(A;; GA;;; SY)(A;; GRGWGX;;; BA)(A;; GR;;; WD)(A;; GR;;; RC)"
SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_R_RES_R permite que el kernel y el sistema tengan control total sobre el dispositivo. De forma predeterminada, el administrador puede acceder a todo el dispositivo, pero no puede cambiar la ACL (el administrador debe tomar el control del dispositivo primero).
A todos (el SID mundial) se les da acceso de lectura. Además, también se permite que el código que no sea de confianza tenga acceso al código. Es posible que el código que no sea de confianza se inicie mediante la opción Ejecutar como en el Explorador. De forma predeterminada, World no cubre el código restringido.
Tenga en cuenta también que el acceso transversal no se concede a los usuarios normales. Por lo tanto, podría no ser un descriptor adecuado para un dispositivo con un espacio de nombres.
Estas cadenas SDDL no incluyen modificadores de herencia. Por lo tanto, solo son adecuados para objetos de dispositivo y no deben usarse para archivos ni claves del Registro. Para obtener más información sobre cómo especificar la herencia mediante SDDL, consulte la documentación de Microsoft Windows SDK.