Was ist die Bedeutung und der Unterschied zwischen Subjekt, Benutzer und Auftraggeber?

173

Im Zusammenhang mit Sicherheits-Frameworks kommen häufig einige Begriffe zu Thema , Benutzer und Prinzipal vor , von denen ich keine klare Definition und den Unterschied zwischen ihnen finden konnte.

Was genau bedeuten diese Begriffe und warum sind diese Unterscheidungen zwischen Subjekt und Prinzip erforderlich?

ams
quelle

Antworten:

277

Diese sind hierarchisch in der Art, wie Gattung, Art und Individuum hierarchisch sind.

  • Betreff - In einem Sicherheitskontext ist ein Betreff eine Entität, die den Zugriff auf ein Objekt anfordert . Dies sind allgemeine Begriffe, die verwendet werden, um das Objekt zu bezeichnen, das den Zugriff anfordert, und das Objekt, gegen das die Anforderung gestellt wird. Wenn Sie sich bei einer Anwendung anmelden, sind Sie der Betreff und die Anwendung ist das Objekt. Wenn jemand an Ihre Tür klopft, ist der Besucher das Subjekt, das den Zugang anfordert, und Ihr Zuhause ist das Objekt, von dem der Zugang angefordert wird.
  • Prinzipal - Eine Teilmenge des Betreffs , die durch ein Konto, eine Rolle oder eine andere eindeutige Kennung dargestellt wird. Wenn wir die Ebene der Implementierungsdetails erreichen, sind Principals die eindeutigen Schlüssel, die wir in Zugriffssteuerungslisten verwenden. Sie können menschliche Benutzer, Automatisierung, Anwendungen, Verbindungen usw. darstellen.
  • Benutzer - Eine Teilmenge des Prinzipals, die sich normalerweise auf einen menschlichen Bediener bezieht. Die Unterscheidung verwischt im Laufe der Zeit, da die Wörter "Benutzer" oder "Benutzer-ID" üblicherweise mit "Konto" ausgetauscht werden. Wenn Sie jedoch zwischen der breiten Klasse von Prinzipien , die Prinzipien sind, und der Teilmenge dieser Dinge, die interaktive Operatoren sind, die Transaktionen auf nicht deterministische Weise steuern, unterscheiden müssen, ist "Benutzer" das richtige Wort.

Subjekt / Objekt erbt von denselben Begriffen wie in der Grammatik. In einem Satz ist das Subjekt der Schauspieler und das Objekt das Ding, auf das gehandelt wird. In diesem Sinne gibt es die Verwendung schon seit der Erfindung der Computer. In einem Sicherheitskontext ist ein Betreff alles, was eine Anfrage stellen kann. Wie oben erwähnt, muss dies nicht auf die IT-Sicherheit beschränkt sein, und dies ist eine sehr breite Klassifizierung. Das Interessante ist, dass Subjekt Objekt impliziert. Ohne Objekt gibt es kein Subjekt.

Prinzipien sind das, worauf sich die Themen konzentrieren. Wenn Sie Ihre Kreditkarte vorlegen, sind Sie der Betreff und die Kontonummer ist der Auftraggeber. In anderen Kontexten ist Ihre Benutzer-ID oder Ihre vom Staat ausgestellte Identifikation Ihr Auftraggeber. Aber Prinzipien können mit vielen Arten von Themen in Verbindung gebracht werden, die keine Menschen sind. Wenn Anwendungen Anforderungen für Funktionen auf Systemebene stellen, kann der Principal der Unterzeichner eines signierten ausführbaren Codemoduls sein, aber selbst in diesem Fall ist der Benutzer, der die Anforderung steuert, immer noch der Betreff.

