Привилегии

Привилегии в PostgreSQL определяют, какие действия могут выполнять пользователи (роли) с объектами БД (таблицами, схемами, функциями и др.).

Объекты БД, на которые распространяются привилегии:

  • Таблицы, представления (VIEW), последовательности (SEQUENCE).

  • Схемы (SCHEMA), базы данных (DATABASE), функции.

Типы привилегий:

  • SELECT — чтение данных.

  • INSERT — добавление данных.

  • UPDATE — изменение данных.

  • DELETE — удаление данных.

  • CREATE — создание объектов.

  • USAGE — использование объектов (например, схем).


Команды управления привилегиями

GRANT — выдача прав
GRANT привилегии ON объект TO роль;
Примеры:
  1. Дать право на чтение таблицы:
    GRANT SELECT ON employees TO analyst;
  2. Дать все права на схему:
    GRANT ALL PRIVILEGES ON SCHEMA public TO developer;
  3. Дать право на использование последовательности:
    GRANT USAGE ON SEQUENCE user_id_seq TO manager;
REVOKE — отзыв прав
REVOKE привилегии ON объект FROM роль;
Пример:
REVOKE DELETE ON departments FROM intern;

Особые случаи

Права для всех таблиц в схеме:
GRANT SELECT ON ALL TABLES IN SCHEMA public TO reader;
Выдача прав с возможностью передачи (WITH GRANT OPTION):
GRANT UPDATE ON projects TO team_lead WITH GRANT OPTION;
Права по умолчанию (ALTER DEFAULT PRIVILEGES):
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO reporter;
Просмотр текущих привилегий
Для таблиц:
\z таблица -- в psql
Для всех объектов:
SELECT * FROM information_schema.table_privileges;

  • GRANT/REVOKE — основные инструменты управления привилегиями.

  • WITH GRANT OPTION позволяет делегировать права.

  • ALTER DEFAULT PRIVILEGES упрощает настройку прав для новых объектов.

Рекомендации:
  • Соблюдайте принцип минимальных привилегий.

  • Регулярно проверяйте права (\z, information_schema).


Комментарии

Добавить комментарий

Чтобы оставить комменатрий необходимо Авторизоваться