Estes são hierárquicos da maneira que gênero, espécie e indivíduo são hierárquicos.
- Assunto - Em um contexto de segurança, um assunto é qualquer entidade que solicita acesso a um objeto . Estes são termos genéricos usados para indicar a coisa que está solicitando acesso e a coisa contra a qual a solicitação é feita. Quando você faz logon em um aplicativo, você é o assunto e o aplicativo é o objeto. Quando alguém bate à sua porta, o visitante é o sujeito que solicita o acesso e sua casa é o objeto do qual o acesso é solicitado.
- Principal - Um subconjunto de assunto representado por uma conta, função ou outro identificador exclusivo. Quando chegamos ao nível de detalhes da implementação, os principais são as chaves únicas que usamos nas listas de controle de acesso. Eles podem representar usuários humanos, automação, aplicativos, conexões etc.
- Usuário - Um subconjunto de principal geralmente referente a um operador humano. A distinção está se esvaindo ao longo do tempo porque as palavras "usuário" ou "ID do usuário" são comumente trocadas com "conta". No entanto, quando você precisa fazer a distinção entre a ampla classe de itens principais e o subconjunto deles, que são operadores interativos que conduzem transações de maneira não determinística, "usuário" é a palavra certa.
Assunto / objeto herda dos mesmos termos usados na gramática. Em uma frase, o sujeito é o ator e o objeto é a coisa em que se atua. Nesse sentido, o uso existe desde antes da invenção dos computadores. Em um contexto de segurança, um assunto é qualquer coisa que possa fazer uma solicitação. Como observado acima, isso não precisa se limitar à segurança de TI e, portanto, é uma classificação muito ampla. O interessante é que o sujeito implica objeto. Sem um objeto, não há assunto.
Os diretores são o que os sujeitos decidem. Quando você apresenta seu cartão de crédito, você é o sujeito e o número da conta é o principal. Em outros contextos, seu ID de usuário ou identificação emitida pelo estado é seu principal. Mas os diretores podem ser associados a muitos tipos de assuntos que não são pessoas. Quando os aplicativos solicitam funções no nível do sistema, o principal pode ser o assinante de um módulo de código executável assinado, mas mesmo nesse caso o usuário que está dirigindo a solicitação ainda é o assunto.
O usuário é mais específico do que o assunto ou principal, pois geralmente se refere a um operador interativo. É por isso que temos uma interface gráfica do usuário e não uma interface gráfica principal. Um usuário é uma instância do assunto que resolve para um principal . Um único usuário pode resolver qualquer número de principais, mas espera-se que qualquer principal resolva para um único usuário (supondo que as pessoas observem o requisito de não compartilhar IDs). No exemplo acima, o assinante de um módulo de código executável definitivamente não é o usuário, mas é um principal válido. O operador interativo que tenta carregar o módulo é o usuário.
Conforme observado nos comentários, mesmo as fontes autorizadas não concordam com esses termos. Pesquisei NIST, SANS, IEEE, MITRE e várias fontes "quase autoritativas", como guias de exames de segurança, enquanto preparava essa resposta. Nenhuma fonte única que achei que fosse pelo menos quase autoritativa cobria todos os três termos e todos diferiam significativamente em seu uso. Esta é minha opinião sobre como os termos devem ser usados, mas, do ponto de vista prático, quando você está debruçado sobre um manual no meio da noite, as definições tendem a ser o que o fornecedor ou escritor diz que é. Esperamos que as respostas aqui forneçam informações suficientes para navegar nas águas e analisar qualquer documento de segurança usando esses termos.
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
Dê uma olhada no meu mapa conceitual de autenticação :
fonte
Eu acho que a terminologia é retirada do JAAS .
fonte
Assunto é a entidade que solicita um serviço. Pode ser um usuário ou um processo. Provavelmente, é por isso que o nome Assunto foi escolhido em vez de usuário.
Quando um sujeito tenta acessar um serviço, ele deve ser autenticado primeiro. A autenticação bem-sucedida termina com o carregamento das entidades de segurança para esse assunto. Por exemplo, em um sistema de controle de acesso baseado em funções, um usuário autenticado (conectado) geralmente terá dois principais - userId e roleId. Em tais sistemas, os privilégios (ou seja, quem pode acessar o quê) são especificados para funções e usuários. Durante a autorização (ou seja, verificando se o serviço solicitado deve ser permitido), o sistema de segurança verificará a acessibilidade dos dois principais.
Portanto, da perspectiva da autorização, os principais são as entidades reais para as quais o acesso é permitido ou não permitido. O assunto é apenas um usuário / thread / processo que contém alguns princípios.
fonte
Como T.Rob explicou, Subject é qualquer entidade que solicita acesso a um objeto. A partir desse ponto, encontrei um comentário no código javax.security.auth.Subject que achei MUITO útil e fácil de entender:
"Os sujeitos podem potencialmente ter múltiplas identidades. Cada identidade é representada como Principal dentro do Assunto. As entidades simplesmente vinculam nomes a um Assunto. Por exemplo, um Assunto que passa a ser uma pessoa, Alice, pode ter duas entidades: uma que se liga" Alice Bar ", o nome em sua carteira de motorista, ao Assunto e outro que vincula" 999-99-9999 ", o número do cartão de identificação do aluno, ao Assunto. Os dois Diretores se referem ao mesmo Assunto, embora cada um tem um nome diferente ".
Espero que ajude.
fonte
Este é o link para a explicação abaixo da documentação Oracle JAVA SE.
fonte
de acordo com rahulmohan, eu acho que, antes que a autenticação seja sujeita, depois que a autenticação é principal, em sentido diferente, um sujeito pode ter muitos
fonte