→ Пошук по сайту       Увійти / Зареєструватися
Знання SQL - язык запросов

DDL: Операторы управления правами доступа

По соображениям безопасности не каждому пользователю прикладной системы может быть разрешено получать информацию из какой-либо таблицы, а тем более изменять в ней данные. Для определения прав пользователей относительно объектов базы данных (таблицы, представления, индексы) в SQL определена пара команд GRANT и REVOKE.

Синтаксис операции передачи прав на таблицу:

  GRANT <тип_права_на_таблицу> 
     
       ON  <имя_таблицы> [<список_столбцов>] 

       TO  <имя_пользователя> 
Права пользователя на уровне таблицы определяются следующими ключевыми словами (как мы увидим чуть позже эти ключевые слова совпадают с командами выборки и изменения данных):

SELECT - получение информации из таблицы
UPDATE - изменение информации в таблице
INSERT - добавление записей в таблицу
DELETE - удаление записей из таблицы
INDEX - индексирование таблицы
ALTER - изменение схемы определения таблицы
ALL - все права

В поле <тип_права_на_таблицу> может быть указано либо ключевое слово ALL или любая комбинация других ключевых слов. Например, предоставим все права на таблицу publishers пользователю andy:

   GRANT ALL ON publishers TO andy;
Пользователю peter предоставим права на извлечение и дбавление записей на эту же таблицу:
   GRANT SELECT INSERT ON publishers TO peter;

В том случае, когда одинаковые права надо предоставить сразу всем пользователям, вместо выполнения команды GRANT для каждого из них, можно вместо имени пользователя указать ключевое слово PUBLIC:


GRANT SELECT ON publishers TO PUBLIC;

Отмена прав осуществляется командой REVOKE:

   REVOKE <тип_права_на_таблицу> 

         ON  <имя_таблицы> [<список_столбцов>]

         FROM  <имя_пользователя> 

Все ключевые слова данной команды эквивалентны оператору GRANT. Большинство систем поддерживают также команду GRANT для назначения привилегий на базу данных в целом. В этом случае формат команды:

  GRANT <тип_права_на_базу_данных>

        ON  <имя_базы данных>

        TO  <имя_пользователя> 

К сожалению, способы задания прав на базу данных различны для разных СУБД, и точную их формулировку нужно уточнять в документации. В качестве примера приведем список прав на базу данных, поддерживаемых СУБД Informix:

CONNECT - права на доступ к данным и их модификацию, если это разрешено на уровне таблицы;

RESOURCE - права на управление ресурсами. Все перечисленное выше плюс права на создание новых объектов (таблиц, индексов и т.д.) и удаление и изменение тех объектов, которыми данный пользователь владеет;

DBA - права на администрирование. Все права на управление ресурсами плюс права на удаление базы данных, удаление любых объектов, назначение и отмена прав других пользователей.

Отмена прав на базу данных осуществляется командой:

  REVOKE <тип_права_на_базу_данных> FROM  <имя_пользователя> 

загрузка...
Сторінки, близькі за змістом