Dans le contexte des cadres de sécurité, quelques termes sont couramment employés sujet, tilisateur et principal, dont je n'ai pas été capable de trouver définition et la différence entre eux.
Alors, que signifient exactement ces termes et pourquoi ces distinctions de sujet et principal sont-elles nécessaires?
Celles-ci sont hiérarchisées au même titre que le genre, l'espèce et l'individu.
Sujet/Objet hérite des mêmes termes que ceux utilisés en grammaire. Dans une phrase, le sujet est l'acteur et l'objet est la chose sur laquelle on agit. En ce sens, l'utilisation existe depuis avant l'invention des ordinateurs. Dans un contexte de sécurité, un sujet est tout ce qui peut faire une demande. Comme indiqué ci-dessus, il n’est pas nécessaire de limiter la sécurité informatique à une classification très large. La chose intéressante est que le sujet implique objet. Sans objet, il n'y a pas de sujet.
Les directeurs sont ce que les sujets décident de résoudre. 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 utilisateur ou votre identité émise par l'é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 demandent des fonctions au niveau du système, le principal est le signataire d'un module de code exécutable signé, mais même dans ce cas, l'utilisateur à l'origine de la requête reste 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 principale graphique. Un utilisateur est une instance de sujet qui se résout en un principal . Un seul utilisateur peut résoudre un nombre quelconque de principaux, mais tout principal est censé le faire en un seul utilisateur (en supposant que les personnes respectent l'obligation de ne pas partager les identifiants). Dans l'exemple ci-dessus, le signataire d'un module de code exécutable est définitivement pas l'utilisateur, mais il est un principal valide. L'opérateur interactif qui tente 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é dans NIST, SANS, IEEE, MITRE et plusieurs sources "quasi-autoritaires" telles que des guides d'examen de sécurité lors de la préparation de cette réponse. Je n'ai trouvé aucune source unique, qui au moins était quasi-autoritaire, couvrant les trois termes et dont l'utilisation était très différente. C’est mon point de vue sur la façon dont les termes devraient être utilisés, mais d’un point de vue pratique, lorsque vous vous penchez sur un manuel au milieu de la nuit, le les définitions ont tendance à être ce que le vendeur ou l'auteur dit qu'elles sont. Espérons que les réponses fournies ici fourniront suffisamment d'informations pour naviguer dans les eaux et analyser tout document de sécurité en utilisant ces termes.
Regardez ma carte conceptuelle d'authentification :
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 objet est créé. L'objet du sujet 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 de principal ("Susan Smith") et un numéro de sécurité sociale ("987-65-4321"), distinguant ainsi ce sujet des autres sujets.
Subject est l'entité qui demande un service. Ce peut être un utilisateur ou un processus. C’est probablement pour cette raison que le nom Subject a été choisi à la place d’utilisateur.
Lorsqu'un sujet tente d'accéder à un service, il doit d'abord être authentifié. L'authentification réussie se termine par le chargement du Security Principals pour cet objet. Par exemple, dans un système de contrôle d'accès basé sur un rôle, un utilisateur authentifié (connecté) aura généralement deux mandataires: userId et roleId. Dans de tels systèmes, les privilèges (c'est-à-dire qui peut accéder à quoi) sont spécifiés pour les rôles et pour les utilisateurs. Lors de l’autorisation (c’est-à-dire si le service demandé doit être autorisé), le système de sécurité vérifie l’accessibilité par rapport aux deux principaux.
Par conséquent, du point de vue de l’autorisation, les principaux sont les entités réelles pour lesquelles l’accès est autorisé ou interdit. Le sujet est juste un utilisateur/thread/processus qui contient certains principes.
Comme T.Rob l'a expliqué, le sujet est toute entité qui demande l'accès à un objet. À partir de là, j'ai trouvé un commentaire sur le code javax.security.auth.Subject que j'ai trouvé TRÈS utile et facile à comprendre:
"Les sujets peuvent potentiellement avoir plusieurs identités. Chaque identité est représentée en tant que principal dans le sujet. Les principes associent simplement des noms à un sujet. Par exemple, un sujet qui se trouve être une personne, Alice, pourrait avoir deux principes: l'un qui lie" Alice Bar ", le nom figurant sur son permis de conduire, sur le sujet, et un autre qui lie," 999-99-9999 ", le numéro figurant sur sa carte d'identité d'étudiant, sur le sujet. Les deux directeurs se réfèrent au même sujet, même si a un nom différent. "
J'espère que ça aide.
Ceci est le lien pour l'explication ci-dessous de Oracle Java SE Documentation.
Sujets, principes, authentification et informations d'identification Pour autoriser l'accès aux ressources, les applications doivent d'abord authentifier la source de la demande. Le framework JAAS définit le terme subject pour représenter la source d'une requête. Un sujet peut être n'importe quelle 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 permettant de vérifier l'identité d'un sujet et doit être effectuée de manière sécurisée. sinon, l'auteur peut usurper l'identité d'autres personnes pour avoir accès à un système. L'authentification implique généralement que le sujet démontre une forme de preuve pour prouver son identité. Ces preuves peuvent être des informations que seul le sujet aurait probablement connaître ou avoir (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 utilisant une clé privée).
Une fois authentifié, un sujet est rempli avec les identités associées, ou Principaux (de type Java.security.Principal ). Un sujet peut avoir plusieurs directeurs. Par exemple, une personne peut avoir un nom de principal ("John Doe") et un principal de SSN ("123-45-6789"), qui la distingue des autres sujets.
En plus des entités principales associées, un sujet peut posséder des attributs liés à la sécurité, appelés informations d'identification . Un justificatif d'identité peut contenir des informations utilisées pour authentifier le sujet auprès de nouveaux services. Ces informations d'identification incluent les mots de passe, les tickets Kerberos et les certificats de clé publique. Les informations d'identification peuvent également contenir des données qui permettent au sujet d'effectuer certaines activités. Les clés cryptographiques, par exemple, représentent des informations d'identification qui permettent au sujet 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é.