it-swarm.com.de

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

Im Kontext von Sicherheits-Frameworks kommen einige Begriffe häufig vor: subject, ser und principal, von denen ich bisher keine eindeutigen finden konnte Definition und der Unterschied zwischen ihnen.

Also, was genau bedeuten diese Begriffe und warum werden diese Unterscheidungen von subject und principal benötigt?

151
ams

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 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.
  • Principal - Eine Untergruppe von subject, 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 von Prinzipal bezieht sich normalerweise auf einen menschlichen Operator. Die Unterscheidung verwischt im Laufe der Zeit, da die Wörter "Benutzer" oder "Benutzer-ID" üblicherweise durch "Konto" ersetzt werden. Wenn Sie jedoch zwischen der breiten Klasse von Dingen unterscheiden müssen, die Principals und der Teilmenge von diesen, die interaktive Operatoren sind, die Transaktionen auf nicht deterministische Weise steuern, ist "Benutzer" der richtiges 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 seit der Erfindung des Computers. 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 es handelt sich somit um eine sehr breite Klassifizierung. Das Interessante ist, dass Subjekt Objekt impliziert. Ohne Objekt gibt es kein Subjekt.

Prinzipien sind das, worauf sich die Subjekte konzentrieren. Wenn Sie Ihre Kreditkarte vorlegen, sind Sie der Betreff und die Kontonummer ist der Auftraggeber. In anderen Kontexten ist Ihre Benutzer-ID oder vom Staat ausgestellte Identifikation Ihr Prinzipal. Aber Auftraggeber 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 den Unterzeichner eines signierten ausführbaren Codemoduls bestimmen, aber selbst in diesem Fall ist der Benutzer, der die Anforderung ausführt, immer noch der Betreff.

Der Benutzer ist insofern spezifischer als der Betreff oder der Auftraggeber, als er sich normalerweise auf einen interaktiven Bediener bezieht. Aus diesem Grund haben wir eine grafische Benutzeroberfläche und keine grafische Hauptoberfläche. Ein Benutzer ist eine Instanz von subject, die zu einem principal aufgelöst wird. Ein einzelner Benutzer kann in eine beliebige Anzahl von Principals aufgelöst werden, von jedem Principal wird jedoch erwartet, dass er in einen einzelnen Benutzer aufgelöst wird (vorausgesetzt, die Benutzer beachten die Anforderung, keine IDs zu teilen). Im obigen Beispiel ist der Unterzeichner eines ausführbaren Codemoduls definitiv nicht der Benutzer, aber ist ein gültiger Principal. 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 Sicherheitsleitfäden durchsucht, während ich diese Antwort vorbereitet habe. Keine einzige Quelle, die ich fand und die zumindest quasi maßgeblich war, deckte alle drei Begriffe ab und alle unterschieden sich erheblich in ihrer Verwendung. Dies ist meine Sicht auf die Verwendung der Begriffe sollte, aber aus praktischer Sicht sind die Definitionen, wenn Sie mitten in der Nacht in einem Handbuch stöbern, in der Regel unabhängig vom Anbieter oder Verfasser sagen sie sind. Es ist zu hoffen, dass die Antworten hier genügend Aufschluss geben, um in den Gewässern zu navigieren und alle Sicherheitsdokumente zu analysieren, die diese Begriffe verwenden.

238
T.Rob
62
Marinus

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. Zum Beispiel könnte ein Betreff einen Namen Principal ("Susan Smith") und einen Social Security Number Principal ("987-65-4321") haben, wodurch dieser Betreff von anderen Betreffs unterschieden wird.

15

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

Wenn ein Betreff versucht, auf einen Dienst zuzugreifen, muss der Betreff zuerst authentifiziert werden. Die erfolgreiche Authentifizierung endet mit dem Laden des Sicherheitsprinzipale für diesen Betreff. In einem rollenbasierten Zugriffskontrollsystem hat ein authentifizierter (angemeldeter) Benutzer normalerweise zwei Principals - userId und roleId. In solchen Systemen werden die Berechtigungen (d. H. Wer auf was zugreifen kann) sowohl für Rollen als auch für Benutzer angegeben. Während der Autorisierung (d. H. Überprüfung, ob der angeforderte Dienst zugelassen werden soll) prü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. Betreff ist nur ein Benutzer/Thread/Prozess, der einige Prinzipien enthält.

11
rahulmohan

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 SEHR nützlich und leicht zu verstehen fand:

Subjekte können möglicherweise mehrere Identitäten haben. Jede Identität wird als Principal innerhalb des Subjekts dargestellt. Principals binden einfach Namen an ein Subjekt. Ein Subjekt, das zufällig eine Person ist, Alice, kann beispielsweise zwei Principals haben: eines, das bindet. Alice Bar ", der Name auf ihrem Führerschein, für den Betreff, und ein anderer, der" 999-99-9999 ", die Nummer auf ihrem Studentenausweis, für den Betreff bindet. Beide Auftraggeber beziehen sich auf denselben Betreff, auch wenn jeder Betreff hat einen anderen Namen. "

Ich hoffe es hilft.

10
Rafael

Dies ist der Link für die folgende Erklärung aus Oracle Java SE Documentation.

Betreff, Prinzipale, Authentifizierung und Anmeldeinformationen Um den Zugriff auf Ressourcen zu autorisieren, müssen Anwendungen zunächst die Quelle der Anforderung authentifizieren. Das JAAS-Framework definiert den Begriff subject , der die Quelle einer Anforderung darstellt. Ein Subjekt kann eine beliebige Entität sein, z. B. 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 der auf sichere Weise durchgeführt werden muss. Andernfalls kann sich ein Täter als jemand ausgeben, um Zugang zu einem System zu erhalten. Bei der Authentifizierung muss das Subjekt in der Regel Beweise vorlegen, um seine Identität zu beweisen. Solche Beweise können Informationen sein, die wahrscheinlich nur der Betroffene kennt oder hat (z. B. ein Passwort oder ein Fingerabdruck), oder es können Informationen sein, die nur der Betroffene vorweisen kann (z. B. signierte Daten unter Verwendung eines privaten Schlüssels).

Nach der Authentifizierung wird ein Betreff mit zugeordneten Identitäten oder Principals (vom Typ Java.security.Principal ) ausgefüllt. Ein Betreff 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 bei neuen Diensten verwendet werden. Zu diesen Anmeldeinformationen gehören Kennwörter, Kerberos-Tickets und Zertifikate mit öffentlichem Schlüssel. Berechtigungsnachweise 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 Berechtigungsnachweisklassen sind nicht Teil der zentralen J2SE-API. Jede Klasse kann daher einen Berechtigungsnachweis darstellen.

5
fgul