Глава 22. Оllределение прав дocmylla к данным
Эта глава знакомит вас с привилегиями. Как упоминалось в главе 2, SQL при
меняется главным образом для тех приложений, где требуется распознавать и диф ференцировать пользователей системы. В обязанности администрирования базы данных входит создание других пользователей и назначение им привилегий. С дру гой стороны, пользователи, создающие таблицы, управляют ими. Привилегии (privileges) - это определения того, может или нет отдельный пользователь выпол нить данную команду. Существует несколько типов привилегий, соответствующих определенным типам операций. Привилегии назначаются и отменяются с использо ванием двух SQL команд - GRANT и REVOKE, о применении которых рассказыва ется в этой главе.
Пользователи
Каждый пользователь в среде SQL имеет специальный идентификатор: имя или число. Специальная терминология различается, но, следуя ANSI, необходимо ссы латься на это имя или число как на идентификатор пользователя (authorization ID). Ко манды, задаваемые для базы данных, связаны с отдельным пользователем, т.е. с особым идентификатором пользователя. В базах данных SQL идентификатор пользо вателя - это имя пользователя, и SQL может применять специальное ключевое слово USER для ссылки на ID, связанный с текущей командой. Команды интерпретируются и разрешаются (или запрещаются) на основе информации, связанной с ID выдавшего
команду.
Вход в систему
В мноrопользовательских системах есть процедура входа, в соответствии с кото
рой осуществляется доступ к компьютерной системе. Эта процедура определяет, ка кой ID связан с текущим пользователем. Каждый человек, применяющий базу данных, имеет свой собственный ID, так что пользователи, представленные в SQL, соответст вуют реальным. Часто пользователям с множеством функций назначается множество ID, либо один идентификатор может применяться несколькими пользователями. У SQL нет способа различить эти ситуации: он просто связывает пользователя с его ID.
База данных SQL может использовать собственную процедуру входа в систему, либо она может разрешить применение другой программы, такой как операционная система (основная программа, которая выполняется на компьютере), для управления входом и получения идентификатора пользователя от этой программы. Независимо от способа входа в систему существует ID, связанный с конкретными действиями и сов падающий со значением ключевого слова USER.
236
Передача 1tривилегий
Передача привилегий
Каждый пользователь в базе данных SQL имеет множество привилегий. Привиле гии - это те действия, которые может выполнять пользователь (вход в систему - ми нимальная привилегия). Привилегии могут меняться с течением времени: новые привилегии могут добавляться, старые - отменяться. Некоторые из привилегий опре делены в ANSI SQL, но имеются и дополнительные, весьма полезные на практике. Привилегии SQL, определенные ANSI, являются недостаточными для множества ре альных ситуаций. С другой стороны, необходимые типы привилегий могут сущест
венно отличаться от тех, которые предоставляет реальная система, - ANSI
рассматривает не все из этих проблем. Привилегии, не являющиеся частью стандарта SQL, используют сходный синтаксис, который не идентичен стандарту описания во просов конфиденциальности.
Стандартные привилегии
Привилегии SQL, определенные ANSI, являются объектными привилегию1и (object privileges). Это означает, что пользователь имеет привилегию выполнить дан ную команду только для определенного объекта базы данных. Привилегии должны различаться для различных объектов, но системные привилегии, базирующиеся ис ключительно на объектных привилегиях, не могут покрыть всех потребностей SQL.
Объектные привилегии связаны как с пользователями, так и с таблицами. Привиле гия дается отдельному пользователю для отдельной таблицы либо для базовой табли цы, либо для представления. Следует помнить, что пользователь, создавший таблицу, является ее владельцем. Это означает, что пользователь имеет все привилегии на таб лицу и может назначать привилегии для работы с ней для других пользователей. При
ведем те привилегии, которые может назначить пользователь:
SELECT |
Пользователь с этой привилегией может выполнять запросы для |
|
таблицы. |
INSERT |
Пользователь с этой привилегией может выполнить команду |
|
INSERT для таблицы. |
UPDATE |
Пользователь с этой привилегией может выполнить команду |
|
UPDATE для таблицы. Привилегия ограничивается множеством |
|
столбцов таблицы. |
DELETE |
Пользователь с этой привилегией может выполнить команду |
|
DELETE для таблицы. |
REFERENCES |
Пользователь с этой привилегией может определить внешний |
|
ключ, который использует один или несколько столбцов таблицы |
237