Autorisation : détermination des actions qu'un utilisateur authentifié peut effectuer

En cybersécurité, l'autorisation est un mécanisme fondamental permettant de déterminer les ressources auxquelles un utilisateur, une application ou un système peut accéder et les opérations qu'il est autorisé à effectuer. Elle intervient généralement après l'authentification et constitue un élément essentiel du contrôle d'accès, de la protection des données et de la sécurité des applications informatiques.

1. À propos de l'autorisation en cybersécurité

L'autorisation, appelée Authorization en anglais, est le processus qui consiste à déterminer si une entité possède les permissions nécessaires pour effectuer une action sur une ressource donnée.

Une entité peut être un utilisateur, une application, un service ou un équipement informatique. La ressource concernée peut être un fichier, une base de données, une page Web, une API ou une fonctionnalité d'administration.

Objectifs de l'autorisation

Les mécanismes d'autorisation permettent notamment de :

  • Limiter les accès aux seules ressources nécessaires.
  • Empêcher les opérations non autorisées sur les données sensibles.
  • Protéger l'intégrité des informations contre les modifications injustifiées.
  • Renforcer la confidentialité des ressources protégées.
  • Définir les responsabilités des utilisateurs et des services.
  • Appliquer le principe du moindre privilège dans les systèmes informatiques.

Exemple simple

Considérons une plateforme pédagogique utilisée par des étudiants, des enseignants et des administrateurs.

Un étudiant authentifié peut consulter ses notes, mais il ne doit pas pouvoir les modifier. Un enseignant peut saisir les notes des étudiants relevant de ses classes. Un administrateur peut gérer les comptes et certaines configurations de la plateforme.

Ces différences sont définies par les règles d'autorisation.

Les éléments fondamentaux

ÉlémentDéfinitionExemple
SujetEntité demandant une opération.Enseignant connecté.
RessourceObjet auquel l'accès est demandé.Fichier de notes.
ActionOpération demandée.Lire, modifier, supprimer.
PermissionDroit accordé à une entité.Modifier les notes d'une classe.
Politique d'accèsEnsemble de règles définissant les autorisations.Seul l'enseignant responsable peut modifier une note.
DécisionRésultat de l'évaluation de la demande.Accès autorisé ou refusé.

Le principe du moindre privilège

Le principe du moindre privilège, ou Least Privilege, consiste à accorder à chaque utilisateur ou service uniquement les permissions nécessaires à ses tâches.

Par exemple, une application qui doit uniquement consulter une base de données ne devrait pas disposer d'une permission générale de suppression.

2. Différences entre identification, authentification et autorisation

Les notions d'identification, d'authentification et d'autorisation sont complémentaires, mais elles ne remplissent pas la même fonction.

Identification

L'identification consiste à déclarer une identité.

Par exemple, un utilisateur saisit son identifiant ou son adresse électronique pour indiquer le compte auquel il souhaite accéder.

Authentification

L'authentification consiste à vérifier les preuves associées à l'identité déclarée.

Elle peut reposer sur un mot de passe, une clé cryptographique ou un mécanisme d'authentification multifacteur.

Autorisation

L'autorisation détermine les opérations qu'une entité est autorisée à réaliser sur une ressource.

Une authentification réussie ne signifie donc pas que l'utilisateur peut accéder à toutes les fonctionnalités de l'application.

Tableau comparatif

ConceptQuestionExemple
IdentificationQui prétendez-vous être ?Saisie d'un identifiant.
AuthentificationPouvez-vous prouver cette identité ?Vérification d'un mot de passe.
AutorisationQu'avez-vous le droit de faire ?Permission de modifier un document.
TraçabilitéQuelles opérations ont été effectuées ?Journal des modifications.

Le modèle AAA

Dans les infrastructures informatiques et les réseaux, le modèle AAA regroupe trois fonctions :

  • Authentication : vérification de l'identité.
  • Authorization : détermination des permissions.
  • Accounting : enregistrement ou comptabilisation des activités.

Exemple d'une application bancaire

Lorsqu'un client se connecte à son application bancaire, le système vérifie son identité. Une fois authentifié, il peut consulter les comptes qui lui appartiennent et effectuer uniquement les opérations autorisées.

Il ne doit pas pouvoir consulter les comptes d'autres clients en modifiant simplement un identifiant dans une adresse Web.

