Lista de control de acceso (ACL): definición, tipos y ejemplos

Una ACL indica quién puede hacer qué con un recurso. Cómo funcionan las ACL, tipos principales, errores habituales y ACL frente a RBAC.

¿Qué es una lista de control de acceso (ACL)?

Una lista de control de acceso (ACL, por sus siglas en inglés) es una lista asociada a un recurso, como un archivo, una subred o un bucket, que indica quién puede hacer qué con él. Cada entrada nombra un sujeto (usuario, grupo o rango de IP) y los permisos que se permiten o deniegan. El sistema consulta la lista en cada acceso.

Cómo funciona una ACL

Cada línea de la lista es una entrada de control de acceso (ACE). Combina un sujeto (quién), un permiso como leer, escribir o ejecutar (qué) y, en muchos sistemas, una decisión de permitir o denegar. Cuando llega una petición, el sistema busca al sujeto en la lista. Algunos sistemas se detienen en la primera entrada que coincide y otros combinan todas las que aplican, así que la regla de evaluación importa tanto como las entradas.

Una ACL responde a "¿quién puede hacer qué con este recurso?". Es el punto de vista contrario al del control de acceso basado en roles, que parte del usuario y pregunta qué roles tiene.

Ejemplo: una ACL POSIX de archivo

En Linux, la página de manual acl(5) define los tipos de entrada: el propietario, usuarios con nombre, el grupo propietario, grupos con nombre, una máscara y "other". Esta es la ACL de un archivo en la forma corta que muestra getfacl:

user::rwx
user:alice:rw-
group::r-x
group:engineering:rwx
mask::rwx
other::r--

Alice puede leer y escribir aunque no sea la propietaria. La máscara limita lo que usuarios y grupos con nombre pueden hacer de verdad: con una máscara r--, Alice quedaría en solo lectura sin ningún aviso.

Tipos de ACL

  • ACL de sistema de archivos: amplían los permisos de propietario, grupo y otros con usuarios y grupos con nombre. Los sistemas de archivos de Linux y NTFS de Windows las admiten.
  • ACL de red: permiten o deniegan tráfico por dirección, puerto y protocolo. En AWS, una ACL de red actúa a nivel de subred, tiene reglas numeradas que se evalúan desde el número más bajo y no guarda estado (stateless), así que el tráfico de vuelta necesita su propia regla. Los grupos de seguridad, en cambio, sí guardan estado.
  • ACL de almacenamiento de objetos: conceden permisos básicos de lectura y escritura sobre un bucket u objeto. Amazon S3 desactiva las ACL por defecto en los buckets nuevos y recomienda mantenerlas desactivadas, porque las políticas de bucket son más expresivas.
  • ACL de aplicación: listas de permisos que una aplicación SaaS o un CMS mantiene por documento, proyecto o registro.

ACL, RBAC e IAM

Una ACL se asocia al recurso y es la herramienta adecuada para pocos recursos con excepciones poco habituales. RBAC asigna permisos a roles y escala mejor cuando muchos usuarios comparten las mismas funciones. La gestión de identidades y accesos (IAM) es la disciplina más amplia que gobierna identidades, roles y políticas, y a menudo usa ACL por debajo. En la práctica se combinan: roles para la mayoría de los accesos y ACL para las excepciones.

Errores habituales con las ACL

  • Orden de reglas equivocado. En sistemas donde gana la primera coincidencia, un permiso amplio colocado encima de una denegación concreta deja la denegación sin efecto.
  • Olvidar el camino de vuelta. En una ACL de red sin estado, permitir las peticiones entrantes sin la regla de salida correspondiente deja las conexiones colgadas.
  • Dar acceso a "todos". Un grupo público en un bucket expone su contenido a cualquiera. Revisa primero estas concesiones en una auditoría.
  • Ignorar la máscara. Una entrada POSIX puede parecer generosa y estar limitada por la máscara.
  • Dejar que se acumulen entradas. Nadie recuerda por qué existe una entrada antigua y borrarla parece arriesgado. Revisa las ACL con regularidad y asigna un responsable a cada entrada.

ACL, pruebas de carga y monitorización

Un cambio de ACL es una causa clásica de errores 401, 403 o de tiempo de espera repentinos. Una ACL de red o un cortafuegos que descarta el tráfico de direcciones desconocidas también bloqueará una prueba de carga: LoadFocus crea instancias en la nube bajo demanda, así que antes de probar debes permitir sus rangos de IP publicados. Si los errores solo aparecen bajo carga, la causa puede ser la limitación de tasa en tu borde y no la aplicación.

Para detectar a tiempo una deriva de permisos, programa una comprobación sobre un endpoint protegido con la monitorización de API y exige el código de estado esperado, o haz una comprobación puntual con el comprobador de estado de API. Nuestra guía de seguridad en pruebas en la nube (en inglés) trata el control de acceso en entornos de prueba, y la seguridad de API y el acceso a la API tratan la parte de las credenciales.

Preguntas frecuentes sobre las ACL

¿Qué significa ACL?

ACL son las siglas de access control list, en español lista de control de acceso. En redes también se habla de ACL de red (NACL).

¿Qué diferencia hay entre una ACL y un cortafuegos?

Un cortafuegos es un dispositivo o servicio que filtra tráfico. Una ACL es la lista de reglas con la que él, o un router, decide qué dejar pasar. Muchos cortafuegos se configuran con reglas de tipo ACL.

¿Una ACL es lo mismo que RBAC?

No. Una ACL enumera permisos por recurso, RBAC asigna permisos a roles que luego tienen los usuarios. A menudo se usan juntos.

¿Debo usar ACL en S3?

Normalmente no. Amazon S3 desactiva las ACL por defecto y recomienda usar políticas. Úsalas solo cuando necesites controlar el acceso objeto por objeto.

¿Las ACL de red guardan estado?

En AWS no. Una ACL de red evalúa cada paquete por separado, así que necesitas reglas para ambos sentidos. Los grupos de seguridad sí guardan estado y permiten las respuestas automáticamente.

¿Qué tan rápido es tu sitio web?

Mejora su velocidad y SEO sin problemas con nuestra Prueba de Velocidad gratuita.

Prueba de velocidad de sitio web gratis

Analice la velocidad de carga de su sitio web y mejore su rendimiento con nuestro comprobador de velocidad de página gratuito.