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.