Qual è il significato e la differenza tra soggetto, utente e principale?


173

Nel contesto dei quadri di sicurezza, comunemente si presentano alcuni termini soggetto , utente e principale , di cui non sono stato in grado di trovare una definizione chiara e la differenza tra di essi.

Quindi, cosa significano esattamente questi termini e perché sono necessarie queste distinzioni di soggetto e di principio ?

Risposte:


277

Questi sono gerarchici nel modo in cui genere, specie e individuo sono gerarchici.

  • Oggetto : in un contesto di sicurezza, un soggetto è qualsiasi entità che richiede l'accesso a un oggetto . Questi sono termini generici usati per indicare la cosa che richiede l'accesso e la cosa contro cui viene fatta la richiesta. Quando si accede a un'applicazione, l'utente è soggetto e l'applicazione è l'oggetto. Quando qualcuno bussa alla tua porta, il visitatore è il soggetto che richiede l'accesso e la tua casa è l'oggetto di cui è richiesto l'accesso.
  • Principal : un sottoinsieme di soggetti rappresentato da un account, ruolo o altro identificatore univoco. Quando arriviamo al livello dei dettagli di implementazione, i principali sono le chiavi uniche che utilizziamo negli elenchi di controllo degli accessi. Possono rappresentare utenti umani, automazione, applicazioni, connessioni, ecc.
  • Utente : un sottoinsieme di entità principale che si riferisce di solito a un operatore umano. La distinzione si confonde nel tempo perché le parole "utente" o "ID utente" sono comunemente scambiate con "account". Tuttavia, quando è necessario fare una distinzione tra l'ampia classe di cose che sono principali e il sottoinsieme di questi che sono operatori interattivi che guidano le transazioni in modo non deterministico, "utente" è la parola giusta.

Oggetto / Oggetto eredita dagli stessi termini usati in grammatica. In una frase il soggetto è l'attore e l'oggetto è la cosa recitata. In questo senso l'uso è in uso da prima dell'invenzione dei computer. In un contesto di sicurezza, un soggetto è tutto ciò che può fare una richiesta. Come notato sopra, questo non deve essere limitato alla sicurezza IT e quindi è una classificazione molto ampia. La cosa interessante è che il soggetto implica oggetto. Senza un oggetto, non c'è soggetto.

I presidi sono ciò che i soggetti risolvono. Quando presenti la tua carta di credito sei il soggetto e il numero di conto è il principale. In altri contesti l'ID utente o l'identificazione rilasciata dallo stato è il principale. Ma i presidi possono essere associati a molti tipi di soggetti che non sono persone. Quando le applicazioni fanno richieste per funzioni a livello di sistema, il principale può firmare un modulo di codice eseguibile firmato ma anche in quel caso l'utente che guida la richiesta rimane l'oggetto.

L'utente è più specifico del soggetto o dell'entità in quanto di solito si riferisce a un operatore interattivo. Ecco perché abbiamo un'interfaccia utente grafica e non un'interfaccia principale grafica. Un utente è un'istanza di soggetto che si risolve in un'entità . Un singolo utente può risolvere un numero qualsiasi di entità, ma si prevede che qualsiasi entità si risolva in un singolo utente (supponendo che le persone osservino il requisito di non condividere gli ID). Nell'esempio sopra, il firmatario di un modulo di codice eseguibile non è sicuramente l'utente, ma è un'entità valida. L'operatore interattivo che cerca di caricare il modulo è l'utente.

Come notato nei commenti, anche le fonti autorevoli non concordano su questi termini. Ho cercato NIST, SANS, IEEE, MITRE e diverse fonti "quasi autorevoli" come le guide agli esami di sicurezza mentre preparavo questa risposta. Nessuna singola fonte che ho trovato che fosse almeno quasi autorevole copriva tutti e tre i termini e differivano significativamente nel loro utilizzo. Questa è la mia opinione su come usare i termini , ma da un punto di vista pratico, quando stai studiando attentamente un manuale nel cuore della notte, le definizioni tendono ad essere qualunque sia il venditore o lo scrittore che dicono di essere. Speriamo che le risposte qui forniranno informazioni sufficienti per navigare nelle acque e analizzare qualsiasi documento di sicurezza usando questi termini.


3
Qual è il vantaggio di suddividere le cose in Oggetto, Principale, Utente, la sua complessità in più che beneficio otteniamo da questa complessità in più?
AMS

19
La capacità di scegliere il giusto livello di specificità. È lo stesso vantaggio che otteniamo dalla possibilità di distinguere tra una destinazione e una coda o un argomento. La capacità di scegliere tra diversi livelli di specificità in una tassonomia consente una precisione di espressione che comunica meglio l'intenzione di uno scrittore a un lettore. Durante la programmazione abbiamo il lusso / la maledizione che la CPU interpreterà le nostre istruzioni in un solo modo e siamo costretti a usare il suo livello di precisione. Ma nel linguaggio umano abbiamo bisogno di sfumature e precisione per trasmettere significato in modo efficiente.
T.Rob,

