Qual é o significado e a diferença entre sujeito, usuário e principal?

173

No contexto das estruturas de segurança, geralmente ocorrem alguns termos assunto , usuário e principal , dos quais não consegui encontrar uma definição clara e a diferença entre eles.

Então, o que exatamente esses termos significam e por que essas distinções de sujeito e principal são necessárias?

ams
fonte

Respostas:

277

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.

T.Rob
fonte
3
Qual é o benefício de dividir as coisas em Assunto, Principal, Usuário e sua complexidade extra? Que benefício obtemos dessa complexidade extra?
1717
19
A capacidade de escolher o nível certo de especificidade. É o mesmo benefício que obtemos ao poder fazer uma distinção entre um destino e uma fila ou tópico. A capacidade de escolher entre diferentes níveis de especificidade em uma taxonomia permite uma precisão de expressão que comunica melhor a intenção de um escritor ao leitor. Ao programar, temos o luxo / maldição de que a CPU interprete nossas instruções de apenas uma maneira e somos forçados a usar seu nível de precisão. Mas, na linguagem humana, precisamos de nuances e precisão para transmitir significado com eficiência.
21411
1
T.Rob, incrível, mas você poderia esclarecer "Usuário - subconjunto do principal"? Se John é o assunto e a "conta nº 123" é a principal, o usuário é quem? Existem dois John's? Como Género> Espécie> Indivíduo é cada vez mais específico, John (usuário) deve ser mais específico que John (sujeito). Ou eu estou esquecendo de alguma coisa?
amarelo-amarelado
1
Considere dois princípios em que o 123 é John e o 124 refere-se a uma conta de serviço. Provavelmente, queremos tratar essas diferenças em relação a política de senha, capacidade de login etc. Os principais do tipo 'usuário' estão sujeitos à complexidade da senha e políticas de expiração, enquanto os principais do tipo 'conta de serviço' podem nem ter uma senha. Quando começamos a categorizar tipos de principal, criamos subconjuntos. Isso ajuda? Ou apenas levantei mais lama?
T.Rob
Sim, isso ajuda. Então, concretamente, alguma correção para o seguinte? Você pode copiá-lo e colá-lo em um editor como o Notepad ++ e colocar uma quebra de linha antes de cada John (o SO não permite quebras de linha nos comentários): 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
amarelo-amarelado
19

Eu acho que a terminologia é retirada do JAAS .

Quando um aplicativo usa a autenticação JAAS para autenticar o usuário (ou outra entidade, como um serviço), um Assunto é criado como resultado. O objetivo do Assunto é representar o usuário autenticado. Um Assunto é composto por um conjunto de Principais , em que cada Principal representa uma identidade para esse usuário. Por exemplo, um Assunto poderia ter um nome Principal ("Susan Smith") e um Número de Segurança Social Principal ("987-65-4321"), distinguindo esse Assunto de outros Assuntos.

Aravind Yarram
fonte
2
Já vi essa definição antes, é muito densa, você pode elaborá-la, especialmente como um usuário é diferente de um principal, por que o termo assunto é usado e não apenas como usuário. Se esses termos tiverem um significado além do JAAS, quero muito familiarizar-me com esse significado, se esses termos forem invenções do JAAS, acho que os engenheiros da Sun que o criaram escolheram nomes ruins para o que esses conceitos significam. Perguntei a alguns programadores essas perguntas e não consegui obter respostas claras; todos parecem ter uma compreensão diferente desses termos.
AMS
Parece que um diretor é apenas uma maneira de identificar um assunto. Em outras palavras, qualquer Principal poderia, teoricamente, servir como chave primária no banco de dados do usuário.
Platinum Azure
3
O léxico antecede o JAAS a longo prazo. O JAAS apenas reutiliza parte e, às vezes, de maneiras não padronizadas. Parte do problema que levou a essa pergunta é que os conceitos são aprendidos nos contextos em que a terminologia é usada e depois reutilizados de maneiras ligeiramente diferentes. Quando fontes autorizadas são difíceis de encontrar ou simplesmente ignoradas, os significados flutuam ao longo do tempo. Quando se trata de segurança, onde a precisão é um requisito absoluto, essa tendência à ambiguidade diminui nossa capacidade de criar e implementar projetos seguros.
21411
@ T.Rob você possui títulos de papel ou referências autorizadas que você pode compartilhar.
AMS
Infelizmente, mesmo as fontes autorizadas discordam. O SANS não define principal ou assunto em todos os bits.ly/hl4rUP e NIST bit.ly/fE7NJs define o assunto especificamente como pessoa. Outras fontes "autoritárias" são igualmente vagas que, considerando a importância da clareza neste campo, são bastante decepcionantes. O IEE possui um glossário, mas você só pode lê-lo com associação ou assinatura, por isso tem uso limitado em uma discussão com um amplo público. Eu estava baseando minha resposta em parte no Guia do Exame CISSP de Shon Harris.
17481 T.Rob
12

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.

