Niemand weiß (fast), was Autorisierung ist.


WĂ€hrend meiner Arbeit als Architekt in IdM-Implementierungsprojekten habe ich Dutzende Implementierungen von Berechtigungsmechanismen sowohl in internen Lösungen von Unternehmen als auch in kommerziellen Produkten analysiert und kann sagen, dass sie bei relativ komplexen Anforderungen fast ĂŒberall nicht richtig oder zumindest nicht optimal ausgefĂŒhrt werden. Der Grund ist meiner Meinung nach die geringe Aufmerksamkeit des Kunden und der Entwickler fĂŒr diesen Aspekt in der Anfangsphase und die unzureichende EinschĂ€tzung der Auswirkungen von Anforderungen. Dies bestĂ€tigt indirekt den weit verbreiteten Missbrauch des Begriffs: Wenn ich den Ausdruck "Zwei-Faktor-Autorisierung" sehe, bekomme ich Schmerzen direkt unter meinem RĂŒcken. Aus GrĂŒnden des Interesses haben wir die ersten 100 Artikel zu HabrĂ© in den Suchergebnissen nach "Autorisierung" analysiert, das Ergebnis war enttĂ€uschend, es gab viel Schmerz:


In mehr als 80% der FĂ€lle wird der Begriff falsch verwendet, stattdessen sollte das Wort „Authentifizierung“ verwendet werden. Als nĂ€chstes werde ich versuchen zu erklĂ€ren, was es ist und warum es Ă€ußerst wichtig ist, diesem Thema besondere Aufmerksamkeit zu widmen.

Was ist das


So zitieren Sie Wikipedia:

Autorisierung (englische Autorisierung "Erlaubnis; Autorisierung") - Erteilen einer bestimmten Person oder Personengruppe das Recht, bestimmte Handlungen auszufĂŒhren; sowie den Prozess des ÜberprĂŒfens (BestĂ€tigens) dieser Rechte, wenn versucht wird, diese Aktionen auszufĂŒhren.

Aus der Sicht eines Informationssystems ist dies der Entscheidungsprozess fĂŒr die Bereitstellung des Zugangs zum Subjekt, um die Operation auf der Grundlage von Kenntnissen ĂŒber das Subjekt durchzufĂŒhren. Zu diesem Zeitpunkt sollte das Subjekt in der Regel bereits identifiziert (wir mĂŒssen wissen, wer es ist) und authentifiziert sein (seine IdentitĂ€t wird bestĂ€tigt).

Die Implementierung von Berechtigungen bei der Entwicklung eines auf den Unternehmenssektor ausgerichteten Unternehmensinformationssystems oder -produkts ist eine sehr schwierige und verantwortungsvolle Aufgabe, der in der Entwurfsphase und in der ersten Entwicklungsphase hĂ€ufig nicht genĂŒgend Aufmerksamkeit geschenkt wird, was in Zukunft zu einer „KrĂŒcken“ -Implementierung fĂŒhrt.

Ausgabe


Lassen Sie uns sehen, welche Berechtigungsanforderungen erfĂŒllt sind und warum es Ă€ußerst wichtig ist, sie beim Entwurf eines Systems zunĂ€chst zu berĂŒcksichtigen und nicht fĂŒr die Zukunft zu verschieben. In einem Unternehmensinformationssystem gibt es normalerweise zwei Quellen fĂŒr Berechtigungsanforderungen: GeschĂ€fts- und Informationssicherheit. Im allgemeinen Fall möchte ein Unternehmen Geheimnisse geheim halten und den Benutzern Berechtigungen gemĂ€ĂŸ ihrer Funktion im GeschĂ€ftsprozess erteilen, und die Sicherheit möchte sicherstellen, dass die Berechtigungen fĂŒr jeden Benutzer mindestens ausreichen, und den Zugriff ĂŒberwachen.