Der Benutzer ist spezifischer als das Thema oder der Auftraggeber, da er sich normalerweise auf einen interaktiven Operator bezieht. Deshalb haben wir eine grafische Benutzeroberfläche und keine grafische Hauptoberfläche. Ein Benutzer ist eine Instanz eines Betreffs , die in einen Principal aufgelöst wird . Ein einzelner Benutzer kann in eine beliebige Anzahl von Principals aufgelöst werden, es wird jedoch erwartet, dass jeder Principal in einen einzelnen Benutzer aufgelöst wird (vorausgesetzt, die Benutzer beachten die Anforderung, keine IDs gemeinsam zu nutzen). In dem obigen Beispiel ist der Unterzeichner eines ausführbaren Code - Modul definitiv nicht der Benutzer, aber es ist ein gültiges Haupt. Der interaktive Operator, der versucht, das Modul zu laden, ist der Benutzer.

Wie in den Kommentaren erwähnt, stimmen selbst die maßgeblichen Quellen diesen Bedingungen nicht zu. Ich habe NIST, SANS, IEEE, MITRE und verschiedene "quasi-maßgebliche" Quellen wie Leitfäden für Sicherheitsprüfungen durchsucht, während ich diese Antwort vorbereitet habe. Keine einzige Quelle, die ich gefunden habe und die zumindest quasi maßgeblich war, deckte alle drei Begriffe ab und alle unterschieden sich signifikant in ihrer Verwendung. Dies ist meine Auffassung, wie die Begriffe verwendet werden sollten , aber aus praktischer Sicht sind die Definitionen, wenn Sie mitten in der Nacht über ein Handbuch nachdenken, in der Regel so, wie es der Anbieter oder Autor sagt. Hoffentlich bieten die Antworten hier jedoch genügend Einblicke, um durch die Gewässer zu navigieren und Sicherheitsdokumente unter Verwendung dieser Begriffe zu analysieren.

T.Rob
quelle
3
Was ist der Vorteil einer Aufschlüsselung nach Thema, Auftraggeber, Benutzer und seiner zusätzlichen Komplexität? Welchen Nutzen ziehen wir aus dieser zusätzlichen Komplexität?
Ams
19
Die Fähigkeit, das richtige Maß an Spezifität zu wählen. Es ist der gleiche Vorteil, den wir daraus ziehen, zwischen einem Ziel und einer Warteschlange oder einem Thema unterscheiden zu können. Die Möglichkeit, zwischen verschiedenen Spezifitätsebenen in einer Taxonomie zu wählen, ermöglicht eine präzise Ausdrucksweise, die die Absicht eines Schriftstellers besser an einen Leser kommuniziert. Bei der Programmierung haben wir den Luxus / Fluch, dass die CPU unsere Anweisungen nur auf eine Weise interpretiert und wir gezwungen sind, ihre Präzision zu verwenden. Aber in der menschlichen Sprache brauchen wir Nuancen und Präzision, um Bedeutung effizient zu vermitteln.
T. Rob
1
T.Rob, großartig, aber könnten Sie "Benutzer - Teilmenge des Prinzipals" klarstellen? Wenn John das Thema ist und "Konto # 123" sein Auftraggeber ist, ist der Benutzer wer? Gibt es zwei Johns? Da Gattung> Art> Individuum immer spezifischer wird, sollte John (Benutzer) spezifischer sein als John (Subjekt). Oder fehlt mir etwas?
Mellow-Yellow
1
Stellen Sie sich zwei Prinzipien vor, bei denen # 123 John ist und # 124 sich auf ein Dienstkonto bezieht. Wir möchten diese wahrscheinlich in Bezug auf Kennwortrichtlinien, Anmeldefunktionen usw. unterschiedlich behandeln. Prinzipien vom Typ 'Benutzer' unterliegen der Komplexität von Passwörtern und Ablaufrichtlinien, während Prinzipien vom Typ 'Dienstkonto' möglicherweise nicht einmal ein Passwort haben. Wenn wir mit der Kategorisierung von Prinzipaltypen beginnen, erstellen wir Teilmengen. Hilft das? Oder habe ich einfach mehr Schlamm aufgewirbelt?
T. Rob
Ja, das hilft. Also konkret irgendwelche Korrekturen an den folgenden? Vielleicht möchten Sie es kopieren und in einen Editor wie Notepad ++ einfügen und vor jedem John einen Zeilenumbruch einfügen (SO verbietet Zeilenumbrüche in Kommentaren): John (human) SUBJECT > username_1 PRINCIPAL > password_1 USER John (human) SUBJECT > username_1 PRINCIPAL > password_2 USER John (human) SUBJECT > username_1 PRINCIPAL > smartcard_1 USER John (human) SUBJECT > username_1 PRINCIPAL > cellphone_1 USER
Mellow-Yellow
19

