Von einem SQL-Hintergrund kommen. Wenn ich den Zugriff auf Daten basierend auf bestimmten Attributen eines Benutzers beschränken möchte, kann ich eine Ansicht erstellen und die Ansicht als Filter verwenden, um zu beschränken, welche Daten ein Benutzer basierend auf den Kriterien in der Ansicht sieht. Dieser Ansatz beruht auf Beziehungen und bisher hat es für mich funktioniert. Betrachtet man NoSQL und die Verschiebung in der Strategie und im Konzept, bin ich verwirrt, wie man dies in die Natur von NoSql einführt. Was ist der NoSql-Ansatz für ein Problem wie dieses? Wenn Benutzer nur aufgrund ihres Benutzertyps in bestimmte Zeilen eingeweiht sind? Angenommen, ein Administrator kann alle Datensätze für eine bestimmte Gruppe anzeigen, und ein generischer Benutzer kann nur seine Datensätze und bestimmte Elemente auf Gruppenebene, Gruppenfotos, Gruppennachrichten usw. anzeigen, die innerhalb einer Gruppe öffentlich sind. Ich versuche wirklich, meinen Kopf zu wickeln, nicht in Bezug auf die SQL-Ansatz für dieses Problem zu denken, aber ich bin neu in NoSQL, so dass es eine Herausforderung war.NoSQL-Strategien für die Autorisierung von Datenzeilen
Antwort
NoSQL-Datenbanken unterscheiden sich in vielerlei Hinsicht konzeptionell von relationalen Datenbanken. Autorisierung und Sicherheit stehen im Allgemeinen nicht im Vordergrund. Aber die meisten von ihnen haben sich in diesem Bereich entwickelt, und sie haben eine feinkörnige Autorisierung. Grundsätzlich kommt es auf eine bestimmte Datenbank an. Beispiel: Cassandra verfügt über Berechtigungen auf Spaltenebene im Plan (https://issues.apache.org/jira/browse/CASSANDRA-12859), HBase verfügt über Berechtigungen auf Zellenebene (https://www.cloudera.com/documentation/enterprise/5-8-x/topics/cdh_sg_hbase_authorization.html). Auf der anderen Seite ist MongoDB generell schemal und hat ein anderes (komplexeres) dokumentenorientiertes Datenmodell, was es schwierig macht, Low-Level-Zugriffskontrolle zu implementieren. Darüber hinaus hat MongoDB Ansichten.
Wenn DBMS, das Sie verwenden, keine integrierte Autorisierung auf der erwarteten Ebene hat, muss es in einer Anwendung implementiert werden, die mit db interagiert (wenn es mehr als eine Anwendung gibt, können die Dinge schwierig werden) einige Verwendungsregeln müssen festgelegt werden). Die Verwendung von denormalisierten Modellen ist eine übliche Sache, so dass verschiedene Rollen/Gruppen mit verschiedenen Tabellen/Sammlungen interagieren können, die Daten enthalten, die nur diese Rolle/Gruppe sehen kann (im Grunde handelt es sich um eine Simulation von RDBMS-Sichten). Diese denormalisierte Herangehensweise erfordert normalerweise mehr Speicherplatz und erfordert das Synchronisieren von Kopien. Wenn DBMS die Projektion unterstützt, kann eine Teilmenge von Spalten/Feldern für verschiedene Rollen/Gruppen dargestellt werden (auf diese Weise wird zumindest ein Teil der Verarbeitung auf der Seite der Datenbank ausgeführt).
Ich hoffe, dass dies hilft, obwohl es eine späte Antwort ist.
- 1. Löschen von Datenzeilen für mehrere Variablen
- 2. Ein CherryPy Decorator für die Autorisierung schreiben
- 3. Web.config für die Autorisierung eines privaten Benutzerordners
- 4. Verwenden NSURLSession Delegat für die Autorisierung
- 5. URL-Autorisierung fehlgeschlagen für die Anforderung
- 6. Schienen, gem Wahl für die Autorisierung
- 7. MySQL Gruppe von URL-Datenzeilen, die Root-Domain teilen
- 8. Wiederverwendung MVC Controller Rollen Autorisierung für die Anzeige von Menüobjekten
- 9. jqgrid zeigt die Datenzeilen nicht an
- 10. TSQL, um die nächste Anzahl von Datenzeilen zu erhalten?
- 11. Autorisierung/Lizenzierung von Webservice
- 12. Autorisierung und Richtlinien für Gastbenutzer
- 13. Anwendungslogik (Platz für Authentifizierung/Autorisierung)
- 14. Sails.js Autorisierung für Socket-Anfragen
- 15. Laravel Autorisierung für eloquente Sammlung
- 16. Parse - Herunterladen nur aktualisierter Datenzeilen
- 17. Swap-Werte zwischen zwei Datenzeilen
- 18. Verwenden von Android AccountManager für OAuth2-Autorisierung von Drittanbietern
- 19. Internet Explorer gesetzt Cross-Domain-Cookies für die Autorisierung
- 20. {traeche} autorisierung
- 21. OAuth2 Autorisierung
- 22. Laravel und Sentinel: mischen Rollen Middleware für die Autorisierung
- 23. LDAP für die Authentifizierung und Autorisierung in Playframework 2.0
- 24. Muster für die Autorisierung im Repository-Layer der MVC-Anwendung
- 25. ASP.NET MVC: Benutzerdefinierte Parameter für die Anmeldeseite nach der Autorisierung
- 26. Kann die richtlinienbasierte Autorisierung dynamischer sein?
- 27. RabbitMQ Authentifizierung und Autorisierung für HTTP-Publisher
- 28. Kann AzMan für die rollenbasierte Autorisierung von Objekten verwendet werden, die zur Laufzeit erstellt werden?
- 29. Benutzerauthentifizierung und Autorisierung für Schienen App
- 30. Warum überprüft Apigility die Autorisierung nicht?