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

08.09.2025
0
9
---

Роли в 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:
Это код:
Кликните на изображение чтобы обновить код, если он неразборчив
Введите сюда:
Похожие новости:
03.09.2025
Deployment и DaemonSet являются двумя типами контроллеров, которые управляют развертыванием и обеспечением жизненного цикла подов (групп контейнеров). Они оба играют важные роли, но используются для разных целей и сценариев.
03.09.2025
Это программные системы (RabbitMQ, Apache Kafka, Redis, ActiveMQ), которые позволяют обмениваться данными между разными компонентами приложения или между различными приложениями. Они действуют как посредники, принимая сообщения от отправителей
31.08.2025
Вертикальное масштабирование пода без перезапуска стало возможным начиная с Kubernetes v1.33. Если вы хотели выдать приложению (Pod в Kubernetes) больше памяти или CPU, его приходилось перезапускать.
31.08.2025
kubectl logs подходит для маленьких сетапов, но сотни подов на множестве нод? Полный хаос. Здесь и выручает стек EFK (Elasticsearch + Fluent Bit/Fluentd + Kibana).
02.09.2025
Чтобы сделать дамп базы данных MySQL, используется утилита mysqldump
все шаблоны для dle на сайте шаблоны dle 11.2 скачать
выбрать фон