Quelle est la signification et la différence entre le sujet, l’utilisateur et le principal?

Dans le contexte des frameworks de sécurité, quelques termes sont couramment utilisés, sujet , utilisateur et principal , et je n’ai pas été en mesure de trouver une définition claire et la différence entre eux.

Alors, que signifient exactement ces termes et pourquoi ces distinctions de sujet et de principe sont-elles nécessaires?

Celles-ci sont hiérarchiques dans la manière dont le genre, l’espèce et l’individu sont hiérarchisés.

  • Subject – Dans un contexte de sécurité, un sujet est une entité qui demande l’access à un object . Ce sont des termes génériques utilisés pour désigner la chose demandant l’access et la chose contre laquelle la demande est faite. Lorsque vous vous connectez à une application, vous êtes le sujet et l’application est l’object. Lorsque quelqu’un frappe à votre porte, le visiteur est le sujet qui demande l’access et votre domicile est l’object auquel l’access est demandé.
  • Principal – Sous-ensemble de sujet représenté par un compte, un rôle ou un autre identifiant unique. Lorsque nous arrivons au niveau des détails d’implémentation, les principaux sont les clés uniques que nous utilisons dans les listes de contrôle d’access. Ils peuvent représenter des utilisateurs humains, des automatismes, des applications, des connexions, etc.
  • User – Sous-ensemble de principal faisant généralement référence à un opérateur humain. La distinction est floue avec le temps car les mots “utilisateur” ou “ID utilisateur” sont communément échangés avec “compte”. Toutefois, lorsque vous devez faire la distinction entre les catégories principales de donneurs d’ordre et le sous-ensemble de ceux-ci qui sont des opérateurs interactifs pilotant les transactions de manière non déterministe, le mot “utilisateur” est approprié.

Subject / Object hérite des mêmes termes que ceux utilisés dans la grammaire. Dans une phrase, le sujet est l’acteur et l’object est la chose sur laquelle on agit. En ce sens, l’utilisation a eu lieu depuis l’invention des ordinateurs. Dans un contexte de sécurité, un sujet est tout ce qui peut faire une demande. Comme indiqué ci-dessus, cela ne doit pas nécessairement se limiter à la sécurité informatique et constitue donc une classification très large. La chose intéressante est que le sujet implique un object. Sans object, il n’y a pas de sujet.

Les principaux sont ce que les sujets résolvent. Lorsque vous présentez votre carte de crédit, vous êtes le sujet et le numéro de compte est le principal. Dans d’autres contextes, votre identifiant d’utilisateur ou votre identification émise par votre État est votre principal. Mais les directeurs peuvent être associés à de nombreux types de sujets qui ne sont pas des personnes. Lorsque les applications effectuent des requêtes pour des fonctions au niveau du système, le principal peut être le signataire d’un module de code exécutable signé, mais même dans ce cas, l’utilisateur qui pilote la demande rest le sujet.

L’utilisateur est plus spécifique que le sujet ou le principal en ce sens qu’il fait généralement référence à un opérateur interactif. C’est pourquoi nous avons une interface utilisateur graphique et non une interface graphique principale. Un utilisateur est une instance de sujet qui se résout en un principal . Un utilisateur unique peut résoudre un nombre quelconque de donneurs d’ordre, mais le principal est censé résoudre en un seul utilisateur (en supposant que les utilisateurs observent l’exigence de ne pas partager d’ID). Dans l’exemple ci-dessus, le signataire d’un module de code exécutable n’est certainement pas l’utilisateur, mais c’est un principal valide. L’opérateur interactif essayant de charger le module est l’utilisateur.

Comme indiqué dans les commentaires, même les sources faisant autorité ne sont pas d’accord sur ces termes. J’ai cherché le NIST, le SANS, l’IEEE, le MITRE et plusieurs sources “quasi-autorisées” telles que les guides d’examen de sécurité, tout en préparant cette réponse. Aucune source unique trouvée au moins quasi-autoritaire ne couvrait les trois termes et leur utilisation était très différente. C’est mon sharepoint vue sur la manière dont les termes doivent être utilisés, mais d’un sharepoint vue pratique, lorsque vous examinez un manuel au milieu de la nuit, les définitions ont tendance à être celles du vendeur ou de l’auteur. Espérons que les réponses fournies ici fourniront suffisamment d’informations pour naviguer dans les eaux et parsingr tout document de sécurité en utilisant ces termes.

