Полномочия используются для управления доступом к объектам баз данных; они указывают, какие пользователи могут выполнять определенные операции с базой данных. Вы можете задавать полномочия на уровне сервера и на уровне базы данных. Полномочия на уровне сервера используются для того, чтобы администраторы баз данных (DBA) могли выполнять административные задачи для баз данных. Полномочия на уровне базы данных используются для того, чтобы разрешать или запрещать доступ к объектам и операторам базы данных. В этом разделе мы рассмотрим типы полномочий и способы их присваивания.
Как уже говорилось, полномочия на уровне сервера присваиваются DBA и позволяют им выполнять задачи администрирования. Эти полномочия определяются по фиксированным ролям сервера. Пользовательским login-записям могут быть присвоены фиксированные роли на сервере, но эти роли нельзя модифицировать. (Роли на сервере описываются в разделе "Использование фиксированных ролей на сервере" далее.) К полномочиям на сервере относятся полномочия SHUTDOWN, CREATE DATABASE, BACKUP DATABASE и CHECKPOINT. Полномочия на сервере используются только для авторизации DBA, чтобы они могли выполнять административные задачи; их не нужно модифицировать или предоставлять отдельным пользователям.
Полномочия на уровне объектов базы данных – это класс полномочий, которые предоставляются для доступа к объектам базы данных. Полномочия доступа к объектам необходимы для доступа к таблице или представлению с помощью таких операторов, как SELECT, INSERT, UPDATE и DELETE. Полномочия доступа к объектам также требуются для использования оператора EXECUTE, который применяется для запуска хранимых процедур. Для присваивания полномочий доступа к объектам используются Enterprise Manager и операторы T-SQL.
Чтобы использовать Enterprise Manager для предоставления полномочий доступа к объектам базы данных, выполните следующие шаги.
Чтобы использовать T-SQL для присваивания какому-либо пользователю полномочий доступа к объектам, вы должны выполнить оператор GRANT. Этот оператор имеет следующий синтаксис:
GRANT { ALL | полномочия } [ колонка ON {таблица | представление} ] | [ ON таблица(колонка) ] | [ ON представление(колонка) ] | [ ON { хранимая_процедура | расширенная_процедура } ] TO учетная_запись_безопасности [ WITH GRANT OPTION ] [ AS { группа | роль } ]
Параметр учетная_запись_безопасности может быть представлен одним из следующих типов учетных записей:
Использование ключевого слова GRANT OPTION позволяет пользователю или пользователям, указанным в данном операторе, предоставлять указанный тип полномочий другим пользователям. Это может оказаться полезным, если вы предоставляете полномочия другим DBA. Однако GRANT OPTION следует использовать с осторожностью.
Необязательный параметр AS указывает, кто имеет право на выполнение этого оператора GRANT. Право на выполнение оператора GRANT должно быть конкретно предоставлено пользователю или роли.
Ниже приводится пример использования оператора GRANT:
GRANT SELECT, INSERT, UPDATE ON Customers TO MaryW WITH GRANT OPTION AS Accounting
Параметр AS Accounting используется потому, что роль Accounting имеет полномочия на предоставление полномочий по таблице Customers. Ключевое слово GRANT OPTION позволяет пользователю MaryW предоставлять указанные полномочия другим пользователям.
Для отзыва полномочий какого-либо пользователя по объектам вы можете использовать оператор T-SQL REVOKE. Оператор REVOKE имеет следующий синтаксис:
REVOKE [ GRANT OPTION FOR ] { ALL [ PRIVILEGES ] | полномочия } [ колонка ON {таблица | представление} ] | [ ON таблица(колонка) ] | [ ON представление(колонка) ] | [ ON { хранимая_процедура | расширенная_процедура } ] { TO | FROM } учетная_запись_безопасности [ CASCADE ] [ AS { группа | роль } ]
Параметр учетная_запись_безопасности может быть представлен одним из следующих типов учетных записей:
Ключевое слово GRANT OPTION FOR позволяет вам отзывать полномочия, которые вы предоставили с помощью ключевого слова GRANT OPTION, а также отзывать указанные здесь полномочия. Необязательный параметр AS указывает, кто имеет право на выполнение этого оператора REVOKE.
Ниже приводится пример использования оператора REVOKE:
REVOKE ALL ON Customers FROM MaryW
Оператор REVOKE ALL выполнит отзыв всех полномочий, которые имеет пользователь MaryW по таблице Customers.