Cette protection nécessite un contrôle d'autorisation sur chaque ressource concernée.

3. Les principaux modèles de contrôle d'accès

Les systèmes informatiques utilisent différents modèles pour organiser et appliquer les permissions. Les plus connus sont DAC, MAC, RBAC et ABAC.

DAC : Discretionary Access Control

Le DAC, ou contrôle d'accès discrétionnaire, permet généralement au propriétaire d'une ressource de définir ou de déléguer certaines permissions d'accès.

Par exemple, le propriétaire d'un document peut autoriser un autre utilisateur à le lire ou à le modifier.

MAC : Mandatory Access Control

Le MAC, ou contrôle d'accès obligatoire, repose sur des règles de sécurité définies et imposées par une autorité centrale.

Les utilisateurs ordinaires ne peuvent généralement pas modifier librement ces règles.

Ce modèle est notamment utilisé dans certains environnements exigeant un contrôle strict de l'accès aux informations.

RBAC : Role-Based Access Control

Le RBAC, ou contrôle d'accès basé sur les rôles, associe des permissions à des rôles attribués aux utilisateurs.

Par exemple :

  • Étudiant : consulter ses notes.
  • Enseignant : consulter et modifier les notes de ses classes.
  • Administrateur : gérer les utilisateurs et les paramètres autorisés.

Ce modèle facilite l'administration des permissions dans les applications comportant plusieurs catégories d'utilisateurs.

ABAC : Attribute-Based Access Control

Le ABAC, ou contrôle d'accès basé sur les attributs, utilise des caractéristiques du sujet, de la ressource, de l'action et du contexte pour déterminer les permissions.

Par exemple, un enseignant peut modifier les notes uniquement si :

  • son compte est authentifié ;
  • il est responsable de la classe concernée ;
  • la période de saisie des notes est ouverte ;
  • l'opération demandée est autorisée.

ACL : Access Control List

Une ACL, ou liste de contrôle d'accès, associe à une ressource une liste d'entités et de permissions.

Par exemple, un fichier peut posséder les permissions suivantes :

UtilisateurLectureÉcritureSuppression
aliceOuiOuiNon
bobOuiNonNon
charlesNonNonNon

Comparaison des modèles

ModèlePrincipeExemple
DACPermissions contrôlées par le propriétaire.Partage d'un fichier.
MACPolitique imposée par une autorité.Système à classification de sécurité.
RBACPermissions associées aux rôles.Gestion des utilisateurs d'une plateforme.
ABACDécision fondée sur des attributs.Accès selon le rôle, la classe et le contexte.
ACLListe de permissions associées à une ressource.Droits d'accès à un document.

4. Fonctionnement et mécanismes d'autorisation

Un mécanisme d'autorisation doit évaluer chaque demande d'accès en fonction des règles de sécurité définies pour la ressource concernée.

Étape 1 : identification du sujet

Le système détermine l'entité qui souhaite accéder à une ressource.

Dans une application Web, cette identité peut être associée à une session authentifiée ou à un jeton d'accès valide.

Étape 2 : identification de la ressource

Le système détermine l'objet ciblé par la demande : document, fichier, compte, enregistrement ou fonctionnalité.

Étape 3 : identification de l'action

L'opération demandée peut être une lecture, une modification, une création, une suppression ou une opération administrative.

Étape 4 : évaluation des règles

Le système examine les permissions et les conditions applicables.

Une règle peut notamment dépendre du rôle, de l'appartenance à une organisation, du propriétaire de la ressource ou du contexte de la demande.

Étape 5 : décision

Le mécanisme d'autorisation produit une décision : autoriser ou refuser l'opération.

Une politique de sécurité robuste applique généralement le principe Deny by Default, selon lequel une opération est refusée lorsqu'aucune règle explicite ne l'autorise.

Étape 6 : application de la décision

La décision doit être appliquée par le composant chargé de protéger la ressource, notamment côté serveur pour une application Web.

Le simple masquage d'un bouton dans l'interface ne constitue pas un contrôle d'autorisation suffisant.

Étape 7 : journalisation

Les opérations sensibles et les refus importants peuvent être enregistrés dans des journaux afin de faciliter les audits et les investigations.

Policy Enforcement Point et Policy Decision Point

