Який сенс та відмінність між предметом, користувачем та принципом?


173

У контексті систем безпеки часто зустрічаються декілька термінів, суб'єкт , користувач та головний , з яких я не зміг знайти чіткого визначення та різниці між ними.

Отже, що саме означають ці терміни і для чого потрібні ці розмежування предмета та основної ?

Відповіді:


277

Вони є ієрархічними таким чином, як рід, види та індивід є ієрархічними.

  • Тема - У контексті безпеки суб'єктом є будь-яка сутність, яка запитує доступ до об'єкта . Це загальні терміни, які використовуються для позначення речі, яка вимагає доступу, і речі, проти якої зроблено запит. Коли ви входите в програму, ви є суб'єктом, і програма є об'єктом. Коли хтось стукає у вашу двері, відвідувач - це суб’єкт, який запитує доступ, а ваш будинок - об’єкт, про який вимагається доступ.
  • Основний - підмножина теми, яка представлена ​​обліковим записом, роллю чи іншим унікальним ідентифікатором. Коли ми доходимо до рівня деталізації реалізації, принципи - це унікальні ключі, які ми використовуємо у списках контролю доступу. Вони можуть представляти користувачів користувачів, автоматизацію, програми, з'єднання тощо.
  • Користувач - підмножина головного, що зазвичай відноситься до оператора людини. Відмінність з часом розмивається, оскільки слова "користувач" або "ідентифікатор користувача" зазвичай замінюються на "обліковий запис". Однак, коли вам потрібно зробити відмінність між широким класом речей, які є головними, та їх підмножиною, що є інтерактивними операторами, що керують транзакціями недетермінованим способом, "користувач" - це правильне слово.

Предмет / Об'єкт успадковується з тих же термінів, що і в граматиці. У реченні суб'єктом є актор, а предметом є те, на що діяли. У цьому сенсі використання існує вже з тих пір, поки не були винайдені комп'ютери. У контексті безпеки суб'єктом є все, що може зробити запит. Як зазначалося вище, це не повинно обмежуватись інформаційною безпекою, тому це дуже широка класифікація. Цікавим є те, що предмет передбачає предмет. Без об’єкта немає і предмета.

Директори - це те, на що вирішуються суб'єкти. Під час пред'явлення вашої кредитної картки ви є суб’єктом, а номер рахунку є основним. В інших контекстах ваш головний ідентифікатор користувача або ідентифікатор, виданий державою. Але директори можуть бути пов'язані з багатьма типами предметів, які не є людьми. Коли додатки надсилають запити на функції системного рівня, довіритель може бути підписником підписаного виконуваного модуля коду, але навіть у цьому випадку користувач, що керує запитом, все ще є суб'єктом.

Користувач більш конкретний, ніж суб'єкт або головний, оскільки зазвичай він посилається на інтерактивного оператора. Ось чому ми маємо графічний інтерфейс користувача, а не графічний основний інтерфейс. Користувач - це екземпляр суб'єкта, який вирішує принцип . Один користувач може вирішувати будь-яку кількість головних принципів, але, як очікується, будь-який головний користувач може використовуватись для одного користувача (якщо люди дотримуються вимоги не ділитися ідентифікаторами) У наведеному вище прикладі підписник модуля виконуваного коду, безумовно, не є користувачем, але він є дійсним головним. Інтерактивний оператор, який намагається завантажити модуль - це користувач.

Як зазначається в коментарях, навіть авторитетні джерела не згодні з цими умовами. Я шукав NIST, SANS, IEEE, MITER та декілька "квазіавторитетних" джерел, таких як посібники з іспитів з безпеки, готуючи цю відповідь. Жодне джерело, яке я виявив, що було принаймні квазіавторитетним, не охоплювало б усіх трьох термінів, і всі вони суттєво відрізнялися за своїм використанням. Це мій погляд на те, як слід використовувати терміни, але з практичної точки зору, коли ви переглядаєте посібник посеред ночі, визначення, як правило, є незалежним від того, хто каже або продавець. Сподіваємось, хоча відповіді тут дадуть достатню інформацію для навігації у водах та аналізу будь-якого документа безпеки, використовуючи ці умови.


3
Яка вигода від розбиття речей на Тему, Принципала, Користувача, його зайву складність, яку користь ми отримуємо від цієї додаткової складності?
Ams

19
Можливість вибрати правильний рівень специфіки. Це та сама користь, яку ми отримуємо від того, що зможемо розрізнити місце призначення проти черги чи теми. Можливість вибору між різними рівнями специфіки в систематиці дозволяє досягти точності вираження, яка краще передає читачеві наміри читача. При програмуванні ми маємо розкіш / прокляття, що процесор інтерпретує наші інструкції лише одним способом, і ми змушені використовувати його рівень точності. Але в людській мові нам потрібен нюанс і акуратність, щоб ефективно передати значення.
Т.Роб

