Są one hierarchiczne w taki sam sposób, w jaki rodzaj, gatunek i jednostka są hierarchiczne.
- Temat - w kontekście zabezpieczeń podmiot to dowolna jednostka żądająca dostępu do obiektu . Są to ogólne terminy używane do określenia rzeczy żądającej dostępu i przedmiotu, przeciwko któremu żądanie jest skierowane. Kiedy logujesz się do aplikacji, jesteś podmiotem, a aplikacja jest obiektem. Kiedy ktoś puka do twoich drzwi, osoba prosi o dostęp, a twój dom jest obiektem.
- Principal - podzbiór podmiotu reprezentowany przez konto, rolę lub inny unikalny identyfikator. Kiedy dochodzimy do poziomu szczegółów implementacji, podmioty główne są unikalnymi kluczami, których używamy na listach kontroli dostępu. Mogą reprezentować ludzi, automatyzację, aplikacje, połączenia itp.
- Użytkownik - podzbiór nazwy głównej zwykle odnoszący się do operatora. Rozróżnienie z czasem się zaciera, ponieważ słowa „użytkownik” lub „identyfikator użytkownika” są często używane zamiennie ze słowami „konto”. Jednak gdy trzeba dokonać rozróżnienia między szeroką klasą rzeczy, które są zleceniodawcami, a podzbiorem tych, które są operatorami interaktywnymi sterującymi transakcjami w sposób niedeterministyczny, „użytkownik” jest właściwym słowem.
Przedmiot / obiekt dziedziczy z tych samych terminów, które są używane w gramatyce. W zdaniu podmiot jest aktorem, a przedmiot jest przedmiotem. W tym sensie zastosowanie istniało już przed wynalezieniem komputerów. W kontekście bezpieczeństwa podmiotem jest wszystko, co może zgłosić żądanie. Jak wspomniano powyżej, nie musi to ograniczać się do bezpieczeństwa IT, a więc jest to bardzo szeroka klasyfikacja. Interesujące jest to, że podmiot implikuje przedmiot. Bez przedmiotu nie ma podmiotu.
Podmioty decydują się na dyrektorów. Kiedy przedstawiasz swoją kartę kredytową, jesteś podmiotem, a numer konta jest głównym. W innych kontekstach Twój identyfikator użytkownika lub identyfikator wydany przez stan jest Twoim mocodawcą. Ale dyrektorzy mogą być kojarzeni z wieloma typami podmiotów, które nie są ludźmi. Gdy aplikacje żądają funkcji na poziomie systemu, podmiot zabezpieczeń może być sygnatariuszem podpisanego modułu kodu wykonywalnego, ale nawet w tym przypadku podmiot kierujący żądaniem nadal jest podmiotem.
Użytkownik jest bardziej szczegółowy niż temat lub podmiot główny, ponieważ zwykle odnosi się do operatora interaktywnego. Dlatego mamy graficzny interfejs użytkownika, a nie graficzny interfejs główny. Użytkownik jest instancją podmiotu, która jest rozpoznawana jako zleceniodawca . Pojedynczy użytkownik może rozstrzygać sprawę na dowolną liczbę podmiotów głównych, ale oczekuje się, że każdy podmiot główny będzie rozstrzygany na jednego użytkownika (zakładając, że ludzie przestrzegają wymogu nieudostępniania identyfikatorów). W powyższym przykładzie osoba podpisująca wykonywalny moduł kodu zdecydowanie nie jest użytkownikiem, ale jest prawidłową jednostką zabezpieczeń. Interaktywnym operatorem próbującym załadować moduł jest użytkownik.
Jak zauważono w komentarzach, nawet autorytatywne źródła nie zgadzają się na te warunki. Przygotowując tę odpowiedź, przeszukałem NIST, SANS, IEEE, MITER i kilka „quasi-autorytatywnych” źródeł, takich jak przewodniki po egzaminach bezpieczeństwa. Żadne znalezione przeze mnie źródło, które było przynajmniej quasi-autorytatywne, nie obejmowało wszystkich trzech terminów i wszystkie różniły się znacząco pod względem ich użycia. Oto moje podejście do tego, jak należy używać tych terminów, ale z praktycznego punktu widzenia, kiedy przeglądasz instrukcję w środku nocy, definicje wydają się być takie, jakie są podane przez sprzedawcę lub autora. Miejmy nadzieję, że odpowiedzi tutaj zapewnią wystarczający wgląd w nawigację po wodach i przeanalizowanie dowolnego dokumentu bezpieczeństwa przy użyciu tych terminów.
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
Spójrz na moją mapę koncepcji uwierzytelniania :
źródło
Myślę, że terminologia pochodzi z JAAS .
źródło
Podmiot to podmiot żądający usługi. Może to być użytkownik lub proces. Prawdopodobnie dlatego zamiast nazwy użytkownika wybrano nazwę Temat.
Kiedy podmiot próbuje uzyskać dostęp do usługi, musi najpierw zostać uwierzytelniony. Pomyślne uwierzytelnienie kończy się załadowaniem podmiotów zabezpieczeń dla tego podmiotu. Na przykład w systemie kontroli dostępu opartym na rolach uwierzytelniony (zalogowany) użytkownik ma zwykle dwa podmioty - userId i roleId. W takich systemach uprawnienia (tj. Kto ma do czego dostęp) są określone zarówno dla ról, jak i dla użytkowników. Podczas autoryzacji (tj. Sprawdzania, czy żądana usługa powinna być dozwolona), system bezpieczeństwa sprawdzi dostępność względem obu podmiotów.
Dlatego z punktu widzenia autoryzacji, jednostki główne to rzeczywiste podmioty, dla których dostęp jest dozwolony lub zabroniony. Temat jest po prostu użytkownikiem / wątkiem / procesem, który przechowuje niektóre podmioty.
źródło
Jak wyjaśnił T.Rob, podmiot to każda jednostka, która żąda dostępu do obiektu. Od tego momentu znalazłem komentarz na temat kodu javax.security.auth.Subject, który uważam za BARDZO przydatny i łatwy do zrozumienia:
„Podmioty mogą potencjalnie mieć wiele tożsamości. Każda tożsamość jest reprezentowana jako Główny podmiot w Podmiocie. Strony główne po prostu wiążą nazwy z Podmiotem. Na przykład Podmiot, który jest osobą, Alicja, może mieć dwóch Głównych: jeden, który wiąże” Alice Bar ”, imię i nazwisko na jej prawie jazdy, do Przedmiotu i drugie, które wiąże„ 999-99-9999 ”, numer na jej legitymacji studenckiej, do Przedmiotu. Obaj dyrektorzy odnoszą się do tego samego przedmiotu, chociaż każdy z nich ma inną nazwę ”.
Mam nadzieję, że to pomoże.
źródło
To jest łącze do poniższego wyjaśnienia z dokumentacji Oracle JAVA SE.
źródło
według rahulmohana , myślę, że zanim uwierzytelnienie jest subjet, po uwierzytelnieniu jest pricipal, w przeciwieństwie do tego, subjet może mieć wiele
źródło