Derechos de acceso y seguridad de procesos

El modelo Windows seguridad de Microsoft permite controlar el acceso a los objetos de proceso. Para obtener más información sobre la seguridad, vea Modelo de control de acceso.

Cuando un usuario inicia sesión, el sistema recopila un conjunto de datos que identifica de forma única al usuario durante el proceso de autenticación y lo almacena en un token de acceso. Este token de acceso describe el contexto de seguridad de todos los procesos asociados al usuario. El contexto de seguridad de un proceso es el conjunto de credenciales proporcionadas al proceso o a la cuenta de usuario que creó el proceso.

Puede usar un token para especificar el contexto de seguridad actual para un proceso mediante la función CreateProcessWithTokenW. Puede especificar un descriptor de seguridad para un proceso al llamar a la función CreateProcess, CreateProcessAsUsero CreateProcessWithLogonW. Si especifica NULL, el proceso obtiene un descriptor de seguridad predeterminado. Las ACL del descriptor de seguridad predeterminado para un proceso proceden del token principal o de suplantación del creador.

Para recuperar el descriptor de seguridad de un proceso, llame a la función GetSecurityInfo. Para cambiar el descriptor de seguridad de un proceso, llame a la función SetSecurityInfo.

Los derechos de acceso válidos para los objetos de proceso incluyen los derechos de acceso estándar y algunos derechos de acceso específicos del proceso. En la tabla siguiente se enumeran los derechos de acceso estándar utilizados por todos los objetos.

Value Significado
DELETE (0x00010000L) Necesario para eliminar el objeto.
READ _ CONTROL (0x00020000L) Necesario para leer información en el descriptor de seguridad del objeto, sin incluir la información en la SACL. Para leer o escribir la SACL, debe solicitar el derecho de acceso ACCESS SYSTEM _ _ SECURITY. Para obtener más información, vea SACL Access Right.
SYNCHRONIZE (0x00100000L) Derecho a utilizar el objeto para la sincronización. Esto permite que un subproceso espere hasta que el objeto esté en el estado señalado.
WRITE _ DAC (0x00040000L) Necesario para modificar la DACL en el descriptor de seguridad del objeto .
WRITE _ OWNER (0x00080000L) Necesario para cambiar el propietario en el descriptor de seguridad del objeto.

En la tabla siguiente se enumeran los derechos de acceso específicos del proceso.

Value Significado
PROCESAR _ TODO _ EL ACCESO Todos los derechos de acceso posibles para un objeto de proceso. Windows Server 2003 y Windows XP: El tamaño de la marca PROCESS _ ALL _ ACCESS aumentó en Windows Server 2008 y Windows Vista. Si una aplicación compilada para Windows Server 2008 y Windows Vista se ejecuta en Windows Server 2003 o Windows XP, la marca PROCESS _ ALL _ ACCESS es demasiado grande y la función que especifica esta marca produce un error al acceder denegado. _ _ Para evitar este problema, especifique el conjunto mínimo de derechos de acceso necesarios para la operación. Si se debe usar PROCESS ALL _ _ ACCESS, establezca WINNT win32 en el sistema operativo mínimo de destino de la aplicación _ _ (por ejemplo, #define _WIN32_WINNT _WIN32_WINNT_WINXP ). Para obtener más información, vea Using the Windows Headers.
PROCESO _ CREATE _ PROCESS (0x0080) Necesario para crear un proceso.
PROCESO _ CREATE _ THREAD (0x0002) Necesario para crear un subproceso.
PROCESO _ IDENTIFICADOR _ DUP (0x0040) Necesario para duplicar un identificador mediante DuplicateHandle.
PROCESO _ INFORMACIÓN _ DE CONSULTA (0x0400) Necesario para recuperar cierta información sobre un proceso, como su token, código de salida y clase de prioridad (vea OpenProcessToken).
PROCESO _ CONSULTA _ DE _ INFORMACIÓN LIMITADA (0x1000) Necesario para recuperar cierta información sobre un proceso (vea GetExitCodeProcess, GetPriorityClass, IsProcessInJob, QueryFullProcessImageName). A un identificador que tiene el derecho de acceso PROCESS QUERY _ _ INFORMATION se le concede automáticamente PROCESS QUERY LIMITED _ _ _ INFORMATION.Windows Server 2003 y Windows XP: este derecho de acceso no se admite.
PROCESO _ SET _ INFORMATION (0x0200) Necesario para establecer cierta información sobre un proceso, como su clase de prioridad (vea SetPriorityClass).
PROCESO _ SET _ QUOTA (0x0100) Necesario para establecer límites de memoria mediante SetProcessWorkingSetSize.
PROCESO _ SUSPEND _ RESUME (0x0800) Necesario para suspender o reanudar un proceso.
PROCESO _ TERMINATE (0x0001) Necesario para finalizar un proceso mediante TerminateProcess.
PROCESO _ OPERACIÓN _ DE MÁQUINA VIRTUAL (0x0008) Necesario para realizar una operación en el espacio de direcciones de un proceso (vea VirtualProtectEx y WriteProcessMemory).
PROCESO _ LECTURA _ DE MÁQUINA VIRTUAL (0x0010) Necesario para leer memoria en un proceso mediante ReadProcessMemory.
PROCESO _ ESCRITURA _ DE MÁQUINA VIRTUAL (0x0020) Necesario para escribir en memoria en un proceso mediante WriteProcessMemory.
SYNCHRONIZE (0x00100000L) Necesario para esperar a que finalice el proceso mediante las funciones de espera.

Para abrir un identificador a otro proceso y obtener derechos de acceso completos, debe habilitar el privilegio SeDebugPrivilege. Para obtener más información, vea Cambiar privilegios en un token.

El identificador devuelto por la función CreateProcess tiene acceso PROCESS ALL _ _ ACCESS al objeto de proceso. Al llamar a la función OpenProcess, el sistema comprueba los derechos de acceso solicitados con la DACL en el descriptor de seguridad del proceso. Cuando se llama a la función GetCurrentProcess, el sistema devuelve un pseudohandle con el acceso máximo que la DACL permite al autor de la llamada.

Puede solicitar el derecho de acceso ACCESS SYSTEM _ _ SECURITY a un objeto de proceso si desea leer o escribir la SACL del objeto. Para obtener más información, vea Listas de control de acceso (ACL) y Derecho de acceso sacl.

Advertencia

Un proceso que tenga algunos de los derechos de acceso indicados aquí puede usarlos para obtener otros derechos de acceso. Por ejemplo, si el proceso A tiene un identificador para procesar B con el acceso PROCESS _ DUP _ HANDLE, puede duplicar el pseudo identificador para el proceso B. Esto crea un identificador que tiene acceso máximo al proceso B. Para obtener más información sobre los pseudo identificadores, vea GetCurrentProcess.

Procesos protegidos

Windows Vista presenta procesos protegidos para mejorar la compatibilidad con Digital Rights Management. El sistema restringe el acceso a los procesos protegidos y a los subprocesos de los procesos protegidos.

No se permiten los siguientes derechos de acceso estándar desde un proceso a un proceso protegido:

  • DELETE
  • CONTROL DE _ LECTURA
  • ESCRIBIR _ DAC
  • PROPIETARIO DE _ ESCRITURA

No se permiten los siguientes derechos de acceso específicos desde un proceso a un proceso protegido:

  • PROCESAR _ TODO _ EL ACCESO
  • PROCESO _ CREATE _ PROCESS
  • PROCESS _ CREATE _ THREAD
  • IDENTIFICADOR _ DE DUP _ DE PROCESO
  • PROCESAR _ INFORMACIÓN DE _ CONSULTA
  • INFORMACIÓN DEL _ CONJUNTO _ DE PROCESOS
  • PROCESS _ SET _ QUOTA
  • PROCESAR OPERACIÓN _ DE MÁQUINA _ VIRTUAL
  • PROCESAR LECTURA _ DE MÁQUINA _ VIRTUAL
  • PROCESAR ESCRITURA _ DE MÁQUINA _ VIRTUAL

Se introdujo _ el derecho PROCESS QUERY _ LIMITED _ INFORMATION para proporcionar acceso a un subconjunto de la información disponible a través de PROCESS QUERY _ _ INFORMATION.