Vidéo: Node.js & Express From Scratch [Part 11] - Access Control 2024
L'une des méthodes les plus courantes de sécurisation des données dans NoSQL consiste à attribuer chaque enregistrement (ou document ou graphique, selon votre type de base de données) avec un ensemble d'autorisations liées aux rôles. C'est le contrôle d'accès basé sur le rôle, ou RBAC pour faire court.
Considérez un communiqué de presse pour un site Web stocké dans une base de données NoSQL de document (agrégée). Le rôle d'éditeur peut avoir des autorisations de mise à jour pour le document, tandis qu'un rôle plus public peut avoir uniquement des autorisations de lecture.
Ce cas d'utilisation nécessite l'attribution d'autorisations rôle , et non de permissions utilisateur . Les utilisateurs peuvent être affectés à un ou plusieurs rôles. Ainsi, les utilisateurs héritent des autorisations en fonction de la somme de leurs rôles.
Devoir créer un rôle pour autoriser un utilisateur à exécuter une fonction particulière peut sembler un travail supplémentaire, mais cette approche est très utile. Considérez un utilisateur qui déménage dans un autre département ou qui s'en va complètement.
Vous ne voulez pas avoir à rechercher manuellement tous les documents dont les permissions mentionnent cet utilisateur et les modifier ou les supprimer. Au lieu de cela, il suffit de modifier les attributions de rôle de cet utilisateur en une seule opération. L'utilisation du contrôle d'accès basé sur les rôles (RBAC) est beaucoup plus facile pour la maintenance à long terme des autorisations de sécurité.
Regardez comment les bases de données gèrent les autorisations et l'héritage des rôles. Envisager des souscripteurs dans une compagnie d'assurance, où il peut y avoir des souscripteurs stagiaires, juniors et seniors, chacun ayant un accès accru à différents types de renseignements.
Vous pouvez attribuer aux souscripteurs juniors les autorisations attribuées aux stagiaires, plus quelques autres. Ensuite, vous pouvez assigner toutes les autorisations des souscripteurs juniors aux souscripteurs seniors, plus quelques autres, encore. Si vous souhaitez ajouter des autorisations supplémentaires à tous ces rôles, vous devez effectuer trois modifications identiques.
Si vous avez cinq niveaux de rôles, c'est cinq copies. En outre, chaque système aura une multitude de rôles comme ceux-ci. Il y a une meilleure façon que d'effectuer la même tâche banale encore et encore: l'héritage de rôle.
Certains systèmes incluent l'héritage des rôles. Dans ce cas, le rôle JuniorUnderwriter hérite du rôle TraineeUnderwriter et le rôle SeniorUnderwriter hérite du rôle JuniorUnderwiter. Maintenant, tout ce que vous devez faire pour ajouter une permission à tous les rôles est de l'ajouter seulement au rôle TraineeUnderwriter (le plus bas niveau d'héritage), et tous les rôles hériteront de la permission. L'héritage des rôles est beaucoup plus facile à comprendre et à maintenir.
La logique d'autorisation de rôle est généralement implémentée avec la logique OU. C'est-à-dire que si vous attribuez trois rôles - RoleA, RoleB et RoleC - à un enregistrement avec une autorisation de lecture, un utilisateur a cette autorisation s'il possède RoleA OU RoleB, ou RoleC.Si vous n'attribuez pas d'autorisations de lecture de rôle à un enregistrement, aucun utilisateur n'a les autorisations de lecture sur cet enregistrement (l'héritage mis à part, bien sûr).