Dans certaines architectures de contrôle d'accès, on distingue :

  • PEP, pour Policy Enforcement Point : composant qui applique la décision d'accès.
  • PDP, pour Policy Decision Point : composant qui évalue la politique et détermine si l'accès est autorisé.
  • PIP, pour Policy Information Point : source d'informations utilisées pour évaluer les règles.
  • PAP, pour Policy Administration Point : composant permettant de gérer les politiques.

Autorisation dans les API

Une API doit vérifier les permissions de chaque demande sensible, même lorsque l'utilisateur est déjà authentifié.

Par exemple, une requête destinée à consulter une facture doit vérifier que le demandeur est autorisé à accéder à cette facture précise.

Les contrôles doivent être réalisés sur le serveur, indépendamment des informations affichées dans le navigateur.

5. Implémentation de l'autorisation avec Python et Django

Python permet d'illustrer les principaux mécanismes d'autorisation. Les exemples suivants utilisent des données fictives et présentent des contrôles simples pouvant servir de base à l'apprentissage du contrôle d'accès.

Exemple 1 : autorisation basée sur un rôle

Le programme suivant vérifie si un utilisateur possède le rôle administrateur avant de lui accorder l'accès à une fonctionnalité sensible. Il illustre le principe du RBAC.

Output :

Exemple 2 : associer des permissions à des rôles

Le programme suivant définit un dictionnaire de permissions pour plusieurs rôles. Il vérifie ensuite si un utilisateur peut réaliser l'opération demandée.

Output :

Exemple 3 : contrôle d'accès par liste ACL

Le programme suivant utilise un dictionnaire représentant une liste de contrôle d'accès. Chaque utilisateur possède un ensemble de permissions sur une ressource fictive.

Output :

Exemple 4 : autorisation basée sur les attributs

Le programme suivant illustre une politique ABAC. Un enseignant peut modifier les notes uniquement s'il est authentifié, s'il est responsable de la classe et si la période de saisie est ouverte.

Output :

Exemple 5 : vérifier le propriétaire d'une ressource

Le programme suivant illustre un contrôle d'autorisation au niveau d'un objet. Un utilisateur ne peut modifier un document que s'il en est le propriétaire et s'il est authentifié.

Output :

Exemple 6 : appliquer le principe du moindre privilège

Le programme suivant vérifie qu'un utilisateur possède une permission précise avant de réaliser une opération. L'absence de permission entraîne automatiquement un refus.

Output :

Exemple 7 : vérifier une permission avec Django

Le framework Django possède un système intégré de permissions permettant de contrôler certaines opérations sur les modèles de données.

Le programme suivant suppose qu'un modèle nommé Article appartient à une application Django appelée blog. Il vérifie si l'utilisateur courant possède la permission de modifier les articles.

Output :

Cette sortie correspond au cas où l'utilisateur est authentifié et possède effectivement la permission blog.change_article. Dans une application Django réelle, une vue doit retourner une réponse HTTP appropriée.

Il faut également vérifier les droits sur l'article précis. La permission standard change_article ne garantit pas, à elle seule, qu'un utilisateur peut modifier n'importe quel article particulier.

Exemple 8 : protéger une vue Django avec une permission

Le programme suivant utilise le décorateur permission_required de Django. Il exige que l'utilisateur possède la permission blog.change_article avant d'exécuter la vue.

Output :

Cette sortie représente le contenu de la réponse HTTP lorsque l'utilisateur possède la permission requise. Dans le cas contraire, Django refuse l'accès selon le comportement configuré.

Pour une modification réelle, il faut compléter ce contrôle par une vérification de propriété ou de permission sur l'objet concerné, ainsi que par les protections habituelles des formulaires et des requêtes HTTP.

6. Vulnérabilités et bonnes pratiques de sécurisation

Les défauts d'autorisation constituent une catégorie importante de vulnérabilités dans les applications Web, les API et les infrastructures informatiques.

Broken Access Control

Le Broken Access Control désigne les vulnérabilités permettant à un utilisateur d'effectuer des opérations ou d'accéder à des ressources pour lesquelles il ne possède pas les permissions nécessaires.

Ces vulnérabilités peuvent permettre la consultation, la modification ou la suppression non autorisée de données.

IDOR : Insecure Direct Object Reference

Une vulnérabilité IDOR peut apparaître lorsqu'une application utilise un identifiant de ressource fourni par le client sans vérifier correctement que l'utilisateur est autorisé à accéder à l'objet correspondant.

Par exemple, une application qui affiche une facture à partir de son identifiant doit vérifier que le demandeur possède les droits nécessaires sur cette facture.

Le simple fait d'utiliser un identifiant difficile à deviner ne remplace pas un contrôle d'autorisation.

BOLA : Broken Object Level Authorization

La vulnérabilité BOLA concerne les défauts d'autorisation au niveau des objets, notamment dans les API.

Elle peut permettre à un utilisateur d'accéder à des objets appartenant à d'autres utilisateurs lorsque les vérifications nécessaires sont absentes.

Élévation de privilèges

L'élévation de privilèges consiste à obtenir des permissions supérieures à celles normalement accordées.

Elle peut notamment résulter de défauts de configuration, de vulnérabilités logicielles ou de contrôles d'accès insuffisants.

Contrôle d'accès côté client

Une application ne doit jamais considérer qu'un bouton masqué ou un champ désactivé suffit à empêcher une opération.

Les vérifications d'autorisation doivent être appliquées côté serveur, au niveau des ressources et des opérations protégées.

Appliquer le principe Deny by Default

Le principe Deny by Default consiste à refuser une opération lorsqu'aucune règle explicite ne permet de l'autoriser.

Appliquer le moindre privilège

Les utilisateurs et les services doivent disposer uniquement des permissions nécessaires à leurs activités.

Vérifier les autorisations à chaque requête

Une application doit contrôler les permissions pour chaque opération sensible et pour chaque ressource concernée.

Il ne faut pas supposer qu'une authentification préalable suffit à autoriser toutes les opérations suivantes.

Centraliser les politiques d'accès

Lorsque cela est possible, les règles d'autorisation doivent être regroupées dans des composants cohérents afin de réduire les incohérences et les oublis.

Protéger les API

Les API doivent vérifier les permissions associées aux identités, aux jetons et aux ressources demandées.

Un jeton d'accès valide ne signifie pas automatiquement que toutes les opérations sont autorisées.

Journaliser les opérations sensibles

Les tentatives d'accès refusées, les changements de permissions et les opérations administratives importantes doivent être surveillés.

Tester les différents rôles

Les tests de sécurité doivent vérifier les comportements de l'application pour plusieurs catégories d'utilisateurs, notamment les utilisateurs anonymes, ordinaires et administrateurs.

Éviter les permissions excessives

Les permissions générales, notamment les accès administratifs permanents, doivent être limitées et régulièrement réévaluées.

Réviser régulièrement les droits

Les permissions doivent être mises à jour lorsqu'un utilisateur change de fonction ou quitte une organisation.

Défense en profondeur

Une stratégie de défense en profondeur combine l'autorisation avec l'authentification forte, le chiffrement, la surveillance, les mises à jour et les audits de sécurité.

7. À retenir

L'autorisation est le mécanisme permettant de déterminer les actions qu'un utilisateur, une application ou un système peut effectuer sur une ressource.

Elle se distingue de l'authentification, qui vérifie l'identité, et de l'identification, qui consiste à déclarer cette identité.

Les principaux modèles de contrôle d'accès comprennent DAC, MAC, RBAC et ABAC. Les ACL permettent également d'organiser les permissions associées aux ressources.

Le RBAC repose sur les rôles, tandis que l'ABAC utilise des attributs du sujet, de la ressource et du contexte.

Les mécanismes d'autorisation doivent appliquer le principe du moindre privilège et privilégier le refus par défaut lorsque les conditions d'accès ne sont pas satisfaites.

Les contrôles doivent être réalisés côté serveur et vérifier les permissions sur chaque ressource sensible.

Les vulnérabilités Broken Access Control, IDOR et BOLA illustrent les risques associés à une mauvaise gestion des autorisations.

Python permet de simuler les modèles RBAC, ABAC et ACL. Django fournit également des mécanismes intégrés pour gérer les utilisateurs, les groupes et les permissions.

Enfin, une politique d'autorisation efficace constitue une composante essentielle d'une stratégie de défense en profondeur visant à protéger les systèmes et les données contre les accès non autorisés.

 




Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/


loader-image
Le prix initial était : € 11,00.Le prix actuel est : € 10,00.
Le prix initial était : € 6,00.Le prix actuel est : € 5,00.



Leave a Reply

Your email address will not be published. Required fields are marked *