Передача привилегий

Вход в систему

Пользователи

Каждый пользователь в среде SQL имеет специальный идентификатор: имя или число. Специальная терминология различается, но, следуя ANSI, необходи­мо ссылаться на это имя или число как на идентификатор пользователя (authorization ID). Команды, задаваемые для базы данных, связаны с отдельным пользователем, т.е. с особым идентификатором пользователя. В базах данных SQL идентификатор пользователя — это имя пользователя, и SQL может при­менять специальное ключевое слово USER для ссылки на ID, связанный с теку­щей командой. Команды интерпретируются и разрешаются (или запрещаются) на основе информации, связанной с ID выдавшего команду.

В многопользовательских системах есть процедура входа, в соответствии с которой осуществляется доступ к компьютерной системе. Эта процедура опре­деляет, какой ID связан с текущим пользователем. Каждый человек, применяю­щий базу данных, имеет свой собственный ID, так что пользователи, представленные в SQL, соответствуют реальным. Часто пользователям с множе­ством функций назначается множество ID, либо один идентификатор может применяться несколькими пользователями. У SQL нет способа различить эти ситуации: он просто связывает пользователя с его ID.

База данных SQL может использовать собственную процедуру входа в систе­му, либо она может разрешить применение другой программы, такой как опе­рационная система для управления входом и получения идентификатора пользователя от этой про­граммы. Независимо от способа входа в систему существует ID, связанный с конкретными действиями и совпадающий со значением ключевого слова USER.

Каждый пользователь в базе данных SQL имеет множество привилегий. Приви­легии — это те действия, которые может выполнять пользователь (вход в систе­му — минимальная привилегия). Привилегии могут меняться с течением времени:

новые привилегии могут добавляться, старые — отменяться. Некоторые из приви­легий определены в ANSI SQL, но имеются и дополнительные, весьма полезные на практике. Привилегии SQL, определенные ANSI, являются недостаточными для множества реальных ситуаций. С другой стороны, необходимые типы привилегий могут существенно отличаться от тех, которые предоставляет реальная система, — ANSI рассматривает не все из этих проблем. Привилегии, не являющиеся частью стандарта SQL, используют сходный синтаксис, который не идентичен стандарту описания вопросов конфиденциальности.

Стандартные привилегии

Привилегии SQL, определенные ANSI, являются объектными привилегиями (object privileges). Это означает, что пользователь имеет привилегию выполнить данную команду только для определенного объекта базы данных. Привилегии должны различаться для различных объектов, но системные привилегии, бази­рующиеся исключительно на объектных привилегиях, не могут покрыть всех потребностей SQL.

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

Æ SELECT Пользователь с этой привилегией может выполнять запросы для таблицы.

Æ INSERT Пользователь с этой привилегией может выполнить ко­манду INSERT для таблицы.

Æ UPDATE Пользователь с этой привилегией может выполнить ко­манду UPDATE для таблицы. Привилегия ограничива­ется множеством столбцов таблицы.

Æ \ DELETE Пользователь с этой привилегией может выполнить ко­манду DELETE для таблицы.

Æ REFERENCES Пользователь с этой привилегией может определить внешний ключ, который использует один или несколь­ко столбцов таблицы в качестве родительского ключа. Можно ограничить привилегию указанием столбцов.

Кроме того, можно ввести нестандартные привилегии объектов, такие как INDEX (право на создание индексов таблицы), SYNONYM (право на создание синонимов объектов, см. главу 23) и ALTER (право на выполнение команды для таблицы ALTER TABLE). Механизм SQL позволяет выполнить назначение пользователям этих привилегий с помощью команды GRANT.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: