Именно привилегии доступа к объектам используются для разрешения или ограничения доступа к объектам данной схемы. Эти привилегии можно использовать для защиты объектов одной схемы от доступа пользователей базы данных, имеющих право доступа к объектам другой схемы той же базы данных.
Кто предоставляет и отменяет привилегии?
Обычно право использовать команды GRANT и REVOKE имеет администратор базы данных, но если есть администратор по безопасности, то он тоже может иметь право использовать эти команды. Конкретные инструкции по поводу того, кому и какие именно привилегии следует назначить или отменить, должны исходить от руководства и желательно в письменном виде.
Привилегии доступа к объекту должен распределять владелец этого объекта. Даже администратор базы данных не имеет права давать разрешение на использование не принадлежащего ему объекта, хотя, конечно, администратор всегда имеет реальную возможность это сделать.
Управление доступом к данным
Доступ пользователей к базе данных изначально контролируется посредством предоставления пользователям имен и паролей, но в большинстве систем управления базами данных этим дело не ограничивается. Создание учетной записи пользователя является лишь первым шагом для разрешения доступа к данным, как и первым шагом на пути управления этим доступом.
После того, как учетная запись пользователя создано, администратор базы данных, уполномоченный по безопасности или другой сотрудник с соответствующими полномочиями должен предоставить пользователю набор полномочий соответствующего уровня для того, чтобы пользователь имел возможность выполнять необходимые ему действия, например, создавать таблицы или запрашивать данные других таблиц. Ведь какой смысл подключаться к базе данных, если в ней вам ничего не позволено делать? Кроме того, владелец схемы должен разрешить пользователю использовать объекты схемы, чтобы пользователь имел возможность выполнять свою работу.
Имеется две команды SQL, посредством которых назначаются и отменяются привилегии и тем самым предоставляется возможность управления доступом к данным. С помощью этих команд (они перечислены ниже) в реляционных базах данных распределяются как привилегии доступа к системе, так и привилегии доступа к данным.
GRANT
REVOKE
Команда GRANT
Команда GRANT используется для предоставления привилегий как на уровне доступа к системе, так и на уровне доступа к объектам тем пользователям, которые уже имеют учетные записи в базе данных.
Синтаксис оператора следующий.
GRANT Привилегия1 [, Привилегия2 ] [ ON Объект ]
ТО Имя_Пользователя [ WITH GRANT OPTION | ADMIN OPTION ]
Одну привилегию пользователю можно предоставить следующим образом.
GRANT SELECT ON EMPLOYEE_TBL TO USERI;
Право предоставлено.
Несколько привилегий пользователю можно предоставить следующим образом.
GRANT SELECT, INSERT ON EMPLOYEE_TBL TO USER1;
Право предоставлено.
Обратите внимание на то, что в случае предоставления пользователю нескольких привилегий в рамках одного оператора привилегии в списке разделяются запятыми.
Нескольким пользователям привилегии предоставляются следующим образом.
GRANT SELECT, INSERT ON EMPLOYEE_TBL TO USER1, USER2;
Grant succeeded.
Обратите внимание на фразу Grant succeeded (Право предоставлено) в выводе оператора в последнем примере. Такая фраза будет получена при успешном выполнении оператора в той реализации языка (Oracle), которая использовалась для примеров этой книги. Другие реализации SQL могут иметь свои фразы для сообщения пользователю результатов выполнения операторов.
GRANT OPTION
Опция GRANT OPTION команды GRANT является достаточно мощной. Если владелец объекта предоставляет привилегии относительно объекта другому пользователю и использует при этом опцию GRANT OPTION, это значит, что последний получает право предоставлять другим привилегии использования объекта, не являясь при этом владельцем объекта. Вот пример использования опции:
GRANT SELECT ON EMPLOYEE_TBL TO USER1 WITH GRANT OPTION;
Право предоставлено.
ADMIN OPTION
Опция ADMIN OPTION команды GRANT подобна опции GRANT OPTION в том, что получающий привилегии пользователь наследует также и право предоставлять эти привилегии другим пользователям. Но GRANT OPTION используется для привилегий на уровне объектов, a ADMIN OPTION - на уровне системы. Когда пользователь предоставляет другому пользователю привилегии доступа к системе с опцией ADMIN OPTION, этот новый пользователь получает также и возможность предоставления другим пользователям привилегий доступа к системе. Вот пример использования опции:
Читать дальше