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

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

Платформа PostgreSQL поддерживает базовые возможности инструкции REVOKE, относящиеся в первую очередь к отмене прав доступа к таблицам, представлениям и последовательностям. Не поддерживаются специальные опции стандарта ANSI, такие, как HIERARCHY OPTION FOR и ADMIN OPTION FOR. Синтаксис следующий.

REVOKE {[GRANT OPTION FOR] | привилегии [, …]} ON {имя_объекта} [, …]

FROM {имя_получателя | PUBLIC | GROUP имя_группы]

[{CASCADE | RESTRICT}]

Где:

GRANT OPTION FOR

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

привилегии

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

ALL PRIVILEGES

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

(SELECT | INSERT DELETE UPDATE}

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

REFERENCES

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

RULE

Пользователь лишается права создавать или удалять правило для таблицы или представления.

USAGE

Пользователь лишается права использовать домен, пользовательский тип данных или набор символов. Это предложение противоположно привилегии UNDER, которая дает возможность создавать эти объекты.

FROM {имя_получателя [, …] | PUBLIC GROUP имя группы}

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

CASCADE | RESTRICT

Операция отмены ограничивается только указанной привилегией (RESTRICT) или отменяются указанная привилегия и все зависимые от нее привилегии (CASCADE). Это предложение используется только с предложением GRANT OPTION FOR.

Реализация инструкции REVOKE в PostgreSQL относительно проста. Единственная проблема состоит в том, что PostgreSQL считает термин GROUP синонимом термина ROLE. Например, следующая инструкция удаляет несколько привилегий у группы PUBLIC и группы READ-ONLY.

REVOKE ALL PRIVILEGES ON employee FROM public; REVOKE SELECT ON jobs FROM read-only;

Платформа PostgreSQL не поддерживает привилегий доступа к отдельным столбцам таблицы или представления. Чтобы обойти это ограничение, можно создать представление, в которое входят только нужные столбцы, и предоставлять или отменять права доступа к этому представлению. При отмене привилегии GRANT OPTION FOR следует обратить особое внимание на зависимости. Если вы будете отзывать привилегию, используя ключевое слово RESTRICT, инструкция не будет выполнена, если другие пользователи зависят от этой операции. Если вы будете отзывать привилегию, используя ключевое слово CASCADE, инструкция отменит привилегию не только у того пользователя, которого она касается, но и у всех зависимых пользователей.

Источник