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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



Когда пользователи подключаются к SQL-сервер, действия, которые они могут выполнять, определяются правами, выданными их учетной записи, группе или роли, в которой они состоят. Для выполнения тех или иных действий пользователь должен иметь соответствующие права. Выполнение некоторых действий не требует явного разрешения и доступно по умолчанию. Для предоставления пользователям определенного набора прав можно использовать роли. Создав несколько ролей и предоставив им необходимые права доступа, администратор может просто включать пользователей в соответствующие роли. В этом случае пользователь автоматически получает все права, определенные для роли.

Права в SQL-сервер можно разделить на 3 категории:

1. Разрешение для объектов

Работа с данными и выполнение хранимых процедур требует наличие класса доступа, называемого «разрешением для объектов». Разрешение для объектов контролирует возможность выполнения команд Select, Insert, Update и Delete для таблицы представлений. Действия с хранимыми процедурами контролируются разрешением либо запрещением их выполнения, т.е. предоставлением или запрещением команды EXECUTE.

2. Разрешение для команд Transact SQL

Этот класс разрешений контролирует возможность создания объекта в БД, а также создание самой БД и выполнение процедур резервного копирования (Create view, create table и т.д.).

3. Неявное разрешение

Этот класс разрешений контролирует действия, которые могут быть выполнены только членами ролей сервера или владельцами объектов в БД. Неявные разрешения не предоставляются пользователям напрямую, он получает их только при определенных обстоятельствах. Например, пользователь может стать владельцем объекта БД, только если он сам создаст этот объект, либо если другой владелец объекта передаст ему права владения своим объектом. Владелец объекта имеет все права для выполнения любых действий с объектом, при чем эти права нигде явно не указываются. Для конкретного действия, контролируемого разрешением, возможны три варианта состояния доступа: предоставления, запрещения, неявного отклонения. После создания пользователь не имеет никаких прав доступа кроме тех, которые разрешены для специальной роли БД Public/

В SQL-сервер существует возможность контролировать права доступа не только на уровне таблиц, но и на уровне колонок. Для предоставления прав доступа используется команда GRANT.

GRANT

{ALL/permissions [..n]}

{[(column [..n])] ON

{table/view}

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

| ON {stored_procedure}

TO security_account

[WITH GRANT OPTION]

[AS {group/role}]

Для разрешения выполнения команд SQL используется следующая инструкция:

GRANT {ALL/Statement [..n]}

TO security_account [...n]

Запрещение доступа

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

DENY

{ALL/permissions [..n]}

{[(column [..n])] ON

{table/view}

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

| ON {stored_procedure}

TO security_account [..n]

[CASCADE]

Для запрещения выполнения команд Transact SQL:

DENY {ALL/Statement [..n]}

TO security_account [...n]

Неявное отклонение доступа

Неявное отклонение доступа подобно запрещению доступа с тем отличием, что оно действует только на том уровне, на котором определено. Если пользователю на определенном уровне неявно отклонен доступ, он может получить его на другом уровне иерархии через членство в роли, имеющей право просмотра.

Для неявного отклонения доступа к объектам БД используется команда REVOKE.

REVOKE

{ALL/permissions [..n]}

{[(column [..n])] ON

{table/view}

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

| ON {stored_procedure}

TO security_account [..n]

[CASCADE]

[AS {role/group}]

Для неявного отклонения разрешений на использование команд Transact SQL:

REVOKE {ALL/Statement [..n]}

TO security_account [...n]

Значения параметров команд:

ALL – означает, что пользователю будут предоставлены все возможные разрешения.

Permissions – список доступных операций, которые предоставляются пользователю. Можно предоставлять одновременно несколько разрешений.

Statement – предоставление разрешений на выполнение команд Transact SQL.

Security_account – указывается имя объекта системы безопасности, которую необходимо включить в роль. Это могут быть как учетные записи SQL-сервер, так и группы пользователей Windows.

With Grant Option – использование данного параметра позволяет пользователю, которому предоставляются права, назначать права на доступ к объекту для других пользователей.

As role/group – этот параметр позволяет указать участие пользователя в роли, которому предоставляется возможность предоставлять права другим пользователям.

Cascade – позволяет отзывать права не только у данного пользователя, но и у всех пользователей, которым он предоставил данные права.



Поделиться:


Последнее изменение этой страницы: 2017-02-19; просмотров: 227; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.21.231.245 (0.009 с.)