Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Инструкция REVOKE cоветы и хитрости SQL Server

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

Платформа SQL Server не поддерживает предложения HIERARCHY OPTION и ADMIN OPTION стандарта ANSI. Хотя предложение ADMIN OPTION и не поддерживается, в версии команды REVOKE SQL Server есть две административные привилегии (CREATE и BACKUP). Синтаксис инструкции следующий.

REVOKE [GRANT OPTION FOR]
{[объектная_привилегия] [, …] |
[системная_привилегия]} [ON [объект] [(столбец [, …])]]|
{ТО | FROM} {имя_получателя [, …] | роль [, …] | PUBLIC | GUEST} [CASCADE]
[AS {имя_группы | имя_роли]]

Где:

GRANT OPTION FOR

Пользователь лишается права назначать конкретные привилегии другим пользователям.

объектная привилегия

Отменяются права доступа к различным инструкциям, которые могут комбинироваться в любом порядке.

ALL [PRIVELEGES]

Отменяются все привилегии, назначенные в настоящий момент указанным пользователям и/или для указанных объектов базы данных. Использование этого предложения не поощряется, поскольку способствует нечеткости программирования.

(SELECT | INSERT DELETE UPDATE}

Указанный пользователь лишается указанной привилегии доступа к указанному объекту (например, к таблице или представлению). Для отмены привилегий уровня столбца используйте список столбцов, заключенный в скобки.

REFERENCES

Отменяется право создавать и удалять ограничения типа «внешний ключ», ссылающиеся на объект базы данных как на родительский объект.

RULE

Отменяется право пользователя создавать или удалять правило в таблице или представлении.

EXECUTE

Отменяется право выполнять хранимую процедуру, пользовательскую функцию или расширенную хранимую процедуру.

системная привилегия

Отменяется право выполнения следующих инструкций: CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE, CREATE VIEW, BACKUP DATABASE и BACKUP LOG.

ON [объект] [(столбец [, …])]

Отменяется право доступа пользователя к указанному объекту. Если объект представляет собой таблицу или представление, вы можете отменять привилегии доступа к отдельным столбцам. Вы можете отменять в таблице или представлении привилегии SELECT, INSERT, UPDATE, DELETE и REFERENCES. В столбцах таблицы или представления вы можете отменять только привилегии SELECT и UPDATE. Вы можете отменять привилегии EXECUTE в хранимой процедуре, пользовательской функции или расширенной хранимой процедуре.

[ТО | FROM] имя получателя | роль | PUBLIC | GUEST

Указываются пользователи или роли, теряющие указанную привилегию. Для отмены привилегий, назначенных роли PUBLIC (которая подразумевает всех пользователей), можно использовать ключевое слово PUBLIC. Можно перечислить несколько получателей, разделяя их имена запятыми. В SQL Server также поддерживается учетная запись GUEST, которую используют все пользователи, которые не имеют своей записи в базе данных.

CASCADE

Удаляются привилегии пользователей, которые получили свои права через предложение WITH GRANT OPTION. Это предложение является необходимым при использовании предложения GRANT OPTION FOR.

AS (имя_группы имя _роли}

Указываются права, в соответствии с которыми отменяется привилегия. В некоторых случаях пользователю могут временно потребоваться права определенной группы, чтобы отменить указанные привилегии. В этом случае, чтобы получить такие права, вы можете использовать предложение AS.

Две формы инструкции REVOKE — REVOKE объектная привилегия и REVOKE системная_привилегия являются взаимоисключающими. Не пытайтесь выполнить обе операции в одной инструкции. Ключевое синтаксическое отличие между ними состоит в том, что не следует использовать предложение ON при удалении системных привилегий. Например, чтобы удалить системную привилегию, можно использовать следующую команду.

REVOKE CREATE DATABASE, BACKUP DATABASE FROM dylan, katie

Если привилегии были присвоены пользователю с применением предложения WITH GRANT OPTION, то отменять эти привилегии следует с одновременным использованием двух предложений — WITH GRANT OPTION и CASCADE. Например:

REVOKE GRANT OPTION FOR
SELECT, INSERT, UPDATE, DELETE ON titles TO editors
CASCADE
GO

Команду REVOKE можно использовать только в текущей базе данных. Соответственно всегда неявно предполагаются опции стандарта ANSI CURRENTJJSER и CURRENTROLE. Инструкция REVOKE также используется для отмены всех параметров DENY.

Платформа SQL Server также поддерживает дополнительную инструкцию DENY. Синтаксис инструкции DENY идентичен синтаксису инструкции REVOKE. Однако, по сути, они отличаются тем, что REVOKE нейтрализует привилегии пользователя, a DENY их явно запрещает. Используйте инструкцию DENY, чтобы запретить пользователю или роли доступ к привилегии, даже если привилегия предоставляется явно или через назначение роли.

Инструкция REVOKE должна использоваться для удаления ранее предоставленных или запрещенных (DENY) привилегий. Например, пользователь kelly ушла в продолжительный отпуск по уходу за ребенком. На это время ее доступ к таблице employee был запрещен. Она вернулась, и мы вновь разрешили привилегии.

DENY ALL ON employee TO Kelly GO

REVOKE ALL ON employee TO Kelly GO

В этом примере команда REVOKE не удаляет ее привилегии, она нейтрализует действие команды DENY.

Источник