web-dev-qa-db-fra.com

Quelle est la différence entre RBAC et DAC / ACL?

Quels sont les avantages de chacun et quand dois-je choisir l'un plutôt que l'autre? Y a-t-il des situations où celles-ci devraient être fusionnées?

Avez-vous des exemples d'utilisations courantes?

Et qu'en est-il du MAC, où cela s'inscrit-il?

64
AviD

Le contrôle d'accès basé sur les rôles (RBAC) consiste à définir une liste de rôles d'entreprise et à ajouter chaque utilisateur du système à un ou plusieurs rôles. Des autorisations et privilèges sont ensuite accordés à chaque rôle, et les utilisateurs les reçoivent via leur appartenance au rôle (à peu près équivalent à un groupe). Les applications testent généralement l'utilisateur pour l'appartenance à un rôle spécifique et accordent ou refusent l'accès en fonction de cela.
Le contrôle d'accès discrétionnaire (DAC) permet à un utilisateur ou un administrateur de définir une liste de contrôle d'accès (ACL) sur une ressource spécifique (par exemple, fichier, clé de registre, table de base de données, objet OS, etc.), cette liste contiendra des entrées (ACE) qui définissent chaque utilisateur qui a accès à la ressource et quels sont ses privilèges pour cette ressource.

Le principal avantage de RBAC sur DAC est la facilité de gestion - en principe, vous avez très peu de rôles, administrés de manière centralisée, quel que soit le nombre d'utilisateurs, et il s'agit simplement d'accorder à chaque utilisateur le rôle approprié; contrairement à DAC, où pour chaque nouvel utilisateur (ou changement d'utilisateur, ou suppression, etc.), vous devez parcourir toutes les ressources auxquelles elle a besoin d'accéder et les ajouter à la liste.
En revanche, le CAD est souvent plus simple et généralement plus granuleux. De plus, dans le modèle DAC, le propriétaire des données peut décider qui a accès (s'il a cette autorisation sur les données) et ajouter ou supprimer des personnes de la liste.

Un exemple très courant de DAC est le système de fichiers Windows. D'un autre côté, un exemple très courant de RBAC est le DAC sur les serveurs de fichiers d'entreprise - toute personne du groupe ActiveDirectory "Sales" aura accès au dossier partagé\Sales \. Plus communément, le groupe Administrateurs dans Windows.

MAC est un contrôle d'accès obligatoire, cela peut être considéré comme un niveau de classification ou de confidentialité. Ceci est le plus souvent utilisé dans les systèmes militaires, et à l'époque du Mainframe :). Ce n'est plus tellement utilisé, bien que les systèmes d'exploitation actuels implémentent une saveur de cela, tels que les niveaux d'intégrité de Vista/Win7.

Pour résumer les différences:

  • DAC est basé sur des autorisations personnelles, RBAC sur des autorisations de niveau "groupe"
  • Le DAC est défini par le propriétaire des données, RBAC par le (s) propriétaire (s) du système (généralement, le développeur définit l'accès accordé à chaque rôle et l'administrateur opérationnel place les utilisateurs dans des rôles)
  • Les définitions DAC sont généralement attachées aux données/ressources, tandis que RBAC est généralement défini à deux endroits: dans le code/configuration/métadonnées (l'accès aux rôles) et sur l'objet utilisateur (ou la table - les rôles de chaque utilisateur).
  • D'un autre côté, les rôles RBAC sont administrés de manière centralisée (qui est associé à quels rôles), tandis que DAC est administré "sur la ressource" (c'est-à-dire que vous administrez chaque ressource individuellement).
  • La définition des autorisations par rôle est généralement statique dans RBAC, et les utilisateurs ne reçoivent que des rôles; dans DAC, les autorisations par ressource sont souvent modifiées lors de l'exécution.
  • DAC doit être considéré comme énumérant "qui a accès à mes données", et RBAC définit "que peut faire cet utilisateur".
87
AviD