Jetez un coup d’œil à ma carte de concept d’authentification :

entrer la description de l'image ici

Je pense que la terminologie est tirée de JAAS .

Lorsqu’une application utilise l’authentification JAAS pour authentifier l’utilisateur (ou une autre entité telle qu’un service), un object est créé en conséquence. L’object de l’object est de représenter l’utilisateur authentifié. Un sujet est composé d’un ensemble de principes , chaque principal représentant une identité pour cet utilisateur. Par exemple, un sujet peut avoir un nom principal (“Susan Smith”) et un principal de numéro de sécurité sociale (“987-65-4321”), distinguant ainsi ce sujet des autres sujets.

Subject est l’entité qui demande un service. Cela peut être un utilisateur ou un processus. C’est probablement pourquoi le nom du sujet a été choisi à la place de l’utilisateur.

Lorsqu’un sujet tente d’accéder à un service, le sujet doit d’abord être authentifié. Une authentification réussie se termine par le chargement des principes de sécurité pour ce sujet. Par exemple, dans un système de contrôle d’access basé sur les rôles, un utilisateur authentifié (connecté) aura généralement deux principes – userId et roleId. Dans de tels systèmes, les privilèges (c.-à-d. Qui peut accéder à quoi) sont spécifiés pour les deux rôles et pour les utilisateurs. Lors de l’autorisation (c’est-à-dire vérifier si le service demandé doit être autorisé), le système de sécurité vérifiera l’accessibilité par rapport aux deux principaux.

Par conséquent, du sharepoint vue de l’autorisation, les principaux sont les entités réelles pour lesquelles l’access est autorisé ou non. Subject est juste un utilisateur / thread / processus qui contient des principaux.

Comme l’explique T.Rob, Subject est une entité qui demande l’access à un object. A partir de là, j’ai trouvé un commentaire sur le code javax.security.auth.Subject que j’ai trouvé TRES utile et facile à comprendre:

“Les objects peuvent potentiellement avoir plusieurs identités. Chaque identité est représentée par un principal dans l’object. Les principaux associent simplement des noms à un sujet. Par exemple, un sujet qui se trouve être une personne, Alice, peut avoir deux principaux: un qui lie” Alice Bar “, le nom sur son permis de conduire, à l’object, et un autre qui lie,” 999-99-9999 “, le numéro sur sa carte d’identité d’étudiant, à l’object. Les deux directeurs se réfèrent au même sujet même si chaque a un nom différent. ”

J’espère que cela aide.

Ceci est le lien pour l’explication ci-dessous de la documentation Oracle JAVA SE.

Sujets, principaux, authentification et informations d’identification Pour autoriser l’access aux ressources, les applications doivent d’abord authentifier la source de la demande. Le framework JAAS définit le terme sujet pour représenter la source d’une requête. Un sujet peut être toute entité, telle qu’une personne ou un service. Un sujet est représenté par la classe javax.security.auth.Subject .

L’authentification représente le processus par lequel l’identité d’un sujet est vérifiée et doit être effectuée de manière sécurisée. sinon, l’auteur peut usurper l’identité d’autres personnes pour avoir access à un système. L’authentification implique généralement que le sujet démontre une forme de preuve pour prouver son identité. De telles preuves peuvent être des informations que seul le sujet connaît ou possède (telles qu’un mot de passe ou une empreinte digitale), ou des informations que seul le sujet pourrait produire (telles que des données signées à l’aide d’une clé privée).

Une fois authentifié, un object est rempli avec des identités associées ou des principaux (de type java.security.Principal ). Un sujet peut avoir plusieurs directeurs. Par exemple, une personne peut avoir un nom principal (“John Doe”) et un principal SSN (“123-45-6789”), ce qui la distingue des autres sujets.

Outre les principaux associés, un object peut posséder des atsortingbuts liés à la sécurité, appelés informations d’ identification . Un justificatif d’identité peut contenir des informations utilisées pour authentifier le sujet à de nouveaux services. Ces informations d’identification incluent des mots de passe, des tickets Kerberos et des certificates de clé publique. Les informations d’identification peuvent également contenir des données permettant au sujet d’effectuer certaines activités. Les clés cryptographiques, par exemple, représentent des informations d’identification permettant à l’object de signer ou de chiffrer des données. Les classes d’informations d’identification publiques et privées ne font pas partie de l’API J2SE principale. Toute classe peut donc représenter un justificatif d’identité.