1
T.Rob, дивовижно, але ви могли б уточнити "Користувач - підмножина головного"? Якщо Джон є суб’єктом, а "рахунок № 123" є його головним, користувач - це хто? Є два Джона? Оскільки рід> вид> індивід стає все більш конкретним, Джон (користувач) повинен бути більш конкретним, ніж Іван (предмет). Або я щось пропускаю?
солодкий-жовтий

1
Розглянемо два принципи, де №123 - Джон, а №124 - обліковий запис служби. Ми, мабуть, хочемо розглянути такі різні аспекти, як політика щодо паролів, можливість входу в систему і т.д. Коли ми починаємо категоризувати типи основних, ми створюємо підмножини. Чи допомагає це? Або я просто розпалив більше грязі?
T.Rob

Так, це допомагає. Отже, конкретно, будь-які виправлення до наступного? Ви можете скопіювати та вставити його в такий редактор, як «Блокнот ++» та поставити рядок рядків перед кожним Іваном (ТАК забороняє розриви рядків у коментарях): 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
mellow-yellow


19

Я думаю, що термінологія взята з JAAS .

Коли програма використовує аутентифікацію JAAS для аутентифікації користувача (або іншого об'єкта, такого як служба), в результаті створюється Тема . Метою Теми є представлення автентифікованого користувача. Тема складається з набору Принцип , де кожен Принцип представляє особу для цього користувача. Наприклад, Суб'єкт може мати ім'я Головний ("Сьюзен Сміт") та головний номер соціального захисту ("987-65-4321"), тим самим відрізняючи цей Предмет від інших Суб'єктів.


2
Я бачив це визначення раніше, його занадто щільне, чи можете ви детальніше розглянути його, особливо, чим користувач відрізняється від основного, чому використовується термін "суб'єкт", а не лише "користувач". Якщо ці терміни мають значення за межами JAAS, я дуже хочу ознайомитись із цим значенням, якщо ці терміни - це винаходи JAAS, то я здогадуюсь, що інженери, що створили його, вибрали бідні назви для того, що означають ці поняття. Я задав досить багато програмістів цих питань і не зміг отримати чітких відповідей; кожен, здається, по-різному розуміє ці терміни.
Ams

Здається, що Директор - це лише один із способів ідентифікації предмета. Інакше кажучи, будь-який Принцип теоретично може слугувати основним ключем у вашій базі даних користувачів.
Platinum Azure

3
Лексикон передує JAAS дальньою стрілкою. JAAS просто повторно використовує деякі з них і часом нестандартними способами. Частина проблеми, яка викликала це питання, полягає в тому, що поняття вивчаються з контекстів, в яких використовується термінологія, а потім повторно використовуються дещо по-різному. Коли авторитетних джерел важко знайти або просто проігнорувати, значення з часом змінюються. Якщо говорити про безпеку, де точність є абсолютною вимогою, цей рух до неоднозначності погіршує нашу здатність будувати та впроваджувати безпечні конструкції.
T.Rob

@ T.Rob чи є у вас заголовки паперу чи авторитетні посилання, якими ви можете поділитися.
Ams

На жаль, навіть авторитетні джерела не згодні. SANS взагалі не визначає головну чи предметну. Bit.ly/hl4rUP, а NIST bit.ly/fE7NJs визначає суб'єкт конкретно як особу. Інші "авторитетні" джерела аналогічно невиразні, що, враховуючи важливість ясності в цій галузі, є досить невтішним. IEE має словник, але читати його можна лише за допомогою членства або підписки, тому він обмежений у використанні в дискусії з широкою аудиторією. Я частково грунтувався на своїй відповіді на посібнику з екзамену Шона Харріса.
T.Rob

12

Суб'єкт - це організація, яка запитує послугу. Це може бути користувач або процес. Можливо, саме тому ім'я Subject було вибрано замість користувача.

Коли суб'єкт намагається отримати доступ до послуги, його потрібно спершу пройти автентифікацію. Успішна автентифікація закінчується завантаженням принципів безпеки для цього предмета. Наприклад, у системі управління доступом на основі ролей, у автентифікованого (входу в систему) користувача зазвичай є два принципи - userId і roleId. У таких системах привілеї (тобто хто може отримати доступ до них) визначаються як для ролей, так і для користувачів. Під час авторизації (тобто перевірки, чи потрібно дозволена послуга) система безпеки перевірятиме на доступність обох керівників.

Отже, з точки зору авторизації, принципали - це фактичні суб'єкти, до яких доступ дозволений або заборонений. Тема - це лише користувач / потік / процес, який містить деякі принципи.


Яка користь від наявності декількох принципів на кожну тему?
Ams

6
Я можу подумати про дві переваги: ​​(1) Розгляньте користувача Алісу з принципами UserId ("Аліса"), Роль ("Менеджер"), Відділ ("Продажі"), що отримує доступ до послуги (Об'єкт). Потім контроль доступу до сервісу можна вказати як "Дозволити для ролі (менеджер)" або "Заборонити для відділу (продажів)" тощо, замість того, щоб вказати, чи може Аліса отримати доступ до неї чи ні. Такими типами систем контролю доступу легше керувати, оскільки адміністратору безпеки не потрібно вказувати права доступу для ВСІХ користувачів для ВСІХ служб.
rahulmohan

4
(2) У системі підприємства користувачі, як правило, повинні мати автентифікацію з декількома системами, перш ніж якась складна послуга може бути виконана. Можливо, у кожної з цих систем є свої механізми контролю доступу, які потребують різних деталей: одна система використовує SSN, а інша використовує userId. Таким чином, той самий суб'єкт повинен мати обох директорів для доступу до обох
rahulmohan

1
У мене виникає відчуття, що 99% плутанини з цією термінологією можна було б вирішити одним реченням за принципом "головний принцип - це група".
Трейказ

1
?! ... чому ти кажеш, що Директор - це група?
Рафаель

10

Як пояснив T.Rob, Subject - це будь-яка сутність, яка запитує доступ до об'єкта. Починаючи з цього моменту, я знайшов коментар до javax.security.auth.Subject code, який я вважав ДУЖЕ корисним та зрозумілим:

"Суб'єкти потенційно можуть мати декілька ідентичностей. Кожна ідентичність представлена ​​як Принцип у Темі. Принципи просто прив'язують імена до Суб'єкта. Наприклад, Суб'єкт, який трапляється особою, Аліса, може мати два Принципи: один, який пов'язує" Alice Bar ", ім'я на її водійському посвідченні на Subject, та інше, що пов'язує" 999-99-9999 "номер, який є на її ідентифікаційному посвідченні студента, на Subject. Обидва директори посилаються на один і той же предмет, хоча кожен має іншу назву ".

Сподіваюся, це допомагає.


7

Це посилання для пояснення нижче з документації Oracle JAVA SE.

Суб'єкти, Принципи, Аутентифікація та Уповноважені дані Для того, щоб дозволити доступ до ресурсів, додаткам спочатку потрібно автентифікувати джерело запиту. Рамка JAAS визначає термін, що підлягає представленню джерела запиту. Суб'єктом може бути будь-яка організація, наприклад, людина чи служба. Предмет представлений класом javax.security.auth.Subject .

Автентифікація являє собою процес, за допомогою якого підтверджується особа суб'єкта, і він повинен бути виконаний у безпечному порядку; в іншому випадку винний може видавати себе за інших, щоб отримати доступ до системи. Аутентифікація зазвичай включає суб'єкта, який демонструє певну форму доказів для підтвердження своєї ідентичності. Такі докази можуть бути інформацією, яку суб'єкт може знати або мати (наприклад, пароль або відбиток пальців), або це може бути інформація, яку може отримати суб'єкт (наприклад, підписані дані за допомогою приватного ключа).

Після автентифікації суб'єкт заповнюється пов’язаними особами або Принципами (типу java.security.Principal ). Тема може мати багато керівників. Наприклад, людина може мати прізвище Principal ("Джон Доу") та SSN Principal ("123-45-6789"), які відрізняють його від інших Суб'єктів.

Окрім пов’язаних Принципалів, Суб'єкт може володіти атрибутами, пов'язаними з безпекою, які називаються обліковими записами . Довірительна інформація може містити інформацію, яка використовується для автентифікації суб'єкта для нових послуг. Такі облікові дані включають паролі, квитки Kerberos та сертифікати відкритого ключа. Акредитиви також можуть містити дані, які дозволяють суб'єкту здійснювати певні дії. Наприклад, криптографічні ключі представляють облікові дані, які дозволяють суб'єкту підписувати або шифрувати дані. Громадські та приватні облікові класи не є частиною основного API J2SE. Отже, будь-який клас може представляти собою обліковий запис.


Хоча я згоден з відповіддю Т.Роб, цей автор від Aram - який говорить, що "суб'єктом може бути будь-яка організація" - натякає на ERM: Модель відносин між особами, яка лежить в основі більшості баз даних. У цій моделі "суб'єкт" відповідає "предмету" в контексті безпеки, але залежно від того, що ви моделюєте, він може бути головним (банківський рахунок, SSN #) або користувачем (Джон Сміт), як це запропоновано в Marinus 'відповідь. Wikipedia: en.wikipedia.org/wiki/Entity%E2%80%93відношення_модель
mellow-yellow

0

на думку rahulmohan, я думаю, до того, як автентифікація буде subjet, після аутентифікації є прибутковою, в різницю сенса, у subjet може бути багато pricipal

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.