rahulmohan
fonte
Qual é o benefício de ter vários princípios por assunto?
1717
6
Posso pensar em dois benefícios: (1) Considere a usuário Alice com os principais UserId ("Alice"), Função ("Manager"), Departamento ("Vendas") acessando um serviço (o Objeto). O controle de acesso ao serviço pode ser especificado como "Permitir Função (Gerente)" ou "Não Permitir Departamento (Vendas)" etc., em vez de especificar se Alice pode acessá-lo ou não. Esse tipo de sistema de controle de acesso é mais fácil de gerenciar, pois o administrador de segurança não precisa especificar privilégios de acesso para TODOS os usuários para TODOS os serviços.
rahulmohan
4
(2) Em um sistema corporativo, os usuários geralmente precisam ser autenticados com vários sistemas antes que algum serviço composto possa ser executado. Pode acontecer que cada um desses sistemas tenha seus próprios mecanismos de controle de acesso, exigindo detalhes diferentes - um sistema usa SSN e outro usa userId. Assim, o mesmo objecto deve possuir ambos os princípios para que o acesso tanto
rahulmohan
1
Tenho a sensação de que 99% da confusão com essa terminologia pode ser resolvida com uma frase na linha de "um diretor é basicamente um grupo".
28313 Trejkaz
1
?! ... por que você diz que um diretor é um grupo?
Rafael
10

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.

Rafael
fonte
7

Este é o link para a explicação abaixo da documentação Oracle JAVA SE.

Assuntos, entidades, autenticação e credenciais Para autorizar o acesso aos recursos, os aplicativos primeiro precisam autenticar a origem da solicitação. A estrutura JAAS define o termo assunto para representar a origem de uma solicitação. Um sujeito pode ser qualquer entidade, como uma pessoa ou serviço. Um assunto é representado pela classe javax.security.auth.Subject .

A autenticação representa o processo pelo qual a identidade de um sujeito é verificada e deve ser realizada de maneira segura; caso contrário, um agressor pode se passar por outro para obter acesso a um sistema. A autenticação normalmente envolve o sujeito demonstrando alguma forma de evidência para provar sua identidade. Essas evidências podem ser informações que apenas o sujeito provavelmente conheceria ou possuiria (como uma senha ou impressão digital) ou informações que o sujeito poderia produzir (como dados assinados usando uma chave privada).

Uma vez autenticado, um Assunto é preenchido com identidades associadas ou Principais (do tipo java.security.Principal ). Um sujeito pode ter muitos diretores. Por exemplo, uma pessoa pode ter o nome Principal ("John Doe") e um Principal da SSN ("123-45-6789"), que a distinguem de outros Assuntos.

Além dos Principais associados, um Assunto pode possuir atributos relacionados à segurança, chamados de credenciais . Uma credencial pode conter informações usadas para autenticar o sujeito em novos serviços. Essas credenciais incluem senhas, tíquetes Kerberos e certificados de chave pública. As credenciais também podem conter dados que permitem ao sujeito executar determinadas atividades. As chaves criptográficas, por exemplo, representam credenciais que permitem ao sujeito assinar ou criptografar dados. As classes de credenciais públicas e privadas não fazem parte da API J2SE principal. Qualquer classe, portanto, pode representar uma credencial.

fgul
fonte
Embora eu concorde com a resposta de T.Rob, esta da Aram - que diz "um assunto pode ser qualquer entidade" - sugere ERM: o Modelo de Entidade-Relacionamento subjacente à maioria dos bancos de dados. Nesse modelo, "entidade" corresponde a "sujeito" no contexto de segurança, mas, dependendo da modelagem, pode ser o principal (conta bancária, número de SSN) ou usuário (John Smith), conforme sugerido em Marinus ' responda. Wikipedia: en.wikipedia.org/wiki/Entity%E2%80%93relationship_model
amarelo-amarelado
0

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

ChinaJavaDeveloper
fonte