Ich denke, die Terminologie stammt von JAAS .

Wenn eine Anwendung die JAAS-Authentifizierung verwendet, um den Benutzer (oder eine andere Entität wie einen Dienst) zu authentifizieren, wird als Ergebnis ein Betreff erstellt. Der Zweck des Betreffs besteht darin, den authentifizierten Benutzer darzustellen. Ein Betreff besteht aus einer Reihe von Principals , wobei jeder Principal eine Identität für diesen Benutzer darstellt. Beispielsweise könnte ein Subjekt einen Namen Principal ("Susan Smith") und einen Principal der Sozialversicherungsnummer ("987-65-4321") haben, wodurch dieses Subjekt von anderen Subjekten unterschieden wird.

Aravind Yarram
quelle
2
Ich habe diese Definition schon einmal gesehen, sie ist zu dicht. Können Sie sie näher erläutern, insbesondere, wie sich ein Benutzer von einem Prinzipal unterscheidet, warum der Begriff Betreff verwendet wird und nicht nur Benutzer. Wenn diese Begriffe eine Bedeutung haben, die über JAAS hinausgeht, möchte ich mich unbedingt mit dieser Bedeutung vertraut machen. Wenn diese Begriffe Erfindungen von JAAS sind, dann haben die Sun Engineers, die sie erstellt haben, vermutlich schlechte Namen für das gewählt, was diese Konzepte bedeuten. Ich habe einigen Programmierern diese Fragen gestellt und konnte keine klaren Antworten erhalten. Jeder scheint ein anderes Verständnis dieser Begriffe zu haben.
Ams
Ein Principal scheint nur eine Möglichkeit zu sein, ein Subjekt zu identifizieren. Anders ausgedrückt, jeder Principal könnte theoretisch als Primärschlüssel in Ihrer Benutzerdatenbank dienen.
Platinum Azure
3
Das Lexikon ist JAAS weit voraus. JAAS verwendet nur einen Teil davon und manchmal auf nicht standardmäßige Weise. Ein Teil des Problems, das diese Frage aufgeworfen hat, besteht darin, dass die Konzepte aus den Kontexten gelernt werden, in denen die Terminologie verwendet wird, und dann auf leicht unterschiedliche Weise wiederverwendet werden. Wenn maßgebliche Quellen schwer zu finden sind oder einfach ignoriert werden, verschieben sich die Bedeutungen im Laufe der Zeit. Wenn es um Sicherheit geht, bei der Präzision eine absolute Voraussetzung ist, beeinträchtigt diese Tendenz zur Mehrdeutigkeit unsere Fähigkeit, sichere Designs zu erstellen und zu implementieren.
T. Rob
@ T.Rob machen Sie irgendwelche Papiertitel oder maßgeblichen Referenzen, die Sie teilen können.
Ams
Leider stimmen auch die maßgeblichen Quellen nicht überein. SANS definiert überhaupt kein Prinzipal oder Subjekt bit.ly/hl4rUP und NIST bit.ly/fE7NJs definiert Subjekt spezifisch als Person. Andere "maßgebliche" Quellen sind ähnlich vage, was angesichts der Bedeutung der Klarheit in diesem Bereich eher enttäuschend ist. Das IEE verfügt über ein Glossar, das Sie jedoch nur mit Mitgliedschaft oder Abonnement lesen können, sodass es in einer Diskussion mit einem breiten Publikum nur begrenzt verwendet werden kann. Ich stützte meine Antwort teilweise auf Shon Harris 'CISSP Exam Guide.
T. Rob
12

