Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Неделя 11 Лекция 2 (17).doc
Скачиваний:
2
Добавлен:
13.11.2019
Размер:
218.11 Кб
Скачать

17.5. Установка привилегий доступа пользователей в InterBase.

Каждый созданный в среде SQL объект имеет своего владельца. Исходно владелец объекта является единственной персоной, которая знает о существовании данного объекта и имеет право выполнять с этим объектом любые операции. Привилегия доступа – это возможность определенного пользователя выполнять определенный вид действий над определенными таблицами базы данных. Привилегии доступа могут устанавливаться как системным администратором (пользователем с именем SYSDBA), так и пользователем, которому системный администратор предоставил такое право. Например для базы данных «БИБЛИОТЕКА» это пользователь с именем S.

По умолчанию доступ к таблицам, тригерам и хранимым процедурам имеет только тот пользователь, который их создал. Кроме того, системный администратор имеет доступ ко всем компонентам БД. Предоставление и отмена пользователям привилегий в SQL (в том числе СУБД InterBase) реализуется операторами GRAND и REVOKE соответственно.

В стандарте ISO определяется следующий набор привилегий:

  • SELECT — право выбирать данные из таблицы;

  • INSERT — право вставлять в таблицу новые строки;

  • UPDATE — право изменять данные в таблице;

  • DELETE — право удалять строки из таблицы;

  • REFERENCES — право ссылаться на столбцы указанной таблицы в описаниях требований поддержки целостности данных;

  • USAGE – право использовать домены, проверки, наборы символов и трансляции.

17.5.1. Предоставление привилегий пользователям (оператор grant).

Ниже перечислены виды привилегий и ключевые слова в операторе GRANT СУБД InterBase, соответствующие этим привилегиям.

Таблица 17.2.

Ключевое слово

Вид привилегии доступа

ALL

Выполнение операторов SELECT, DELETE, INSERT, UPDATE, EXECUTE

SELECT

Выполнение оператора SELECT

DELETE

Выполнение оператора DELETE

INSERT

Выполнение оператора INSERT

UPDATE

Выполнение оператора UPDATE

EXECUTE

Выполнение оператора EXECUTE (обращение к хранимой процедуре)

Согласно документации InterBase оператор G имеет следующий формат:

GRANT < privileges> ON [TABLE] { tablename | viewname}

TO { <object> | <userlist> | GROUP UNIX_group}

| EXECUTE ON PROCEDURE procname TO { <object> | <userlist>}

| < role_granted> TO {PUBLIC | < role_grantee_list>};

< privileges> = {ALL [PRIVILEGES] | < privilege_list>}

< privilege_list> = SELECT

| DELETE

| INSERT

| UPDATE [( col [, col …])]

| REFERENCES [( col [, col …])]

[, < privilege_list> …]

<object> = PROCEDURE procname

| TRIGGER trigname

| VIEW viewname

| PUBLIC

[, <object> …]

<userlist> = [USER] username

| rolename

| Unix_user}

[, <userlist> …]

[WITH GRANT OPTION]

< role_granted> = rolename [, rolename …]

< role_grantee_list> = [USER] username [, [USER] username …]

[WITH ADMIN OPTION]

Параметр privilege list представляет собой список, состоящий из одной или более привилегий, разделенных запятыми:

SELECT

DELETE

INSERT [(column name [, . . . ])]

UPDATE [(column name [, . . . ])]

REFERENCES [(column name [,...])]

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

Фраза WITH GRANT OPTION позволяет всем указанным в списке параметра role_grantee_list пользователям передавать другим пользователям все предоставленные им в отношении указанного объекта привилегии. Если эти пользователи также передадут собственные полномочия другим пользователям с указанием фразы WITH GRANT OPTION, то последние, в свою очередь, также получат право передавать свои полномочия другим пользователям. Если эта фраза не будет указана, получатель привилегии не сможет передать свои права другим пользователям. Таким образом, владелец объекта может четко контролировать, кто получил право доступа к объекту и какие полномочия ему предоставлены.

Для предоставления пользователю привилегии доступа к таблице в операторе GRANT необходимо указать как минимум следующие параметры:

  • ключевое слово, обозначающее вид привилегии доступа;

  • имя таблицы;

  • имя пользователя.

С остальными особенностями применения оператора GRANT можно познакомится в документации СУБД InterBase.