Разграничение прав доступа PostgreSQL

08.09.2025
0
17
---

Роли в PostgreSQL

  • Роль = пользователь или группа пользователей.

  • Создаются на уровне всего кластера (CREATE ROLE).

  • Каждое подключение выполняется от имени роли.

  • Атрибуты ролей:

    • LOGIN — можно подключаться к БД (пользователь).

    • SUPERUSER — полный доступ, минует все проверки.

    • CREATEDB — можно создавать базы.

    • CREATEROLE — можно создавать/удалять/изменять роли.

    • REPLICATION — права для потоковой репликации.

    • PASSWORD — используется при аутентификации.

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

Членство и наследование

  • Роли можно объединять в группы.

  • GRANT group_role TO user_role; — добавление в группу.

  • Атрибут INHERIT — автоматически наследовать права группы.

  • SET ROLE — временно переключиться на другую роль.

Удаление роли

  1. Передать объекты другой роли (REASSIGN OWNED).

  2. Удалить оставшиеся права/объекты (DROP OWNED).

  3. Удалить роль (DROP ROLE).


 Схемы

  • Схема = пространство имён объектов внутри базы данных.

  • База может содержать несколько схем, а в них — таблицы, функции и др.

  • По умолчанию все объекты создаются в схеме public.

  • Обращение идёт через путь поиска (search_path), обычно:

    "$user", public

    То есть сначала ищется схема с именем пользователя, потом public.

Права на схемы

  • USAGE — доступ к объектам внутри схемы.

  • CREATE — возможность создавать новые объекты.

  • По умолчанию в public все имеют права CREATE и USAGE, что небезопасно.

  1. Личные схемы для пользователей

    • REVOKE CREATE ON SCHEMA public FROM PUBLIC;

    • Создать каждому пользователю свою схему.

    • Тогда $user в search_path будет указывать на его личное пространство.

  2. Удалить public из search_path

    • Оставить её только для явного использования.

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

  • Роли отвечают за то, кто и что может делать.

  • Схемы отвечают за то, где хранятся объекты и как к ним обращаться.

  • Грамотное использование ролей и схем обеспечивает безопасность и удобство работы в многопользовательской среде PostgreSQL.

Понравиласть статья? Жми лайк или расскажи своим друзьям!
Теги к новости:
PostgreSQL, System Administrator, Linux
Комментарии
Добавить комментарий
Добавление комментария
Ваше Имя:
Ваш E-Mail:
Это код:
Кликните на изображение чтобы обновить код, если он неразборчив
Введите сюда: