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

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

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

Для доступа к таблице или обзору пользователь или объект нуждается в правах на SELECT, INSERT, UPDATE, DELETE или REFERENCES. Все права могут быть даны опцией ALL.

Для вызова процедуры в приложении пользователь должен иметь права на EXECUTE.

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

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

Перечень прав приведен в табл. 8.5.

Таблица 8.5. Перечень прав

Право Позволяет пользователям
ALL SELECT, DELETE, INSERT, UPDATE, EXECUTE, и REFERENCES (последнее только для версий позже 4)
SELECT Дает право выбирать строки из таблицы или представления
DELETE Дает право удалять строки из таблицы или представления
INSERT Дает право добавлять строки в таблицу или представления
UPDATE Дает право изменять строки в таблице или представлении. Может быть ограничено только определенным набором столбцов
REFERENCES Дает право ссылаться при работе с внешним ключом на специфицированные столбцы; как минимум это должны быть все столбцы первичного ключа
EXECUTE Выполнять хранимую процедуру

Права могут быть ликвидированы пользователем, выдавшим их, через команду REVOKE. Если права были выданы с помощью ALL, то и ликвидированы они могут быть только в режиме ALL, если права были выданы с помощью PUBLIC, то и ликвидированы они могут быть только в режиме PUBLIC.

Синтаксис:

GRANT {all /PRIVILEGES] / LJST_<privilege>} ON {TABLE ]

{tablename / viewname}

TO {<object> / LIST_<user> / GROUP UNIX_group^

/EXECUTE ON PROCEDURE procname TO

{LIST_<obj ect/S> LIST_<user> {WITH GRANT OPTION./}

ILJST_rolename TO {PUBLIC

/ LIST_<grants> {WITH ADKIN OPTION] } ;

<privilege>;;= SELECT / DELETE / INSERT / UPDATE [ (LIST_col) ] j REFERENCES ПЬТ5Т_со1) ]

<object>; .•= PROCEDURE procname j TRIGGER trigname j VIEW viewname / PUBLIC

<user>;:= [USER] username I rolename

[ Unix_user}

<grants>:;= [user] username

Таблица 8.6. Описание синтаксических элементов команды GRANT

Аргумент Описание
privilege Имя предоставленного права. Допустимые значения: SELECT, DELETE, INSERT, UPDATE, REFERENCES
Col Имя столбца, на который выдаются права.
Tablename Имя существующей таблицы, на которую распространяются права
Viewname Имя существующего обзора, на который распространяются права
<object> Имя существующего объекта базы (процедуры, обзора, триггера), на который распространяются права
username Имя пользователя, которому передаются права
WITH GRANT OPTION Передает права на передачу прав пользователям, перечисленным в списке LIST_<user>
rolename Имя существующей роли, созданной командой CREATE ROLE
<grants> Пользователь, которому передаются права роли. Список пользователей должен быть задан в isc4.gdb (создан, например утилитой IBConsole)
GROUP unix_group Имя группы в UNIX, заданной в /etc/group

Следующая команда передает права пользователю на SELECT и DELETE. Опция WITH GRANT OPTION дает права на их дальнейшую передачу.

Пример 8.5

GRANT SELECT, DELETE ON TBOOK TO MISHA WITH GRANT OPTION;

А эта команда дает право на выполнение процедуры другой процедуре и пользователю.

Пример 8.6

GRANT EXECUTE ON PROCEDURE PAUTHOR TO PROCEDURE PBOOKAUTHOR, MISHA;

В данном случае передача прав процедуре PBOOKAUTHOR в нашей базе бессмысленна, поскольку она просто не использует процедуру PAUTHOR, но синтаксически она вполне корректна.

Следующая команда по содержанию полностью аналогична примеру 8.5., но ориентирована на использование внедренного SQL.

Пример 8.7 EXEC SQL

GRANT SELECT, DELETE ON TBOOK TO MISHA WITH GRANT OPTION;

Ликвидацияправ. Команда REVOKE

REVOKE ликвидирует права доступа к объектам базы данных. Права -это действия с объектом, которые разрешены пользователю. SQL-права описаны в табл. 8.7.

Таблица 8.7. Перечень прав
Право Запрещает пользователям
ALL SELECT, DELETE, INSERT, UPDATE и EXECUTE
SELECT Выбирать строки из таблицы или представления
DELETE Удалять строки из таблицы или представления
INSERT Вставлять строки в таблицу или представления
UPDATE Изменять строки в таблице или представлении. Может быть задано для определенного набора столбцов
EXECUTE Выполнять хранимую процедуру
Право Запрещает пользователям
GRANT

OPTION

FOR

Делегирование прав другим пользователям

Отметим некоторые ограничения при использовании команды REVOKE. Ликвидировать права может только тот пользователь, кто их выдал. Одному пользователю могут быть переданы одни и те же права на объект базы данных от любого числа разных пользователей. Команда REVOKE влечет за собой лишение выданных ранее именно этим пользователем прав. Права, выданные всем пользователям опцией PUBLIC, могут быть ликвидированы командой REVOKE только с опцией PUBLIC. Синтаксис:

REVOKE [GRANT OPTION FOR./

/ALL /PRIVILEGES7 j LIST_<privilege>} ON /TABLE J {taJ 4

blename / viewname/

MM { LIST__<object> / LIST_< user>}

I EXECUTE ON PROCEDURE procname

HUM {<object> / LI ST_<user>}

};

<privilege>; := SELECT / DELETE / INSERT / UPDATE [ (LI ST_c c/1)

I REFERENCES [ (LIST_cot)

<object>.-;= PROCEDURE procname / TRIGGER trigname / VIEW

viewname

/ ^USER] username / PUBLIC <user>:;= /"USER7 username

Аргумент Описание
GRANT OPTION FOR Отменяет у перечисленных пользователей права на делегирование прав на объекты базы данных. Неприменим по отношению к объектам базы данных
col Имя столбца, на который выдаются права
Аргумент Описание
tablename Имя существующей таблицы, на которую распространяются права
viewname Имя существующего представления, на которое распространяются права
<object> Имя существующего объекта базы, на который распространяются права
<user> Пользователь, у которого ликвидируются права

Следующая команда ликвидирует у пользователя права на удаление из таблицы (см. пример 8.5, в этом случае права на чтение у него остаются).

Пример 8.8

REVOKE DELETE ON ТВООК FROM MISHA;

А эта команда отменяет право на выполнение процедуры другой процедуре и пользователю (см. выделение соответствующих прав в примере 8.6)

REVOKE .EXECUTE ON PROCEDURE PAUTHOR FROM PROCEDURE PBOOKAUTHOR, MISHA;

8.4. управление доступом к данным | Введение в InterBase | Создание группы управления правами - роли..


Введение в InterBase



Новости за месяц

  • Август
    2019
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс