Управление доступом к данным — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
м (Примеры выдачи прав: комментарии)
(Удаление прав: комментарии)
Строка 62: Строка 62:
  
 
== Удаление прав ==
 
== Удаление прав ==
  <font color=blue>revoke <font color=red>[<font color=blue>grant option for<font color=red>]</font>
+
  <font color=blue>revoke</font>
 +
<font color=red>[<font color=blue>grant option for<font color=red>]<font color=green> -- забрать не само право, а возможность его делегирования</font>
 
  <font color=red>{<font color=blue>select<font color=grey>|<font color=blue>insert<font color=grey>|<font color=blue>update<font color=grey>|<font color=blue>delete<font color=grey>|<font color=blue>create</font>
 
  <font color=red>{<font color=blue>select<font color=grey>|<font color=blue>insert<font color=grey>|<font color=blue>update<font color=grey>|<font color=blue>delete<font color=grey>|<font color=blue>create</font>
 
  <font color=grey>  |<font color=blue>execute<font color=grey>|<font color=blue>trigger<font color=grey>|<font color=blue>usage<font color=grey>|<font color=red>…<font color=grey>|<font color=blue>all priviledges<font color=red>}</font>
 
  <font color=grey>  |<font color=blue>execute<font color=grey>|<font color=blue>trigger<font color=grey>|<font color=blue>usage<font color=grey>|<font color=red>…<font color=grey>|<font color=blue>all priviledges<font color=red>}</font>
 
  <font color=blue>on <font color=red>{<font color=blue>table<font color=grey>|<font color=blue>database<font color=grey>|<font color=blue>view<font color=grey>|<font color=blue>procedure<font color=grey>|<font color=blue>function<font color=grey>|<font color=red>…} имя</font>
 
  <font color=blue>on <font color=red>{<font color=blue>table<font color=grey>|<font color=blue>database<font color=grey>|<font color=blue>view<font color=grey>|<font color=blue>procedure<font color=grey>|<font color=blue>function<font color=grey>|<font color=red>…} имя</font>
 
  <font color=blue>from <font color=red>{пользователь<font color=grey>|<font color=blue>group <font color=red>группа<font color=grey>|<font color=blue>public<font color=red>}</font>
 
  <font color=blue>from <font color=red>{пользователь<font color=grey>|<font color=blue>group <font color=red>группа<font color=grey>|<font color=blue>public<font color=red>}</font>
  <font color=red>[<font color=blue>cascade<font color=grey>|<font color=blue>restrict<font color=red>]<font color=black>
+
  <font color=red>[<font color=blue>cascade<font color=grey>|<font color=blue>restrict<font color=red>]<font color=green> -- если тот, у кого право забирается, наделил им кого-то еще,</font>
 +
<font color=green>                  --  cascade также забирает право у всей цепочки получивших,</font>
 +
<font color=green>                  --  restrict выдаст ошибку, если право было делегировано<font color=black>
 +
<font color=green>                  -- аналогично, как и про само право, так и про возможность его делегации
  
 
=== Примеры ===
 
=== Примеры ===
 +
<font color=green> -- Удалить у группы деканов право вставки в таблицу студентов</font>
 +
<font color=green> --  с отзывом этого права у всех, кто получил его по цепочке от деканов</font>
 
  <font color=blue>revoke insert on <font color=black>Students</font>
 
  <font color=blue>revoke insert on <font color=black>Students</font>
 
  <font color=blue> from group <font color=black>Deans <font color=blue>cascade<font color=grey>;<font color=black>
 
  <font color=blue> from group <font color=black>Deans <font color=blue>cascade<font color=grey>;<font color=black>
  
 +
<font color=green> -- Удалить публичное право обновления таблицы студентов</font>
 
  <font color=blue>revoke update on <font color=black>Students <font color=blue>from public<font color=grey>;<font color=black>
 
  <font color=blue>revoke update on <font color=black>Students <font color=blue>from public<font color=grey>;<font color=black>
  

Версия 08:52, 20 декабря 2021

Эта статья находится в разработке!

Схемы управления доступом

Дискреционная схема

Определение:
Дискреционная (или избирательная) схема — политика, в рамках которой поддерживаются списки, содержащие информацию о том, кто и к чему имеет доступ.

В данной схеме используются следующие понятия:

  • Объекты и набор прав для них, не связанных между собой (например, данные и права на добавление, удаление, чтение, обновление и тп);
  • Пользователи, обладающие какими-то правами на какие-то объекты;
  • Группы пользователей и права, присваиваемые всем членам этих групп в дополнение к их собственным;

Мандатная схема

Определение:
Мандатная схема — политика, в рамках который к данным и тем, кто имеет к ним доступ, присылаются классификационные уровни.
Уровни доступа в мандатной схеме

Уровни доступа располагаются по возрастанию: от общедоступного [math]S_0[/math] до самого защищенного [math]S_4[/math]. Такие уровни присваиваются как пользователям, так и объектам.

С учетом уровней, возможность выполнения операций определяется по следующим правилам:

  • Чтение: [math]уровень[/math] [math]данных \lt уровня[/math] [math]пользователя[/math];
  • Изменение: [math]уровень[/math] [math]данных = уровню[/math] [math]пользователя[/math]. Разрешение изменения менее защищенных данных может повлечь случайное рассекречивание информации, если, например, изменения на уровне [math]S_0[/math] делаются на основе информации с [math]S_2[/math];
  • Добавление: [math]уровень[/math] [math]данных \gt уровню[/math] [math]пользователя[/math];

Пользователи и группы

Определение:
Группа (в рамках стандарта) — набор пользователей; иерархии групп не предполагается.

В рамках стандарта существуют пользователи и группы, но не существует стандартных способов управления ими.

Управление пользователями

Наиболее общепринятый синтаксис (не SQL):

create user имя [password 'пароль']
alter user имя [password 'пароль']
drop user имя

Управление группами

Наиболее общепринятый синтаксис (не SQL):

create group имя
alter group имя {add|drop} user пользователь
drop group имя

Data Control Language

Добавление прав

grant {select|insert|update|delete|create
      |execute|trigger|usage||all priviledges}
on {table|database|view|procedure|function|…} имя
to {пользователь|group группа|public}
[with grant option] -- возможность наделять этим правом других пользователей и групп

Примеры

 -- Выдача всех прав на таблицу студентов группе деканов
 --   с возможностью наделения этим правом
grant all priviledges on Students
 to group Deans with grant option;
 -- Выдача публичного права на выборку из таблицы студентов
grant select on Students to public;

Удаление прав

revoke
[grant option for] -- забрать не само право, а возможность его делегирования
{select|insert|update|delete|create
  |execute|trigger|usage||all priviledges}
on {table|database|view|procedure|function|…} имя
from {пользователь|group группа|public}
[cascade|restrict] -- если тот, у кого право забирается, наделил им кого-то еще,
                   --   cascade также забирает право у всей цепочки получивших,
                   --   restrict выдаст ошибку, если право было делегировано
                   -- аналогично, как и про само право, так и про возможность его делегации

Примеры

 -- Удалить у группы деканов право вставки в таблицу студентов
 --   с отзывом этого права у всех, кто получил его по цепочке от деканов
revoke insert on Students
 from group Deans cascade;
 -- Удалить публичное право обновления таблицы студентов
revoke update on Students from public;

Владелец объекта

text

Представления и права

Фильтрованная таблица

Спроецированная таблица

== Агрегированная таблица ==