Compartir a través de


Arquitectura de la tecnología ACL

El espacio de nombres System.Security.AccessControl proporciona acceso a las listas de control de acceso (ACL) a través de clases convenientes que eliminan gran parte de la complejidad del sistema de seguridad Windows ACL. Además, el espacio de nombres System.Security.AccessControl contiene varias clases que proporcionan un acceso avanzado al sistema de seguridad Windows ACL.

.NET Framework proporciona acceso a las listas ACL para los recursos siguientes:

  • Claves criptográficas

  • Directorios

  • Identificadores de espera de evento

  • Archivos

  • Mutexes

  • Claves del Registro

  • Semáforos

Cada uno de estos recursos tiene varias clases que se pueden utilizar para crear y modificar listas ACL.

Jerarquía de las clases ACL

Para la mayoría de los escenarios, puede utilizar las clases abstractas de nivel superior en lugar de clases avanzadas para crear y modificar listas ACL. Para cada recurso, las clases de nivel superior adoptan la forma siguiente:

  • Una clase que encapsula la lista de control de acceso discrecional (DACL) y la lista de control de acceso al sistema (SACL). Esta clase toma el nombre <Nombre de recurso>Security. Por ejemplo, las clases FileSecurity y DirectorySecurity encapsulan las listas DACL y SACL para archivos y carpetas.

  • Una clase que encapsula una entrada del control de acceso (ACE). Esta clase toma el nombre <Nombre de recurso>AccessRule.

  • Una clase que encapsula un ACE de auditoría. Esta clase toma el nombre <Nombre de recurso>AuditRule.

  • Varias enumeraciones que le permiten crear un acceso concreto y reglas de auditoría.

  • Para obtener una lista completa de todas las clases ACL de alto nivel, vea Resumen de tecnologías para listas ACL.

Agregar entradas ACE a listas ACL

Después de crear una entrada ACE usando una de las clases de reglas de acceso o de reglas de auditoría, puede agregar la regla al recurso o utilizarlo para quitar una regla existente de un recurso. Por ejemplo, podría crear una regla mediante la clase FileSystemAccessRule que especifica que sólo los administradores pueden abrir un archivo. Podría agregar a continuación esa regla a un objeto FileSecurity o quitar una regla similar de un objeto FileSecurity.

Al agregar una entrada ACE que concede el acceso no garantiza que una entidad de seguridad recibirá el acceso porque una regla de denegación siempre reemplaza a una regla de permiso. Por ejemplo, si agrega a un archivo una regla de acceso de permiso para una cuenta del sistema, esto no significa que el usuario tendrá acceso porque también otra regla puede denegar el acceso al archivo.

Cada objeto <Nombre de recurso>Security asociado a un recurso proporciona los métodos siguientes para agregar o quitar reglas de acceso y reglas de auditoría.

Método

Descripción

AddAccessRule

- y -

AddAuditRule

Busca un acceso o regla de auditoría que se puede combinar con la nueva regla. Si no se encuentra ninguna, agrega la nueva regla.

SetAccessRule

Quita todas las reglas del control de acceso con el mismo usuario y valor AccessControlType (Allow o Deny) que la regla especificada y, a continuación, agrega la regla especificada.

SetAuditRule

Quita todas las reglas de auditoría con el mismo usuario que la regla especificada, sin tener en cuenta el valor AuditFlags, y, a continuación, agrega la regla especificada.

ResetAccessRule

Quita todas las reglas de control de acceso con el mismo usuario que la regla especificada, sin tener en cuenta el valor AccessControlType, y, a continuación, agrega la regla especificada.

RemoveAccessRule

Busca la regla de control de acceso con el mismo usuario y valor AccessControlType (Allow o Deny) que el archivo especificado, y con los marcadores de propagación y herencia compatibles. Si se encuentra, los derechos contenidos en la regla de acceso especificada se quitan de la regla.

RemoveAuditRule

Busca una regla de control de auditoría con el mismo usuario que la regla especificada y con herencia e marcadores de propagación compatibles. Si se encuentra, los derechos contenidos en la regla especificada se quitan de la regla.

RemoveAccessRuleAll

Busca todas las reglas de acceso con el mismo usuario y valor AccessControlType (Allow o Deny) que la regla especificada y, si las encuentra, las quita.

RemoveAuditRuleAll

Busca todas las reglas de auditoría con el mismo usuario que la regla especificada y, si las encuentra, las quita.

RemoveAccessRuleSpecific

- y -

RemoveAuditRuleSpecific

Busca una regla de acceso o de auditoría que coincida exactamente con la regla especificada y, si la encuentra, quita la regla.

AddAccessRule

- y -

AddAuditRule

Busca un acceso o regla de auditoría que se puede combinar con la nueva regla. Si no se encuentra ninguna, agrega la nueva regla.

Obtener y establecer listas ACL

Cada recurso protegido tiene métodos que obtienen y establecen el objeto <Nombre de recurso>Security asociado a un recurso. Para recuperar las listas ACL existentes para un recurso concreto, utilice uno de los métodos GetAccessControl asociados al recurso. Para volver a propagar los cambios a un recurso, utilice uno de los métodos SetAccesscontrol asociados al recurso. Tenga en cuenta que los cambios no se vuelven a propagar a un recurso hasta se vuelvan a aplicar explícitamente con uno de los métodos fijos.

Para obtener una lista completa de todos métodos get y set para cada recurso protegido, vea Resumen de tecnologías para listas ACL.

Vea también

Otros recursos

Información general sobre la tecnología ACL

Seguridad en .NET Framework