Методи дискреційного розмежування доступу

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

3) Добровільне - базується на понятті володіння об'єктами. Як правило, власниками об'єктів є ті суб'єкти бази даних, які їх створили. У більшості систем права володіння об'єктами можуть передаватися. В результаті реалізується повністю децентралізований принцип організації управління розмежуванням доступу. Такий підхід забезпечує гнучкість, але робить складним загальний контроль і аудит.

4) Примусове - введення єдиного, централізованого адміністрування доступу. Для цього виділяється спеціальний довірений суб'єкт, званий адміністратором, який визначає привілеї на доступ всім іншим суб'єктам.

При примусовому контролі доступу більше контролю, але менше гнучкості.

Тому на практиці в більшості випадків застосовується комбінований спосіб управління доступом.

Базовим поняттям системи дискреційного розмежування доступу є привілей.

Привілей - дозвіл на виконання в системі певної дії. Сервер бази даних підтримує для кожного користувача набір привілеїв, який може змінюватися.

Всі привілеї діляться на 2 класу:

3) Системні привілеї - дають користувачеві право на виконання будь-якої операції в масштабі бази даних.

4) Привілеї доступу до об'єктів - дозвіл на виконання певної операції над певним об'єктом.

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

Надання системних привілеїв

Системні привілеї можуть надаватися користувачам і ролям. Системні привілеї дають можливість їх носіям розширювати безліч об'єктів системи. Для надання системних привілеїв використовується команда:

Grant <системная привилегия> to <пользователь/роль>

Всі системні привілеї згруповані по об'єктах Oracle.

Короткий список системних привілеїв для роботи з таблицями:

11) Create any table - створити таблицю в будь-якій схемі

12) Create table - створити таблицю в своїй схемі

13) Drop any table

14) Alter any table - змінити структуру таблиці в будь-якій схемі

15) Select any table

16) Update any table - змінити дані в таблиці в будь-якій схемі

17) Insert any table - додати рядок в таблицю в будь-якій схемі

18) Delete any table - видалити рядок в таблицю в будь-якій схемі

19) Lock any table

20) Backup any table

Коли в назву привілеї присутній any, це означає, що дія не обмежена своєю схемою.

> Create user u1 identified by u1psw default tablespace users;

> Grant create session to u1;

> Grant create table to u1;

> Create user u2 identified by u2ps;

> Grant create session to u2;

> Create table tab1 (At1 int, At2 int);

> Create table u2.tab1 (At1 int, At2 int);

> Grant create any table to u1;

> Create table u2.tab1 (At1 int, At2 int);

> Select * from u1.tab1;

--таблиця u1.tab1 не існує

> Grant select any table to u2;

> Select * from u1.tab1;

Цей приклад не вірний, так як так ніхто ніколи не робить.

Для надання системних привілеїв всім користувачам системи використовується конструкція public:

> Grant create session to public;

Дана конструкція використовується частіше для налагодження системи, так як серйозно порушує принципи безпеки, в тому числі і принцип мінімальних привілеїв. Для передачі деякої системної привілеї з правом успадкування використовується конструкція with admin option. Користувач, якому системна привілей передана з таким параметром. може видавати цю ж привілей іншим користувачам (щось типу зам адміністратора по даній привілеї).

> grant <привилегия> to <пользователь> with admin option;

> Grant select any table to u1 with admin option;

> Select * from u2.tab1;

> Grant select any table to u2;

> Select * from u2.tab1;

Надання привілеїв на доступ до об'єкта

Дані привілеї керують розмежуванням доступу до таблиць, уявленням, збереженим процедурам, послідовностям і так далі.

Загальний синтаксис оператора на видачу об'єктних привілеїв мають наступний синтаксис:

Параметр привілеї на доступ до об'єкта, тобто найменування привілеї, звичайно збігається з найменуванням SQL-оператора, який здійснює з даним об'єктом дію.

> Create table tab1 (At1 Number);

> Grant select, insert, update on tab1 to u1;

> Insert into tab1 values ​​(123);

> Update tab1 set At1 = 345 where At1 = 123;

> Delete from tab1 where At1 = 876;

Синтаксис мови надає можливість виборчого доступу до окремих стовпців таблиці при її оновленні.

> Create Table tab1 (At1 number, At2 number);

> Grant select on tab1 to u1;

> Grant insert, update (At1) on tab1 to u1;

> Insert into u2.tab1 values ​​(123, 123)

> Update u2.tab1 set At1 = 345;

> Update u2.tab1 set At2 = 678;

Привілей на вибірку не може бути вибірковою.

Щоб скасувати системні чи об'єктні привілеї, надані користувачам або ролям, використовується команда revoke.

Використання ключового слова PUBLIC призводить до скасування привілеї для всіх користувачів, при цьому скасування привілеїв, наданих користувачеві явно або через роль не відбувається. Скасовуються тільки ті привілеї, які видавалися Public-у.

Команда revoke не може бути використана для скасування привілеїв доступу до об'єкту, явно наданих іншим користувачам.

Скасування привілеїв для користувача або ролі настає негайно.

Схожі статті