Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
102
Добавлен:
17.02.2016
Размер:
1.44 Mб
Скачать

Права на доступ к объектам баз данных

Работа с данными и выполнение хранимых процедур требуют наличия класса доступа, называемого правами на доступ к объектам баз данных. Под объектами подразумеваются таблицы, столбцы таблиц, представления, хранимые процедуры. Права на доступ к объектам баз данных контролируют возможность выполнения пользователями, например, команд SELECT, INSERT, UPDATE и DELETE для таблиц и представлений. Таким образом, если пользователю необходимо добавить новые данные в таблицу, ему следует предоставить право INSERT (вставка записей в таблицу). Предоставление же пользователю права EXECUTE разрешает ему выполнение каких-либо хранимых процедур.

Для различных объектов применяются разные наборы прав доступа к ним:

  • SELECT, INSERT, UPDATE, DELETE и REFERENCES - эти права могут быть применены для таблицы или представления;

  • SELECT и UPDATE — эти права могут быть применены к конкретному столбцу таблицы или представления;

  • EXECUTE — это право применяется только к хранимым процедурам и функциям.

  • Ниже приводится более подробное описание каждого из этих прав.

  • INSERT. Это право позволяет вставлять в таблицу или представление новые строки. Как следствие, право INSERT может быть выдано только на уровне таблицы или представления и не может быть выдано на уровне столбца.

  • UPDATE. Это право выдается либо на уровне таблицы, что позволяет изменять все данные в таблице, либо на уровне отдельного столбца, что разрешает менять данные только в пределах конкретного столбца.

  • DELETE. Это право позволяет удалять строки из таблицы или представления. Как и право INSERT, право DELETE может быть выдано только на уровне таблицы или представления и не может быть выдано на уровне столбца.

  • SELECT. Разрешает выборку данных. Может выдаваться как на уровне таблицы, так и на уровне отдельного столбца.

  • REFERENCES. Возможность ссылаться на указанный объект. Применительн таблицам разрешает пользователю создавать внешние ключи, ссылающиеся на первичный ключ или уникальный столбец этой таблицы. Применительно к представлениям право REFERENCES позволяет связывать представление схемами таблиц, на основе которых строится представление. Это позволяет отслеживать изменения структуры исходных таблиц, которые могут повлиять на работу представления. Право REFERENCES не существовало в предыдущих версиях SQL Server.

Как следует из вышеизложенного, доступ можно предоставлять как на уровне всей таблицы или представления, так и на уровне отдельного столбца. Обычно не практикуется управление правами доступа на уровне конкретного столбца. Если в таблице имеется один или более столбцов, доступ пользователей к которым необходимо ограничить, то в базе данных часто создается представление (view), включающее только те столбцы исходной таблицы, доступ к которым разрешен.

Предоставить или отклонить доступ пользователю базы данных ко всем объектам базы данных можно при помощи встроенных ролей базы данных. Например, для разрешения чтения данных из всех таблиц и представлений базы данных достаточно включить пользователя в фиксированную роль db _ datareader, а не изменять права доступа пользователя к каждой таблице и представлению в отдельности.

Используйте команду GRANT для управления разрешениями пользователя на доступ к объектам базы данных:

GRANT

{ ALL [PRIVILEGES] | permission[,...n] }

{

[(column[,...n])] ON {table|view}

| ON {table|view} [(column[,...n])]

| ON {stored_procedure | extended_procedure}

}

TO security_account[,...n]

[WITH GRANT OPTION]

[ AS { group | role } ]

Назначение параметров команды GRANT следующее:

ALL — пользователю предоставляются все доступные разрешения. Этот параметр могут использовать только участники роли sysadmin;

permission — список доступных разрешений, которые предоставляются пользователю (SELECT, INSERT, UPDATE, DELETE, EXECUTE). Вы можете одновременно предоставлять несколько разрешений, в этом случае их нужно разделять запятыми;

security _ account — имя того объекта системы безопасности, который необходимо включить в роль. В качестве таких объектов могут выступать как учетные записи SQL Server, так и пользователи и группы пользователей Windows NT, которым предоставлен доступ к серверу баз данных;

table, view, column, stored _ procedure, extended _ procedure — в качестве данных параметров выступают имена объектов в текущей базе данных, для которых необходимо предоставить доступ;

WITH GRANT OPTION — использование данного параметра позволяет пользователю, которому вы предоставляете права, назначать права на доступ к объекту другим пользователям;

[ AS { group | role } ] — этот необязательный параметр позволяет указать участие пользователя в роли, которая имеет возможность предоставлять права другим пользователям.

В качестве примера команды рассмотрим следующую ситуацию. Вам необходимо предоставить права на использование команд INSERT и SELECT группе Engineer в таблице Materials. При этом нужно, чтобы в дальнейшем пользователи этой группы могли сами предоставлять аналогичные права. Для этого следует выполнить следующую команду:

GRANT SELECT, INSERT

ON Materials

TO Engineer

WITH GRANT OPTION

Впоследствии пользователь Valentin, являющийся членом группы Engineer, может предоставить аналогичные права другому пользователю Chief :

GRANT SELECT, INSERT

ON Materials

TO Chief

AS Engineer

В данном случае необходимо подтвердить, на каком основании Valentin предоставляет права, поэтому применяется параметр AS.

Соседние файлы в папке Методички ИСИС 230401