1
T.Rob, fantastico, ma potresti chiarire "Utente - sottoinsieme di principal"? Se John è il soggetto e "account # 123" è il suo principale, l'utente è chi? Ci sono due John? Poiché Genere> Specie> Individuo è sempre più specifico, John (utente) dovrebbe essere più specifico di John (soggetto). Oppure mi sfugge qualcosa?
giallo-chiaro,

1
Considera due entità in cui il numero 123 è John e il numero 124 fa riferimento a un account di servizio. Probabilmente vorremmo trattare questi diversi aspetti riguardanti la politica delle password, la funzionalità di accesso, ecc. I principi del tipo "utente" sono soggetti alla complessità della password e alle politiche di scadenza mentre i principi del tipo "account di servizio" potrebbero non avere nemmeno una password. Quando iniziamo a categorizzare i tipi di entità, creiamo sottoinsiemi. Questo aiuta? O ho appena sollevato altro fango?
T.Rob

Sì, questo aiuta. Quindi, concretamente, eventuali correzioni a quanto segue? Potresti voler copiarlo e incollarlo in un editor come Notepad ++ e mettere una interruzione di riga prima di ogni John (SO non consente l'interruzione di riga nei commenti): 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
giallo intenso


19

Penso che la terminologia sia presa da JAAS .

Quando un'applicazione utilizza l'autenticazione JAAS per autenticare l'utente (o un'altra entità come un servizio), di conseguenza viene creato un Soggetto . Lo scopo del Soggetto è rappresentare l'utente autenticato. Un Soggetto è composto da un insieme di Principali , in cui ciascun Principale rappresenta un'identità per quell'utente. Ad esempio, un Soggetto potrebbe avere un nome Principal ("Susan Smith") e un Principal Numero di previdenza sociale ("987-65-4321"), distinguendo così questo Soggetto da altri Soggetti.


2
Ho già visto questa definizione, è troppo densa, puoi approfondirla, in particolare su come un utente è diverso da un principale, perché viene usato il termine soggetto e non solo utente. Se questi termini hanno un significato al di là di JAAS, desidero molto familiarizzare con quel significato, se questi termini sono invenzioni di JAAS, allora immagino che gli ingegneri del sole che lo hanno creato abbiano scelto nomi poveri per qualunque cosa significhino questi concetti. Ho posto a molti programmatori queste domande e non sono stato in grado di ottenere risposte chiare, ognuno sembra avere una diversa comprensione di questi termini.
AMS

Sembra un preside è solo un modo per identificare un soggetto. Detto in altro modo, qualsiasi Principal potrebbe teoricamente servire come chiave primaria nel database degli utenti.
Platinum Azure,

3
Il lessico precede JAAS da un colpo lungo. JAAS ne riutilizza solo alcune volte e in modi non standard. Parte del problema che ha portato a questa domanda è che i concetti vengono appresi dai contesti in cui viene utilizzata la terminologia e quindi riutilizzati in modi leggermente diversi. Quando le fonti autorevoli sono difficili da trovare o semplicemente ignorate, i significati si spostano nel tempo. Quando si tratta di sicurezza in cui la precisione è un requisito assoluto, questa deriva verso l'ambiguità degrada la nostra capacità di costruire e implementare progetti sicuri.
T.Rob,

@ T.Rob hai titoli cartacei o riferimenti autorevoli che puoi condividere.
AMS

Sfortunatamente, anche le fonti autorevoli non sono d'accordo. SANS non definisce il principale o il soggetto in assoluto bit.ly/hl4rUP e NIST bit.ly/fE7NJ definisce il soggetto specificamente come persona. Altre fonti "autorevoli" sono altrettanto vaghe che, considerata l'importanza della chiarezza in questo campo, è piuttosto deludente. L'IEEE ha un glossario ma puoi leggerlo solo con l'iscrizione o l'abbonamento, quindi ha un uso limitato in una discussione con un vasto pubblico. Stavo basando la mia risposta in parte sulla Guida agli esami CISSP di Shon Harris.
T.Rob,

12

Oggetto è l'entità che richiede un servizio. Può essere un utente o un processo. Probabilmente è per questo che è stato scelto il nome Oggetto anziché l'utente.

Quando un soggetto tenta di accedere a un servizio, deve prima essere autenticato. L'autenticazione corretta termina con il caricamento dei Security Principals per quell'oggetto. Ad esempio, in un sistema di controllo degli accessi in base al ruolo, un utente autenticato (connesso) avrà in genere due entità: userId e roleId. In tali sistemi, i privilegi (cioè chi può accedere a cosa) sono specificati sia per i ruoli che per gli utenti. Durante l'autorizzazione (ovvero verificando se il servizio richiesto dovrebbe essere autorizzato), il sistema di sicurezza verificherà l'accessibilità rispetto a entrambi i principali.

Pertanto, dal punto di vista dell'autorizzazione, i titolari sono le entità effettive per le quali è consentito o vietato l'accesso. Il soggetto è solo un utente / thread / processo che contiene alcuni principi.