Betreff ist die Entität, die einen Dienst anfordert. Es kann ein Benutzer oder ein Prozess sein. Wahrscheinlich wurde deshalb der Name Betreff anstelle des Benutzers gewählt.

Wenn ein Betreff versucht, auf einen Dienst zuzugreifen, muss der Betreff zuerst authentifiziert werden. Die erfolgreiche Authentifizierung endet mit dem Laden der Sicherheitsprinzipale für diesen Betreff. In einem rollenbasierten Zugriffskontrollsystem hat ein authentifizierter (angemeldeter) Benutzer normalerweise zwei Prinzipien - userId und roleId. In solchen Systemen werden die Berechtigungen (dh wer kann auf was zugreifen) sowohl für Rollen als auch für Benutzer angegeben. Während der Autorisierung (dh der Überprüfung, ob der angeforderte Dienst zulässig sein soll) überprüft das Sicherheitssystem die Zugänglichkeit für beide Principals.

Aus Sicht der Autorisierung sind Principals daher die tatsächlichen Entitäten, für die der Zugriff zulässig oder nicht zulässig ist. Der Betreff ist nur ein Benutzer / Thread / Prozess, der einige Prinzipien enthält.

rahulmohan
quelle
Was bringt es, mehrere Prinzipien pro Fach zu haben?
Ams
6
Ich kann mir zwei Vorteile vorstellen: (1) Betrachten Sie Benutzer Alice mit den Prinzipien Benutzer-ID ("Alice"), Rolle ("Manager"), Abteilung ("Vertrieb"), die auf einen Dienst (das Objekt) zugreifen. Die Servicezugriffskontrolle kann dann als "Zulassen für Rolle (Manager)" oder "Nicht zulassen für Abteilung (Vertrieb)" usw. angegeben werden, anstatt anzugeben, ob Alice darauf zugreifen kann oder nicht. Solche Zugriffskontrollsysteme sind einfacher zu verwalten, da der Sicherheitsadministrator keine Zugriffsrechte für ALLE Benutzer für ALLE Dienste angeben muss.
Rahulmohan
4
(2) In einem Unternehmenssystem müssen Benutzer normalerweise bei mehreren Systemen authentifiziert werden, bevor ein zusammengesetzter Dienst ausgeführt werden kann. Es kann vorkommen, dass jedes dieser Systeme über eigene Zugriffskontrollmechanismen verfügt, für die unterschiedliche Details erforderlich sind. Ein System verwendet SSN und ein anderes verwendet userId. Daher sollte dasselbe Thema beide Prinzipien besitzen, damit es auf beide zugreifen kann
rahulmohan
1
Ich habe das Gefühl, dass 99% der Verwirrung mit dieser Terminologie mit einem Satz nach dem Motto "Ein Prinzipal ist im Grunde eine Gruppe" gelöst werden könnte.
Trejkaz
1
?! ... warum sagst du, ein Principal ist eine Gruppe?
Rafael
10

Wie T.Rob erklärte, ist Subject eine Entität, die den Zugriff auf ein Objekt anfordert. Ab diesem Punkt habe ich einen Kommentar zu javax.security.auth.Subject-Code gefunden, den ich als SEHR nützlich und leicht verständlich empfunden habe:

"Subjekte können möglicherweise mehrere Identitäten haben. Jede Identität wird als Prinzipal innerhalb des Subjekts dargestellt. Prinzipien binden einfach Namen an ein Subjekt. Beispielsweise kann ein Subjekt, das zufällig eine Person ist, Alice, zwei Prinzipien haben: eines, das bindet." Alice Bar ", der Name auf ihrem Führerschein, für das Fach, und ein anderer, der" 999-99-9999 ", die Nummer auf ihrem Studentenausweis, für das Fach bindet. Beide Prinzipien beziehen sich auf dasselbe Fach, obwohl beide hat einen anderen Namen. "

Ich hoffe es hilft.

Rafael
quelle
7

Dies ist der Link für die folgende Erläuterung aus der Oracle JAVA SE-Dokumentation.

Themen, Prinzipien, Authentifizierung und Anmeldeinformationen Um den Zugriff auf Ressourcen zu autorisieren, müssen Anwendungen zuerst die Quelle der Anforderung authentifizieren. Das JAAS-Framework definiert den Begriff Betreff , der die Quelle einer Anforderung darstellt. Ein Subjekt kann eine beliebige Entität sein, beispielsweise eine Person oder eine Dienstleistung. Ein Betreff wird durch die Klasse javax.security.auth.Subject dargestellt .

Die Authentifizierung stellt den Prozess dar, mit dem die Identität eines Subjekts überprüft wird, und muss auf sichere Weise durchgeführt werden. Andernfalls kann sich ein Täter als andere ausgeben, um Zugriff auf ein System zu erhalten. Bei der Authentifizierung weist das Subjekt normalerweise Beweise auf, um seine Identität zu beweisen. Solche Beweise können Informationen sein, die nur das Subjekt wahrscheinlich kennt oder hat (wie ein Passwort oder ein Fingerabdruck), oder es können Informationen sein, die nur das Subjekt produzieren kann (wie signierte Daten, die einen privaten Schlüssel verwenden).

Nach der Authentifizierung wird ein Betreff mit zugehörigen Identitäten oder Principals (vom Typ java.security.Principal ) gefüllt . Ein Subjekt kann viele Prinzipien haben. Beispielsweise kann eine Person einen Namen Principal ("John Doe") und einen SSN Principal ("123-45-6789") haben, die sie von anderen Subjekten unterscheiden.

Zusätzlich zu den zugeordneten Principals kann ein Betreff sicherheitsrelevante Attribute besitzen, die als Anmeldeinformationen bezeichnet werden . Ein Berechtigungsnachweis kann Informationen enthalten, die zur Authentifizierung des Betreffs für neue Dienste verwendet werden. Zu diesen Anmeldeinformationen gehören Kennwörter, Kerberos-Tickets und Zertifikate mit öffentlichem Schlüssel. Anmeldeinformationen können auch Daten enthalten, mit denen der Betreff bestimmte Aktivitäten ausführen kann. Kryptografische Schlüssel stellen beispielsweise Anmeldeinformationen dar, mit denen der Betreff Daten signieren oder verschlüsseln kann. Öffentliche und private Anmeldeinformationsklassen sind nicht Teil der J2SE-Kern-API. Jede Klasse kann daher einen Berechtigungsnachweis darstellen.

fgul
quelle
Obwohl ich der Antwort von T.Rob zustimme, deutet diese von Aram - die besagt, dass "ein Subjekt jede Entität sein kann" - auf ERM hin: das Entity-Relationship-Modell, auf dem die meisten Datenbanken basieren. In diesem Modell entspricht "Entität" im Kontext der Sicherheit "Subjekt", aber je nachdem, was Sie modellieren, kann es sich um den Auftraggeber (Bankkonto, SSN-Nummer) oder den Benutzer (John Smith) handeln, wie in Marinus vorgeschlagen ' Antworten. Wikipedia: en.wikipedia.org/wiki/Entity%E2%80%93relationship_model
mild-gelb
0

Laut rahulmohan , denke ich, bevor die Authentifizierung subjet ist, nachdem die Authentifizierung pricipal ist, kann ein subjet im Unterschied dazu viele pricipal haben

ChinaJavaDeveloper
quelle