En seguridad informática , una lista de control de acceso ( ACL ) es una lista de permisos [a] asociados a un recurso del sistema (objeto o instalación). Una ACL especifica qué usuarios o procesos del sistema tienen acceso a los recursos, así como qué operaciones están permitidas en determinados recursos. [1] Cada entrada en una ACL típica especifica un sujeto y una operación. Por ejemplo,
Muchos tipos de sistemas operativos implementan ACL o tienen una implementación histórica; la primera implementación de ACL fue en el sistema de archivos de Multics en 1965. [2] [3]
Una ACL de sistema de archivos es una estructura de datos (normalmente una tabla) que contiene entradas que especifican derechos de usuario o grupo individuales sobre objetos específicos del sistema, como programas, procesos o archivos. Estas entradas se conocen como entradas de control de acceso (ACE) en Microsoft Windows NT , [4] OpenVMS y sistemas operativos similares a Unix como Linux , macOS y Solaris . Cada objeto accesible contiene un identificador para su ACL. Los privilegios o permisos determinan derechos de acceso específicos, como si un usuario puede leer, escribir o ejecutar un objeto. En algunas implementaciones, una ACE puede controlar si un usuario o un grupo de usuarios pueden o no alterar la ACL de un objeto.
Uno de los primeros sistemas operativos que proporcionó listas de control de acceso (ACL) del sistema de archivos fue Multics . PRIMOS ya contaba con ACL al menos desde 1984. [5]
En la década de 1990, los modelos ACL y RBAC se probaron ampliamente [¿ por quién? ] y se utilizaron para administrar permisos de archivos.
El grupo de trabajo POSIX 1003.1e/1003.2c hizo un esfuerzo para estandarizar las ACL, lo que dio como resultado lo que ahora se conoce como "POSIX.1e ACL" o simplemente "POSIX ACL". [6] Los borradores POSIX.1e/POSIX.2c se retiraron en 1997 debido a que los participantes perdieron el interés en financiar el proyecto y recurrieron a alternativas más poderosas como NFSv4 ACL. [7] A diciembre de 2019 [actualizar], no se pudieron encontrar fuentes en vivo del borrador en Internet, pero aún se puede encontrar en Internet Archive . [8]
La mayoría de los sistemas operativos Unix y similares (por ejemplo, Linux desde la versión 2.5.46 o noviembre de 2002, [9] FreeBSD o Solaris ) admiten listas de control de acceso (ACL) POSIX.1e (no necesariamente el borrador 17). Las ACL suelen almacenarse en los atributos extendidos de un archivo en estos sistemas.
Las ACL de NFSv4 son mucho más potentes que las ACL de borrador de POSIX. A diferencia de las ACL de borrador de POSIX, las ACL de NFSv4 están definidas por un estándar publicado, como parte del Sistema de archivos de red .
Las ACL de NFSv4 son compatibles con muchos sistemas operativos Unix y similares a Unix. Algunos ejemplos incluyen AIX , FreeBSD , [10] Mac OS X a partir de la versión 10.4 (" Tiger "), o Solaris con sistema de archivos ZFS , [11] que admiten ACL de NFSv4 , que son parte del estándar NFSv4. Hay dos implementaciones experimentales de ACL de NFSv4 para Linux: compatibilidad de ACL de NFSv4 con el sistema de archivos Ext3 [12] y la más reciente Richacls , que brinda compatibilidad de ACL de NFSv4 con el sistema de archivos Ext4 . [13] Al igual que con las ACL de POSIX, las ACL de NFSv4 generalmente se almacenan como atributos extendidos en sistemas similares a Unix.
Las ACL de NFSv4 están organizadas de forma casi idéntica a las ACL de Windows NT utilizadas en NTFS . [14] Las ACL de NFSv4.1 son un superconjunto de las ACL de NT y de las ACL de borrador de POSIX. [15] Samba permite guardar las ACL de NT de archivos compartidos por SMB de muchas maneras, una de las cuales es como ACL codificadas en NFSv4. [16]
El servicio Active Directory de Microsoft implementa un servidor LDAP que almacena y difunde información de configuración sobre usuarios y equipos en un dominio. [17] Active Directory extiende la especificación LDAP añadiendo el mismo tipo de mecanismo de lista de control de acceso que Windows NT utiliza para el sistema de archivos NTFS. Windows 2000 luego extendió la sintaxis para las entradas de control de acceso de modo que no sólo pudieran conceder o denegar el acceso a objetos LDAP completos, sino también a atributos individuales dentro de estos objetos. [18]
En algunos tipos de hardware de computadora propietario (en particular, enrutadores y conmutadores ), una lista de control de acceso proporciona reglas que se aplican a los números de puerto o direcciones IP que están disponibles en un host u otra capa 3 , cada una con una lista de hosts y/o redes a las que se les permite usar el servicio. Aunque también es posible configurar listas de control de acceso basadas en nombres de dominio de red , esta es una idea cuestionable porque los encabezados TCP , UDP e ICMP individuales no contienen nombres de dominio. En consecuencia, el dispositivo que aplica la lista de control de acceso debe resolver por separado los nombres en direcciones numéricas. Esto presenta una superficie de ataque adicional para un atacante que busca comprometer la seguridad del sistema que la lista de control de acceso está protegiendo. Tanto los servidores individuales como los enrutadores pueden tener ACL de red. Las listas de control de acceso generalmente se pueden configurar para controlar el tráfico entrante y saliente, y en este contexto son similares a los firewalls . Al igual que los firewalls, las ACL podrían estar sujetas a regulaciones y estándares de seguridad como PCI DSS .
Los algoritmos ACL se han adaptado a SQL y a sistemas de bases de datos relacionales . Muchos sistemas "modernos" (de las décadas de 2000 y 2010) basados en SQL , como los sistemas de gestión de contenido y planificación de recursos empresariales , han utilizado modelos ACL en sus módulos de administración.
La principal alternativa al modelo ACL es el modelo de control de acceso basado en roles (RBAC). Un "modelo RBAC mínimo", RBACm , se puede comparar con un mecanismo ACL, ACLg , donde solo se permiten grupos como entradas en la ACL. Barkley (1997) [19] demostró que RBACm y ACLg son equivalentes.
En las implementaciones modernas de SQL, las ACL también administran grupos y herencia en una jerarquía de grupos. Por lo tanto, las "ACL modernas" pueden expresar todo lo que expresa RBAC y son notablemente poderosas (en comparación con las "ACL antiguas") en su capacidad para expresar la política de control de acceso en términos de la forma en que los administradores ven las organizaciones.
Para el intercambio de datos y para "comparaciones de alto nivel", los datos de ACL se pueden traducir a XACML . [20]
La nueva versión de Gnet-II (revisión 3.0) ha añadido un mecanismo de seguridad de línea que se implementa bajo el subsistema ACL de Primos.
La funcionalidad EA (Extended Attributes) y ACL (Access Control Lists) ahora está disponible para los sistemas de archivos ext3. Además, la funcionalidad ACL está disponible para NFS.