Введение
PostgreSQL — мощная база данных корпоративного уровня с развитой системой управления пользователями и уровнями доступа. В PostgreSQL нет понятия “пользователь” в традиционном смысле; всё представляет собой единую сущность. Роль который может иметь поведение пользователя или группы.
Правильное использование ролей и разрешений повышает безопасность, улучшает управление базами данных и предотвращает нежелательный доступ, особенно при запуске PostgreSQL на VPS.
1. Предпосылки для работы с ролями и разрешениями
Для начала вам необходимо следующее:
Linux VPS (например, Ubuntu 20.04 или 22.04)
PostgreSQL установлен
Доступ пользователя root или sudo
Базовое введение в командную строку
Войдите в учетную запись postgres:
sudo -i -u postgres psql2. Просмотр ролей в PostgreSQL
Чтобы просмотреть все доступные роли:
\duПример вывода:
Имя роли | Атрибуты | Член -----------+--------------------------------------------+------------ postgres | Суперпользователь, Создать роль, Создать базу данных, Репликация | {}3. Создайте новую роль
Метод 1: создание роли из psql
СОЗДАТЬ РОЛЬ user_demo;Эта роль пока не имеет разрешения на вход в систему.
Метод 2: Создание роли с определенными функциями
Пример: Роль, в которую можно войти с помощью пароля:
СОЗДАТЬ РОЛЬ user_demo С ПАРОЛЕМ ДЛЯ ВХОДА 'StrongPass123';
Способ 3: Создание роли через CLI
createuser --interactiveПри использовании этого метода вам будет предложено:
Это суперпользователь?
Разрешено ли создавать базу данных?
Разрешено ли создавать роли?
4. Удалить роль в PostgreSQL
Удалить роль:
УДАЛЕНИЕ РОЛЬ user_demo;Чтобы избежать ошибки, если роль не существует:
УДАЛИТЬ РОЛЬ, ЕСЛИ СУЩЕСТВУЕТ user_demo;5. Настройки при создании роли
PostgreSQL позволяет указывать важные свойства при создании роли:
СОЗДАТЬ РОЛЬ app_user С ЛОГИНОМ CREATEDB NOCREATEROLE ПАРОЛЬ 'ExamplePass';Наиболее важные атрибуты:
| Особенность | Объяснение |
|---|---|
| АВТОРИЗОВАТЬСЯ | Разрешение на доступ к базе данных |
| CREATEDB | Разрешение на создание базы данных |
| КРЕАТЕРОЛЬ | Разрешение на создание роли |
| НАСЛЕДОВАТЬ | Наследование разрешения от роли матери |
| СУПЕРПОЛЬЗОВАТЕЛЬ | Полный доступ |
| ПАРОЛЬ | Пароль |
| ДЕЙСТВИТЕЛЬНО ДО | Установить дату истечения срока действия |
6. Измените настройки роли с помощью ALTER ROLE
Если вы захотите изменить разрешения роли позже:
Добавление логина:
ИЗМЕНИТЬ РОЛЬ app_user С ВХОДОМ;Удалить возможность входа в систему:
ИЗМЕНИТЬ РОЛЬ app_user С NOLOGIN;Изменить пароль:
ИЗМЕНИТЬ РОЛЬ app_user С ПАРОЛЕМ 'НовыйПароль!';7. Войдите в PostgreSQL с другой ролью.
1) Сначала установите пароль роли:
2) Выйти из psql:
3) Войдите в систему, используя новую роль:
8. Создайте таблицу для проверки разрешений.
9. Предоставление разрешений (GRANT) в PostgreSQL
Предоставление конкретного разрешения:
Разрешение INSERT:
Предоставление ВСЕХ привилегий:
Предоставление доступа всем пользователям (публичный):
10. Просмотр разрешений для каждой таблицы
11. Отозвать разрешения (REVOKE)
Отозвать разрешение на вставку для определенной роли:
Отозвать все разрешения:
Удалить общее разрешение:
12. Групповая роль в PostgreSQL
Групповая роль — это роль, членами которой являются другие роли, например группы Linux.
1) Создайте групповую роль:
2) Добавление пользователей в группу:
3) Проверка членства:
4) Использование групповой роли:
С этого момента все разрешения, имеющиеся у dev_team, будут активированы.
5) Автоматическое наследование с помощью INHERIT
13. Передайте право собственности на объекты перед удалением роли
Если вы хотите удалить роль, но таблица или база данных принадлежит ей:
Изменить владельца таблицы:
Затем удалите роль:
14. Важные советы по безопасности при использовании ролей на VPS
Каждая служба (Backend, Cronjob, Worker) должна иметь отдельную роль.
В качестве совета по безопасности используйте роли с низким уровнем доступа.
В архитектуре базы данных ни одно приложение не играет никакой роли.
суперпользовательНе отдавайте.Пароли ролей должны быть надежными и иметь срок действия.
Например, всегда используйте группы для управления доступом.
Заключение
Практически всё в PostgreSQL основано на ролях. Вы можете создавать пользователей, группы, системные роли и роли приложений, используя единую административную модель. Кроме того, инструменты ГРАНТ и ОТМЕНИТЬ Они обеспечивают полный контроль над таблицами, схемами, базами данных и функциями.
Правильное управление ролями в PostgreSQL очень важно, особенно на VPS, поскольку от этого зависит безопасность и стабильность всей вашей системы баз данных.