Nehmen wir zum Beispiel ein hypothetisches System fĂŒr die Aushandlung großer UnternehmensvertrĂ€ge, ein typisches blutiges Unternehmen. Die folgenden Anforderungen an die GeschĂ€ftserlaubnis werden höchstwahrscheinlich auftreten:

  1. Ein Benutzer, der nicht mit einem bestimmten Vertrag verbunden ist, sollte ihn nicht im System sehen
  2. Der Autor des Vertrags sollte es in allen Phasen sehen.
  3. Ein Benutzer mit einer Note von mindestens 10 hat das Recht, einen Vertrag zu erstellen.
  4. Der Besucher muss den Vertrag sehen, beginnend mit dem Eingang auf der BĂŒhne und weiter.
  5. Abteilungsleiter sollten die VertrÀge ihrer Einheiten in der Hierarchie sehen.
  6. Der Vertragsautor und der Referatsleiter haben das Recht, den Vertrag in jedem Stadium der Genehmigung zu widerrufen.
  7. Die GeschĂ€ftsfĂŒhrung und das Sekretariat der Hauptverwaltung sollten die Unterlagen aller Zweigstellen einsehen.
  8. Der Benutzer, der den Vertrag erstellt hat, sollte nicht berechtigt sein, diesen zu billigen.

Aus SicherheitsgrĂŒnden könnten wir folgende Anforderungen stellen :

  1. Wissen, wer Zugriff auf einen bestimmten Vertrag hat.
  2. Wissen, wer zu einem bestimmten Zeitpunkt Zugang zu einem bestimmten Vertrag hatte.
  3. Dem Benutzer den Zugriff auf zuvor verfĂŒgbare Dokumente zu verweigern, wenn er seine Arbeitsaufgaben Ă€ndert.

Ich denke die Entwickler hatten schon Angst :). Ein zusĂ€tzlicher Schmerz ist die hohe VariabilitĂ€t dieser Anforderungen. Übrigens sind nach den Statistiken einer großen 1C-Franchise zusĂ€tzliche Autorisierungsanforderungen eine der hĂ€ufigsten Aufgaben fĂŒr das Anpassen typischer Konfigurationen.

Deshalb zeigen wir auf, warum diese Anforderungen problematisch sind:

  • Sie sind nicht stabil. Die Wahrscheinlichkeit ihrer VerĂ€nderung, auch kurzfristig, betrĂ€gt 1.
  • Sie sind Querschnittsthemen. Ihre Implementierung wirkt sich auf alle Ebenen aus, vom Datenbankdesign bis zur BenutzeroberflĂ€che.
  • Sie liegen in der Ebene des Themenbereichs. Dies fĂŒhrt zu einer starken KonnektivitĂ€t des Autorisierungsmechanismus mit einer Schicht von GeschĂ€ftslogik.
  • Sie wirken sich auf die Leistung aus.

Lösungen


Die entwickelten Zugangskontrollmodelle helfen uns, dieses Problem zu lösen:

MAC ist ein Zugangsberechtigungsmodell. Der Zugriff des Subjekts auf das Objekt wird durch seine Zugriffsebene bestimmt: Die Zugriffsebene des Subjekts sollte nicht niedriger sein als die Geheimhaltungsstufe des Objekts.

DAC - Direktzugriffskontrolle. Der Zugriff des Subjekts auf das Objekt wird durch das Vorhandensein des Subjekts in der Zugriffsliste (ACL) des Objekts bestimmt.

RBAC ist ein Vorbild fĂŒr die Zugriffskontrolle. Der Zugriff des Subjekts auf das Objekt wird durch das Vorhandensein der Rolle des Subjekts bestimmt, die die dem angeforderten Zugriff entsprechenden Befugnisse enthĂ€lt.

ABAC ist ein Attributmodell der Zugriffskontrolle. Der Zugriff des Subjekts auf das Objekt wird dynamisch basierend auf einer Analyse der Richtlinien bestimmt, die die Werte der Attribute des Subjekts, Objekts und der Umgebung berĂŒcksichtigen. Dies beinhaltet auch PBAC, RAdAC, CBAC mit einigen Nuancen ( schicke Rezension von CUSTIS ).

Es wird dringend empfohlen, sie in ihrer ursprĂŒnglichen Form zu verwenden, ohne das Rad neu zu erfinden. In komplexen Informationssystemen wird hĂ€ufig eine Kombination von Modellen verwendet. Beispielsweise ist die Kombination ACL + RBAC beliebt, wenn eine Rolle in einer Zugriffsliste enthalten ist. Der richtige Einsatz von Fertigmodellen ist jedoch auch keine leichte Aufgabe. Nicht jeder kann das richtige Modell auswĂ€hlen, es von der GeschĂ€ftslogik trennen und eine akzeptable Leistung des Autorisierungsmechanismus erzielen.