Qual è il vantaggio di avere più principi per soggetto?
AMS

6
Posso pensare a due vantaggi: (1) Considera l'utente Alice con i principali UserId ("Alice"), Ruolo ("Manager"), Dipartimento ("Vendite") che accede a un servizio (l'Oggetto). Il controllo di accesso al servizio può quindi essere specificato come "Consenti ruolo (Manager)" o "Non consentire reparto (vendite)" ecc. Invece di specificare se Alice può accedervi o meno. Tali tipi di sistemi di controllo dell'accesso sono più facili da gestire poiché l'amministratore della sicurezza non deve specificare i privilegi di accesso per TUTTI gli utenti per TUTTI i servizi.
Rahulmohan,

4
(2) In un sistema aziendale, gli utenti devono in genere essere autenticati con più sistemi prima di poter eseguire alcuni servizi compositi. Può accadere che ciascuno di questi sistemi abbia i propri meccanismi di controllo dell'accesso che richiedono dettagli diversi: un sistema utilizza SSN e un altro utilizza userId. Quindi lo stesso soggetto dovrebbe possedere entrambi i principi per poter accedere ad entrambi
rahulmohan,

1
Ho la sensazione che il 99% di confusione con questa terminologia possa essere risolto con una frase sulla falsariga di "un preside è sostanzialmente un gruppo".
Trejkaz,

1
?! ... perché dici che un preside è un gruppo?
Rafael,

10

Come spiegato da T.Rob, Oggetto è qualsiasi entità che richiede l'accesso a un oggetto. A partire da quel punto ho trovato un commento su javax.security.auth. Codice soggetto che ho trovato MOLTO utile e facile da capire:

"I soggetti possono potenzialmente avere identità multiple. Ciascuna identità è rappresentata come Principale all'interno del Soggetto. I Principali vincolano semplicemente i nomi a un Soggetto. Ad esempio, un Soggetto che sembra essere una persona, Alice, potrebbe avere due Principali: uno che si lega" Alice Bar ", il nome sulla sua patente di guida, al Soggetto e un altro che lega" 999-99-9999 ", il numero sulla sua carta di identità dello studente, al Soggetto. Entrambi i Principali si riferiscono allo stesso Soggetto anche se ciascuno ha un nome diverso ".

Spero che sia d'aiuto.


7

Questo è il link per l'esplorazione di seguito dalla documentazione Oracle JAVA SE.

Soggetti, entità, autenticazione e credenziali Per autorizzare l'accesso alle risorse, le applicazioni devono prima autenticare l'origine della richiesta. Il framework JAAS definisce il termine soggetto per rappresentare l'origine di una richiesta. Un soggetto può essere qualsiasi entità, come una persona o un servizio. Un soggetto è rappresentato dalla classe javax.security.auth.Subject .

L'autenticazione rappresenta il processo mediante il quale viene verificata l'identità di un soggetto e deve essere eseguita in modo sicuro; in caso contrario un autore potrebbe impersonare altri per ottenere l'accesso a un sistema. L'autenticazione in genere coinvolge il soggetto che dimostra una qualche forma di prova per dimostrare la sua identità. Tali prove possono essere informazioni che solo il soggetto potrebbe conoscere o avere (come una password o un'impronta digitale), oppure potrebbero essere informazioni che solo il soggetto potrebbe produrre (come i dati firmati che utilizzano una chiave privata).

Una volta autenticato, un Soggetto viene popolato con identità associate o Principali (di tipo java.security.Principal ). Un soggetto può avere molti principi. Ad esempio, una persona può avere un nome Principal ("John Doe") e un SSN Principal ("123-45-6789"), che lo distingue dagli altri Soggetti.

Oltre ai Principali associati, un Soggetto può possedere attributi relativi alla sicurezza, che vengono definiti credenziali . Una credenziale può contenere informazioni utilizzate per autenticare l'oggetto di nuovi servizi. Tali credenziali includono password, ticket Kerberos e certificati di chiave pubblica. Le credenziali potrebbero contenere anche dati che consentono al soggetto di svolgere determinate attività. Le chiavi crittografiche, ad esempio, rappresentano le credenziali che consentono al soggetto di firmare o crittografare i dati. Le classi di credenziali pubbliche e private non fanno parte dell'API J2SE principale. Qualsiasi classe, quindi, può rappresentare una credenziale.


Anche se concordo con la risposta di T.Rob, questa di Aram - che dice "un soggetto può essere qualsiasi entità" - suggerisce ERM: il modello entità-relazione alla base della maggior parte dei database. In quel modello, "entità" corrisponde a "soggetto" nel contesto della sicurezza, ma a seconda di ciò che stai modellando, potrebbe essere il principale (conto bancario, numero SSN) o l'utente (John Smith), come suggerito in Marinus ' risposta. Wikipedia: en.wikipedia.org/wiki/Entity%E2%80%93relationship_model
giallo-

0

secondo rahulmohan , penso, prima che l'Autenticazione sia subjet, dopo che l'Autenticazione è fondamentale, a differenza, un subjet può avere molti pricipali

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.