En sécurité informatique , une liste de contrôle d'accès ( ACL ) est une liste d'autorisations associées à une ressource système (objet ou installation). Une ACL spécifie quels utilisateurs ou processus système ont accès aux ressources, ainsi que quelles opérations sont autorisées sur des ressources données. Chaque entrée dans une ACL typique spécifie un sujet et une opération. Par exemple,
- Si un objet fichier possède une ACL qui contient(Alice : lire, écrire ; Bob : lire), cela donnerait à Alice la permission de lire et d'écrire le fichier et donnerait à Bob la permission de le lire uniquement.
- Si le profil RACF CONSOLE CLASS(TSOAUTH) possède une ACL qui contient(ALICE : LIRE), cela donnerait à ALICE la permission d'utiliser la commande TSO CONSOLE.
Implémentations
De nombreux types de systèmes d'exploitation implémentent des ACL ou ont une implémentation historique ; la première implémentation d'ACL était dans le système de fichiers de Multics en 1965.
ACL du système de fichiers
Une liste de contrôle d'accès (ACL) de système de fichiers est une structure de données (généralement une table) contenant des entrées qui spécifient les droits d'utilisateur ou de groupe individuels sur des objets système spécifiques tels que des programmes, des processus ou des fichiers. Ces entrées sont appelées entrées de contrôle d'accès (ACE) dans Microsoft Windows NT , OpenVMS et les systèmes d'exploitation de type Unix tels que Linux , macOS et Solaris . Chaque objet accessible contient un identifiant de sa liste de contrôle d'accès. Les privilèges ou autorisations déterminent des droits d'accès spécifiques, par exemple si un utilisateur peut lire, écrire ou exécuter un objet. Dans certaines implémentations, une ACE peut contrôler si un utilisateur ou un groupe d'utilisateurs peut ou non modifier la liste de contrôle d'accès sur un objet.
L'un des premiers systèmes d'exploitation à fournir des ACL de système de fichiers était Multics . PRIMOS proposait des ACL au moins dès 1984.
Dans les années 1990, les modèles ACL et RBAC ont été largement testés et utilisés pour administrer les autorisations de fichiers.
Liste de contrôle d'accès POSIX
Le groupe de travail POSIX 1003.1e/1003.2c a tenté de normaliser les ACL, ce qui a donné naissance à ce que l'on appelle aujourd'hui « ACL POSIX.1e » ou simplement « ACL POSIX ». Les projets POSIX.1e/POSIX.2c ont été retirés en 1997 en raison de la perte d'intérêt des participants pour le financement du projet et du recours à des alternatives plus puissantes telles que l'ACL NFSv4. En décembre 2019 , aucune source en direct du projet n'était disponible sur Internet, mais il est toujours disponible dans les archives Internet .
La plupart des systèmes d'exploitation Unix et similaires (par exemple Linux depuis la version 2.5.46 ou novembre 2002, FreeBSD ou Solaris ) prennent en charge les ACL POSIX.1e (pas nécessairement la version 17). Les ACL sont généralement stockées dans les attributs étendus d'un fichier sur ces systèmes.
Liste de contrôle d'accès NFSv4
Les ACL NFSv4 sont beaucoup plus puissantes que les ACL POSIX provisoires. Contrairement aux ACL POSIX provisoires, les ACL NFSv4 sont définies par une norme réellement publiée, dans le cadre du système de fichiers réseau .
Les ACL NFSv4 sont prises en charge par de nombreux systèmes d'exploitation Unix et de type Unix. Parmi les exemples, on peut citer AIX , FreeBSD , Mac OS X à partir de la version 10.4 (« Tiger ») ou Solaris avec le système de fichiers ZFS , qui prennent en charge les ACL NFSv4 , qui font partie de la norme NFSv4. Il existe deux implémentations expérimentales des ACL NFSv4 pour Linux : les ACL NFSv4 prennent en charge le système de fichiers Ext3 et le plus récent Richacls , qui apporte la prise en charge des ACL NFSv4 pour le système de fichiers Ext4 . Comme pour les ACL POSIX, les ACL NFSv4 sont généralement stockées sous forme d'attributs étendus sur les systèmes de type Unix.
Les ACL NFSv4 sont organisées de manière presque identique aux ACL Windows NT utilisées dans NTFS . Les ACL NFSv4.1 sont un sur-ensemble des ACL NT et des ACL de projet POSIX. Samba prend en charge l'enregistrement des ACL NT des fichiers partagés SMB de plusieurs manières, l'une d'entre elles étant sous forme d'ACL codées NFSv4.
Listes de contrôle d'accès Active Directory
Le service Active Directory de Microsoft implémente un serveur LDAP qui stocke et diffuse les informations de configuration sur les utilisateurs et les ordinateurs d'un domaine. Active Directory étend la spécification LDAP en ajoutant le même type de mécanisme de liste de contrôle d'accès que celui utilisé par Windows NT pour le système de fichiers NTFS. Windows 2000 a ensuite étendu la syntaxe des entrées de contrôle d'accès de telle sorte qu'elles puissent non seulement accorder ou refuser l'accès à des objets LDAP entiers, mais également à des attributs individuels au sein de ces objets.
Listes de contrôle d'accès réseau
Sur certains types de matériel informatique propriétaire (en particulier les routeurs et les commutateurs ), une liste de contrôle d'accès fournit des règles qui s'appliquent aux numéros de port ou aux adresses IP disponibles sur un hôte ou une autre couche 3 , chacun avec une liste d'hôtes et/ou de réseaux autorisés à utiliser le service. Bien qu'il soit également possible de configurer des listes de contrôle d'accès basées sur des noms de domaine réseau , cette idée est discutable car les en-têtes TCP , UDP et ICMP individuels ne contiennent pas de noms de domaine. Par conséquent, le périphérique appliquant la liste de contrôle d'accès doit résoudre séparément les noms en adresses numériques. Cela présente une surface d'attaque supplémentaire pour un attaquant qui cherche à compromettre la sécurité du système que la liste de contrôle d'accès protège. Les serveurs et les routeurs individuels peuvent avoir des listes de contrôle d'accès réseau. Les listes de contrôle d'accès peuvent généralement être configurées pour contrôler le trafic entrant et sortant, et dans ce contexte, elles sont similaires aux pare-feu . Comme les pare-feu, les listes de contrôle d'accès peuvent être soumises à des réglementations et normes de sécurité telles que PCI DSS .
Implémentations SQL
Les algorithmes ACL ont été portés vers SQL et vers des systèmes de bases de données relationnelles . De nombreux systèmes « modernes » (années 2000 et 2010) basés sur SQL , comme les systèmes de planification des ressources d'entreprise et de gestion de contenu , ont utilisé des modèles ACL dans leurs modules d'administration.
Comparaison avec RBAC
La principale alternative au modèle ACL est le modèle de contrôle d'accès basé sur les rôles (RBAC). Un « modèle RBAC minimal », RBACm , peut être comparé à un mécanisme ACL, ACLg , où seuls les groupes sont autorisés comme entrées dans l'ACL. Barkley (1997) a montré que RBACm et ACLg sont équivalents.
Dans les implémentations SQL modernes, les ACL gèrent également les groupes et l'héritage dans une hiérarchie de groupes. Les « ACL modernes » peuvent donc exprimer tout ce que RBAC exprime et sont particulièrement puissantes (par rapport aux « anciennes ACL ») dans leur capacité à exprimer la politique de contrôle d'accès en termes de la façon dont les administrateurs voient les organisations.
Pour l'échange de données et pour les « comparaisons de haut niveau », les données ACL peuvent être traduites en XACML .