Um die oben im Abschnitt „Probleme“ genannten Anforderungen zu implementieren, wĂŒrde ich auf den ersten Blick die Kombination PBAC + ACL wĂ€hlen. Die Anforderungen könnten wie folgt umgesetzt werden:
GeschÀftsanforderung
Lösung
1
Ein Benutzer, der nicht mit einem bestimmten Vertrag verbunden ist, sollte ihn nicht im System sehen
Dies spricht fĂŒr die ACL, da es ziemlich schwierig ist, die Einstellung des Benutzers zum GeschĂ€ftsprozess zu bestimmen, ohne sie zum Zeitpunkt der Einbindung in eine Liste zu schreiben. Dies wĂ€re die beste Lösung hinsichtlich der Leseleistung in Bezug auf die Richtlinienimplementierung.
2
Der Autor des Vertrags sollte es in allen Phasen sehen
Die Anforderung kann von beiden Mechanismen implementiert werden, aber ich halte die ACL fĂŒr optimal, da es in diesem Fall einfacher ist, die Anforderung Nr. 3 von IS zu implementieren.
3
Ein Benutzer mit einer Note von mindestens 10 hat das Recht, einen Vertrag zu erstellen
Dies ist eine Richtlinie (PBAC), keine Optionen
4
Der Besucher muss den Vertrag von dem Moment an sehen, an dem er auf der BĂŒhne und darĂŒber hinaus eintrifft
ACL wird optimal sein
5
Abteilungsleiter sollten die VertrÀge ihrer Einheiten in der Hierarchie sehen
Eine wunderbare Aufgabe fĂŒr PBAC, aber ihre Anwendung kann die Leseleistung verringern, und die Anforderungen 1 und 2 der Informationssicherheit erfordern zusĂ€tzlichen Aufwand. Sie sollten daher die Implementierung in Betracht ziehen.
6
Der Vertragsautor und der Referatsleiter haben das Recht, den Vertrag in jedem Stadium der Genehmigung zu widerrufen
PBAC reicht völlig aus
7
Die GeschĂ€ftsfĂŒhrung und das Sekretariat der Hauptverwaltung sollten die Unterlagen aller Zweigstellen einsehen
PBAC mit den gleichen EinschrÀnkungen wie in Abschnitt 5
8
Der Benutzer, der den Vertrag erstellt hat, sollte nicht berechtigt sein, diesen zu billigen
Diese Anforderung könnte mit PBAC abgeschlossen werden, dies sollte jedoch nicht erfolgen. Dies ist der Ort, an dem Autorisierungskonflikte mit der GeschĂ€ftslogik auftreten. In diesem Fall sollte die GeschĂ€ftslogik die Verantwortung ĂŒbernehmen.

Die aufgefĂŒhrten IS-Anforderungen werden problemlos mithilfe von ACLs implementiert, die GeschĂ€ftsanforderungen 5 und 7 werden jedoch mithilfe von PBAC implementiert. Um die Anforderungen von IS 1 und 2 zu implementieren, mĂŒssen Sie ihnen ein Journal oder einen Ă€hnlichen Mechanismus hinzufĂŒgen, da dynamische Regeln bei aller Schönheit schlecht geprĂŒft werden:
IB-Anforderung
Lösung
1
Wissen, wer Zugriff auf einen bestimmten Vertrag hat
General Journal fĂŒr ACL und PBAC
2
Wissen, wer zu einem bestimmten Zeitpunkt Zugang zu einem bestimmten Vertrag hatte
General Journal fĂŒr ACL und PBAC
3
Dem Benutzer den Zugriff auf zuvor verfĂŒgbare Dokumente zu verweigern, wenn er seine Arbeitsaufgaben Ă€ndert
ACL

Total


Autorisierung ist ein unverdient vernachlĂ€ssigtes Thema, sowohl in Veröffentlichungen als auch direkt im Entwicklungsprozess. Die Zwei-Faktor-Authentifizierung per SMS wird vom Kind auf die Site geschraubt. Das korrekte Implementieren von Berechtigungen im Unternehmenssystem ohne KrĂŒcken ist eine schwierige Aufgabe, der sich Lords und Architekten entziehen, und viele gĂ€ngige kommerzielle Produkte (z. B. Atlassian Jira) stehen aufgrund der KomplexitĂ€t der Anforderungen auf KrĂŒcken.

Wir planen eine Reihe von Artikeln zu Berechtigungsmodellen und zum Thema insgesamt. Wir freuen uns ĂŒber Fragen und Anregungen zu Themen, die berĂŒcksichtigt werden mĂŒssen.

Source: https://habr.com/ru/post/de480576/


All Articles