9 Июнь 2008

10. Пользователи, привилегии, роли (определение, назначение, создание).

написано в рубрике: Базы данных +УБД (Т) — Метки: , , , — Михаил @ 20:53

Аутендификация пользователь: Первый уровень безопасности.

Базы данных, как и данные, хранимые в файлах базы данных, должны быть защищены. InterBase обеспечивает двухуровневую защиту данных - аутентификация пользователя на уровне сервера и привилегии на уровне базы данных. Безопасность InterBase основана на концепции “пользователя” (user). Безопасность всей базы данных, в сущности, зависит от проверки подлинности идентификатора пользователя.

Все версии InterBase используют базу данных безопасности для аутентификации пользователей, при этом некоторые версии позволяют организовать разграничение доступа на основе системы разграничения доступа операционной системы. Версии InterBase, работающие под управлением Unix, позволяют при подключении к серверу InterBase или его базам использовать либо учетные записи операционной системы, либо учетные записи InterBase. Версии, работающие под Win95 или NT, не позволяют использовать систему разграничения доступа этих операционных систем, соответственно, пользователи Win95 или NT не являются легальными пользователями InterBase. В данном случае,для аутентификации пользователей, InterBase полностью полагается на свою базу данных безопасности.

Привилегии SQL: Второй уровень безопасности

Как уже отмечалось, в InterBase реализована двухуровневая модель безопасности. На первом уровне осуществляется аутентификация пользователя в момент подключения к базе данных, при этом используется база данных безопасности. Второй уровень реализуется уже на уровне самой базы данных. Все привилегии по доступу к объектам базы данных хранятся в самой базе. Авторизованный пользователь не имеет никаких привилегий по доступу к данным, хранящимся в базе, пока какие-либо права не будут ему предоставлены явным образом. Контроль привилегий осуществляется на уровне таблиц. Каждому пользователю сопоставлен список операций, которые допускается произвести над данной таблицей или представлением. Этот список и составляет привилегии пользователя. Право на доступ к любому объекту базы данных после его создания имеют только SYSDBA и владелец этого объекта. Владельцем объекта является пользователь создавший этот объект. SYSDBA или владелец объекта могут выдавать привилегии другим пользователям, в том числе и привилегии на право выдачи привилегий другим пользователям. Собственно сам процесс раздачи привилегий на уровне SQL реализуется двумя операторами: GRANT и REVOKE. Оператор GRANT выдает привилегии авторизованным пользователям на доступ к таблицам или представлениям, а оператор REVOKE, соответственно, изымает ранее выданные привилегии.

GRANT устанавливает привилегии на объекты базы данных, для пользователей или других объектов базы данных. Когда объект впервые создан, только его создатель имеет привилегии на него, и только создатель может предоставить (GRANT) привилегии на него другим пользователям или объектам.

Для доступа к таблице или виду, пользователю или объекту требуются SELECT, INSERT, UPDATE или DELETE привилегии на эту таблицу или вид.

Для вызова сохраненной процедуры из приложения, пользователю или объекту требуется EXECUTE привилегия на нее.

Пользователи могут дать разрешение, предоставлять привилегии другим пользователям, обеспечивая <userlist>, который включает WITH GRANT OPTION. Пользователи могут предоставлять другим только те привилегии которые им, непосредственно, назначены.

Привилегии могут быть назначены всем пользователям определив PUBLIC вместо списка имен пользователей. Определение PUBLIC предоставляет привилегии только пользователям, но не объектам базы данных.

Привилегия

Позволяет пользователям…

ALL

Выполнять SELECT, DELETE, INSERT, UPDATE и EXECUTE.

SELECT

Получать строки из таблицы или вида.

DELETE

Устранять строки из таблицы или вида.

INSERT

Сохранять новые строки в таблицу или вид.

UPDATE

Изменять текущие значения в одном или большем количестве столбцов в таблице или виде. Может быть ограниченно определенным подмножеством столбцов.

EXECUTE

Выполнять сохраненные процедуры.

Роли

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

Для того, чтобы создать роль, необходимо воспользоваться оператором CREATE ROLE. По умолчанию, после создания роль не обладает какими-либо привилегиями. Соответственно, все необходимые права по доступу к объектам базы данных должны быть назначены до использования роли. Учитывая, что создания роли как таковой не прибавляет каких-либо прав, любой пользователь может создать роль. Также, исходя из того, что роль определяется и храниться непосредственно в базе данных, необходимо подключиться к этой базе до создания роли.

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

После создания роли, она не обладает какими-либо привилегиями по отношению к объектам базы. Это соответствует модели безопасности SQL: отсутствие любых прав до предоставления их явным образом. Привилегии для роли назначаются с использованием оператора выдачи разрешений, общий синтаксис которого, в данном случае, имеет следующий вид:

 GRANT <privileges ON [TABLE] {tablename | viewname} TO rolename;

Для того, чтобы иметь возможность назначить привилегию роли, необходимо быть:

  • SYSDBA
  • Владельцем таблицы или представления
  • Пользователем, имеющим право назначать привилегии для этой таблицы или представления (т.е. иметь GRANT OPTION)

Приведем примеры, предоставления объектных прав роли:

 GRANT ALL ON TEST_SCORES TO FULL_ACCESS;
 GRANT INSERT, SELECT ON TABLE EMPLOYEE TO BJONES;

Использование роли

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

Удаление роли

Когда роль перестает быть нужной, её можно удалить из базы данных. Удалить роль имеет право SYSDBA или пользователь, создававший роль. При удалении роли, все привилегии, назначенные ей, также удаляются из базы данных. Для удаления роли используется следующий синтаксис:

 DROP ROLE rolename;

Пример демонстрирует удаление роли FULL_ACCESS:

 DROP ROLE FULL_ACCESS;

© Проект «Студенты-Программеры»., 2008. Все права защищены.
Перепечатка материалов только при наличии активной ссылки на источник.
Powered by WordPress