79317

Управление правами доступа

Лекция

Информатика, кибернетика и программирование

Некоторые пользователи могут устанавливать права доступа к объектам базы данных для других пользователей. Пользователи Пользователи баз данных могут иметь разные привилегии полномочия права доступа и по объему этих привилегий разделяются на несколько категорий: администратор базы данных; владелец объектов базы данных; привилегированный пользователь имеющий право предоставлять привилегии; привилегированный пользователь не имеющий права предоставлять привилегии; рядовые пользователи. Он имеет все права на любые действия с базой данных...

Русский

2015-02-10

93 KB

0 чел.

Управление правами доступа

У базы данных может быть несколько пользователей с различными правами доступа к ее объектам. Так, одним пользователям разрешено только просматривать некоторые таблицы, другим разрешено только просматривать и добавлять новые записи, но запрещено их удалять и т. п. Некоторые пользователи могут устанавливать права доступа к объектам базы данных для других пользователей.

Разграничение прав доступа является важным средством защиты базы данных от неправильного использования содержащейся в ней информации различными категориями пользователей БД.

Пользователи

Пользователи баз данных могут иметь разные привилегии (полномочия, права доступа) и по объему этих привилегий разделяются на несколько категорий:

  •  администратор базы данных;
  •  владелец объектов базы данных;
  •  привилегированный пользователь, имеющий право предоставлять привилегии;
  •  привилегированный пользователь, не имеющий права предоставлять привилегии;
  •  рядовые пользователи.

Администратор базы данных

Наибольшими привилегиями обладает администратор БД. Он имеет все права на любые действия с базой данных, в том числе и право предоставлять и аннулировать привилегии для других пользователей. Разумеется, при этом он несет и большую ответственность, поскольку легко может испортить как данные, так и саму базу, или нарушить уже налаженные правила работы с ней.

При установке СУБД на компьютер требуется ввести регистрационное имя или учетную запись пользователя (login) и пароль (password). В первый раз следует воспользоваться сведениями из руководства по установке. Зарегистрировавшись под данным именем, вы автоматически становитесь администратором БД, т.е. привилегированным пользователем с полным объемом прав. Теперь вы можете изменить пароль, чтобы никто, кроме вас, не мог стать ни администратором, ни даже обычным пользователем БД, если вы не сообщите ему пароль. Если же вы передадите пароль другому пользователю, то он может войти в систему в качестве администратора и, изменив пароль, лишить вас возможности быть администратором. Обычно у БД есть несколько администраторов на случай, если один из них заболеет или уволится.

Итак, администратор, имея все привилегии, первым делом «создает» пользователей базы данных, определяя для них имена и права. Он может создать и максимально привилегированного пользователя, т.е. еще одного администратора. В любой момент администратор может изменить ранее установленные права любого пользователя. Если администратору необходимо выполнить какую-то работу, для которой не требуются все привилегии, то ему лучше войти в систему под именем пользователя с минимальными привилегиями, которые позволяют решить задачу. Это обычная мера защиты от тяжелых последствий возможных ошибок.

Владелец объектов базы данных

Любой пользователь, который создал некий объект БД (таблицу или представление), становится владельцем (owner) этого объекта, т.е. привилегированным пользователем, либо может назначить другого владельца.

Владелец таблицы обладает всеми привилегиями относительно этой таблицы, включая управление доступом к ней. Представление, являясь виртуальной таблицей, всегда создается на основе уже имеющихся таблиц БД. Причем владелец представления может и не быть владельцем исходных таблиц. Поэтому владелец представления получает относительно него привилегии, аналогичные имеющимся у него относительно исходных таблиц. Это делается для того, чтобы, создав представление, нельзя было обойти защиту исходной таблицы, владельцем которой является другой пользователь.

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

Администраторы и владельцы объектов базы данных могут предоставлять привилегии другим пользователям. Среди этих привилегий есть и право предоставления привилегий. Пользователи, не являющиеся администраторами или владельцами, а также те, кому привилегированные пользователи специально не предоставили права доступа, называются публикой (public). Если привилегированный пользователь предоставляет права доступа типа public, то их получают все пользователи базы данных.

Создание и удаление пользователей

Обычно к СУБД прилагается ряд утилит, в число которых входит и утилита для создания пользователей и предоставления им прав. С ее помощью администратор может создать пользователя и наделить его определенными привилегиями. В SQL для создания пользователя служит оператор create user:

CREATE USER имяПользователя

[WITH

[SYSID идентификаторПользователя]

[PASSWORD 'пароль']] 

[CREATEDB | NOCREATEDB]

[CREATEUSER | NOCREATEUSER]

[IN GROUP имяГруппы [,...]]

[VALID UNTIL 'время'];

Здесь в квадратных скобках указаны необязательные компоненты, а вертикальной чертой разделены альтернативные варианты значений. Данный оператор позволяет создать имя пользователя, задать ему пароль (password), дать особые права на создание БД (createdb) и пользователей (createuser), распределить по группам (in group) и ограничить время, в течение которого данный пользователь будет актуален (valid until).

Чтобы удалить пользователя из системы, можно применить оператор DROP USER:

DROP USER имяПользователя;

Предоставление привилегий

Как уже отмечалось ранее, администратор БД имеет все привилегии на все объекты БД; владелец объекта также имеет на него все права. Произвольный пользователь не имеет прав до тех пор, пока они не будут предоставлены ему специально тем пользователем, у которого уже есть эти права и который обладает также правом предоставлять права другим пользователям. Это рекурсивное определение возможностей назначать привилегии. На практике эта рекурсия осуществляется следующим образом. Сначала администратор создает пользователей (точнее их имена) и предоставляет им некоторые права. Если кто-то из уже созданных пользователей имеет привилегию передавать права, то он может, создав таблицу или представление, передать права на нее другим пользователям. И так далее.

Предоставление привилегий осуществляется с помощью оператора GRANT (предоставлять, разрешать), его синтаксис:

GRANT списокПрав

ON объект

ТО списокПользователей

[WITH GRANT OPTION];

Здесь необязательные (в квадратных скобках) ключевые слова with grant option (с правом передачи) применяются, если пользователям предоставляется право передавать права. Права в списке прав оператора grant разделяются запятыми. Если необходимо предоставить все права, то вместо списка можно указать ключевые слова all privileges (все привилегии). В SQL:2003 права могут принимать следующие значения:

  •  select  право просмотра;
  •  delete – право удаления записей;
  •  insert [ (списокстолбцов) ] – право добавления новых записей с установкой значений для указанных столбцов; если имена столбцов не указаны, то для всех столбцов;
  •  update [ (списокстолбцов) ] – право изменения значений указанных столбцов; если имена столбцов не указаны, то предполагаются все столбцы;
  •  references [ (списокстолбцов) ] –право доступа к таблице, на которую ссылается данная таблица;
  •  usage – право на домены, наборы символов, сопоставления и трансляции;
  •  under – право на структурированные типы данных;
  •  trigger – право на использование триггеров;
  •  execute –право на выполнение внешней программы.

Объект в операторе grant может принимать следующие значения:

  •  [TABLE] имяТаблицы;
  •  DOMAIN имяДомена;
  •  COLLATION имяСопоставления;
  •  CHARACTER SET имяСимвольногоНабора;
  •  TRANSLATION имяТрансляции;
  •  TYPE схематически_обозначенный_пользовательский_тип;
  •  SEQUENCE имяГенератораПоследовательности
    спецификаторУказателяШа блона.

Список пользователей в операторе grant состоит из регистрационных имен пользователей, разделенных запятыми. Вместо списка можно указать ключевое слово public (публика). В этом случае права, указанные в операторе grant, получают все пользователи базы данных.

Роли и группы

Если пользователей БД немного, то при предоставлении им прав можно использовать простые списки их имен. В противном случае назначение и контроль за правами становятся довольно трудоемкими. Удобным выходом из положения является использование ролей или групп пользователей. В SQL:2003 используется понятие роли (role), однако его нет в основном стандарте, а потому может не быть в некоторых реализациях. Перед использованием ролей необходимо убедиться, что их поддерживает ваша СУБД. Многие СУБД применяют понятие группы пользователей, которое аналогично понятию роли.

При использовании роли (группы) права назначаются для роли (группы), а затем для каждого пользователя указывается, какую роль он играет или в какую группу входит. Как роль, так и группа характеризуются именем.

Для создания роли используется такой синтаксис:

CREATE ROLE имяРоли;

После создания роли она назначается пользователям:

GRANT имя Роли ТО списокПользователей;

Назначение прав для роли производится с помощью следующего выражения:

GRANT списокПрав 

ON объект 

ТО имяРоли 

[WITH GRANT OPTION];

Если реализация SQL поддерживает понятие не роли, а группы, то синтаксис оператора для создания группы может быть следующим:

CREATE GROUP имяГруппы WITH списокПользователей;

Право просмотра данных

Для предоставления права просмотра таблицы или представления, например, Продажи всем пользователям БД можно воспользоваться следующим оператором:

GRANT SELECT

ON Продажи 

TO PUBLIC;

Таблица Продажи может иметь столбец, например, Цена, который нежелательно предоставлять всем пользователям. В этом случае рекомендуется на основе таблицы Продажи создать представление, в котором нет столбцов, просмотр которых вы хотели бы запретить:

CREATE VIEW Продажи_вид1 AS

SELECT Товар, Количество, Описание 

FROM Продажи;

GRANT SELECT

ON Продажи_вид1

TO PUBLIC;

Право изменять данные

Предположим, менеджеру по продажам (регистрационное имя SalesManager) разрешено изменять значения столбца Цена в таблицах Товары и Продажи. Чтобы предоставить ему такое право, достаточно выполнить следующий оператор:

GRANT UPDATE (Цена)

ON Товары, Продажи 

TO SalesManager;

Если менеджеру нужно разрешить изменять значения нескольких столбцов, то в операторе grant следует перечислить их имена через запятую, а если нужно разрешить изменять все столбцы, то стоит использовать такой оператор:

GRANT update

ON Товары, Продажи 

ТО SalesManager;

Для предоставления права добавлять записи вместо ключевого слова update нужно использовать ключевое слово insert. В следующем примере предоставляются права на изменение и добавление записей во все столбцы:

GRANT UPDATE,  INSERT

ON Товары, Продажи 

ТО SalesManager;

Право удалять записи

Право на удаление записей предоставляется очень просто, например:

GRANT DELETE

ON Клиенты, Сотрудники, Товары 

TO SuperManager;

Право на использование ссылок

Рассмотрим пример предоставления прав на использование ссылок одних таблиц на другие. Так, две таблицы оказываются связанными, если в одной таблице задан внешний ключ, ссылающийся на первичный ключ в другой таблице. В этом случае если у пользователя есть права доступа к первой таблице, то он может получить некоторые сведения и из второй, даже если у него нет права доступа к этой таблице.

Предположим, пользователю стало известно о появлении в базе данных особой таблицы Сотрудники_секретно, содержащей отдельный список сотрудников, например, представленных к премии или, наоборот, к увольнению. Ему также стало известно, что первичным ключом в этой таблице является столбец id. Однако пользователь не имеет никаких прав на эту таблицу, даже права на просмотр. Тогда он может узнать, кто попал в секретный список, следующим образом. Сначала он создает таблицу mytab со столбцом id, который определяет как внешний ключ со ссылкой на таблицу Сотрудники_секретно:

CREATE TABLE mytab (

ID INTEGER REFERENCES Сотрудники_секретно

) ;

Затем пользователь пытается добавить новые записи в свою таблицу mytab, подбирая значения столбца id. Если выбранное им значение принимается таблицей mytab, то сотрудник с данным идентификатором находится в секретном списке, а в противном случае – нет. Узнав таким способом список идентификаторов сотрудников секретного списка, шпион может по другой таблице (например, Сотрудники) узнать фамилии тех, кто был занесен в секретный список.

Поэтому согласно стандарту SQL:2003 права на использование ссылок должны устанавливаться явно:

GRANT REFERENCES  (ID)

ON Сотрудники_секретно 

TO PersonManager;

Это не позволит использовать описанный прием взлома защиты.

Право на домены

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

CREATE DOMAIN имяДомена типДанных Ограничения;

Обратите внимание, что в определении домена, пока не связанного ни с каким столбцом какой-либо таблицы, задается тип значений домена и ограничения на эти значения. Например, в нескольких таблицах БД имеется столбец с именем Код_продукта и типом CHAR (6), значения которого должны начинаться с символа «А», «С» или «Х». Для таких столбцов можно предварительно создать общий домен:

CREATE DOMAIN ProdDomain CHAR (6)

CHECK (SUBSTRING (VALUE, 1, 1) IN ( 'A',  'C',  'X', );

После определения домена можно создавать таблицу, использующую этот домен:

CREATE TABLE Товары  (

Код_продукта  ProdDomain,

Описание  VARCHAR

);

Например, можно определить домен Bonus (премия) с типом данных decimal (*9,2) и ограничением, согласно которому премия не может быть отрицательной и больше 15000:

CREATE DOMAIN Bonus 

DECIMAL (9,  2)

CHECK (Bonus >= 0  AND  Bonus <= 15000);

Тогда этот домен можно применить для определения столбцов в одной или нескольких таблицах. Например:

CREATE TABLE Платежная_ведомость  (

ID INTEGER,

Имя VARCHAR (25),

Оклад DECIMAL (9,2),

Премия Bonus

);

Однако при использовании доменов могут возникнуть вопросы, связанные с безопасностью. Так, верхняя граница премии может являться секретом для большинства пользователей. Однако любой пользователь может создать таблицу со столбцом, который определен через домен Bonus. Постепенно увеличивая значения в этом столбце, пока они принимаются таблицей, можно узнать максимальное значение (попытка ввести большее значение будет отвергнута СУБД).

Чтобы не допустить такой возможности, владелец Домена (тот, кто его-создал) должен явно предоставить права на его использование, например:

GRANT USAGE

ON DOMAIN Bonus

TO PersonManager, President;

Право предоставлять права

На практике нередко делают так, чтобы права доступа мог предоставлять только администратор и владельцы объектов БД. При этом владельцы предоставляют права только на объекты, которыми владеют. Третьи лица, получившие права доступа от администратора и/или владельцев, уже не могут предоставлять права. Во многих случаях это вполне разумное ограничение, позволяющее администратору и владельцам сохранить достаточно полный контроль над системой. Вместе с тем встречаются ситуации, в которых желательно делегировать право предоставлять свои собственные права другим пользователям (например, своим сменщикам, на период отпуска и т. п.). С этой целью в операторе grant используются ключевые слова with GRANT OPTION.

Например, право обновлять и добавлять записи в таблице сотрудники предоставляется менеджеру по продажам с именем SalesManager. Причем ему предоставляется право передавать полученные права доступа другому пользователю.

GRANT UPDATE,  INSERT

ON Сотрудники 

TO SalesManager

WITH GRANT OPTION;

Теперь менеджер по продажам может передать свои права помощнику С именем AssistantManager:

GRANT UPDATE,  INSERT

ON Сотрудники

TO AssistantManager;

Отмена привилегий

Co временем обязанности пользователей базы меняются, кто-то из них может перейти на сторону конкурента и, наконец, некоторые ранее предоставленные привилегии могут оказаться просто ошибочными с точки зрения общей защиты БД. В этих случаях появляется необходимость отменить привилегии. Отмена привилегий выполняется е помощью оператора revoke (отмена, аннулирование), причем можно отменить указанные в списке права (все или только некоторые) для перечисленных пользователей:

REVOKE [GRANT OPTION FOR]  списокПрав .

ON объект

FROM списокПользователей [RESTRICT | CASCADE];

Значения необязательных ключевых слов:

  •  GRANT OPTION  for (право предоставления для) – применяется, чтобы отменить у пользователя право передавать указанные права, но оставить эти права за пользователем;
  •  RESTRICT (ограничить) – отменяются права у пользователей, которые никому другому их не предоставляли. Однако если пользователь уже успел предоставить права, указанные в этом операторе revoke, то оператор не будет выполнен и появится сообщение об ошибке;
  •  CASCADE (каскадно) – отменяются указанные права у перечисленных пользователей, а также у тех, кому эти пользователи успели предоставить данные права.

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

Очень часто предоставление прав многим пользователям на многочисленные объекты связано с большими объемами SQL-кода. Комбинируя операторы grant и revok, предоставляя сначала широкие права для многих, а затем ограничивая их для некоторых пользователей, можно сократить общий объем SQL-кода.

PAGE   \* MERGEFORMAT 3


 

А также другие работы, которые могут Вас заинтересовать

2535. Измерение магнитного момента полосового постоянного магнита при использовании компаса, линейки и секундомера 119.27 KB
  Подвесим полосовой постоянный магнит на очень тонкой нити в некотором магнитном поле. Поле создается каким – либо устройством или Землей, (в лабораторной установке используется магнитное поле Земли с индукцией B0).
2536. Изучение электрического тока в электровакуумном триоде 111.06 KB
  Изучить теорию электровакуумного триода, снять экспериментально анодно-сеточную и анодную характеристики электровакуумного триода, рассчитать параметры триода.
2537. Движение заряженных частиц в в электрическом и магнитном поле 97 KB
  Определение удельного заряда методом магнетрона. Движение заряженных частиц в магнитном поле.
2538. Измерение магнитного момента полосового постоянного магнита при использовании тангенс-буссоли и линейки 99.15 KB
  Тангенс-буссоль представляет собой устройствo, состоящее из N витков проволоки, намотанной на узкое кольцо из немагнитного материала. Концы проволоки присоединены к клеммам регулируемого источника тока I, величина которого измеряется миллиамперметром.
2539. Распределение электронной плотности атома водорода 46.53 KB
  Цель работы: рассчитать распределение радиальной электронной плотности вероятности в различных состояниях для атома водорода.
2540. Нелинейные и дискретные системы автоматического управления 2.68 MB
  Система автоматического управления (САУ) является нелинейной, если хотя бы один ее конструктивный элемент (или одно ее алгоритмическое звено) описывается нелинейным уравнением. Практически все реальные САУ содержат один или несколько нелинейных элементов (или так называемых нелинейностей).
2541. Проектирование магистральных и внутризоновых ВОЛП 440.84 KB
  Необходимо спроектировать трассу ВОК на участке Смоленск – Москва. Определить необходимое количество каналов и определить параметры оптического кабеля. При выборе оптимального варианта трассы прокладки волоконно-оптического кабеля (ВОК) исходят из того, что линейные сооружения являются наиболее дорогой и сложной частью сети связи.
2542. Материаловедение и технология конструкционных материалов для строительства 1.82 MB
  Строительное материаловедение является наукой о строительных материалах и изделиях. Без достаточных знаний о многочисленных разновидностях строительных материалов, способах их производства и качественных показателях, методах их правильного хранения и использования невозможно проектировать и строить здания и сооружения.
2543. Культура користування мобільним зв’язком 1.58 MB
  Мета уроку: перевірити рівень мобільної культури серед молоді, обговорити зі школярами правила дотримання мобільного етикету як в школах, так і в громадських місцях, сформувати культуру спілкування та застерегти учнів від помилок у користуванні мобільним зв'язком.