полное руководство по ролям и разрешениям в postgresql
полное руководство по ролям и разрешениям в postgresql

Полное руководство по ролям и разрешениям в PostgreSQL

В этой статье вы подробно и на практике узнаете, как создавать роли, предоставлять разрешения, управлять разрешениями, создавать групповые роли и контролировать доступ в PostgreSQL.
0 Акции
0
0
0
0

Введение

PostgreSQL — мощная база данных корпоративного уровня с развитой системой управления пользователями и уровнями доступа. В PostgreSQL нет понятия “пользователь” в традиционном смысле; всё представляет собой единую сущность. Роль который может иметь поведение пользователя или группы.
Правильное использование ролей и разрешений повышает безопасность, улучшает управление базами данных и предотвращает нежелательный доступ, особенно при запуске PostgreSQL на VPS.


1. Предпосылки для работы с ролями и разрешениями

Для начала вам необходимо следующее:

  • Linux VPS (например, Ubuntu 20.04 или 22.04)

  • PostgreSQL установлен

  • Доступ пользователя root или sudo

  • Базовое введение в командную строку

Войдите в учетную запись postgres:

sudo -i -u postgres psql

2. Просмотр ролей в 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) Сначала установите пароль роли:

\пароль app_user

2) Выйти из psql:

\q

3) Войдите в систему, используя новую роль:

psql -U app_user -d postgres -h 127.0.0.1 -W

8. Создайте таблицу для проверки разрешений.

CREATE TABLE employees ( id serial PRIMARY KEY, name varchar(50), created_at timestamp DEFAULT NOW() );

9. Предоставление разрешений (GRANT) в PostgreSQL

Предоставление конкретного разрешения:

GRANT SELECT ON employees ДЛЯ app_user;

Разрешение INSERT:

ПРЕДОСТАВИТЬ INSERT ON employees ДЛЯ app_user;

Предоставление ВСЕХ привилегий:

ПРЕДОСТАВИТЬ ВСЕМ СОТРУДНИКАМ ПРАВА ДЛЯ app_user;

Предоставление доступа всем пользователям (публичный):

ПРЕДОСТАВИТЬ ВЫБОР СОТРУДНИКОВ ОБЩЕСТВЕННОСТИ;

10. Просмотр разрешений для каждой таблицы

\z сотрудников

11. Отозвать разрешения (REVOKE)

Отозвать разрешение на вставку для определенной роли:

ОТМЕНИТЬ ВСТАВКУ ДЛЯ сотрудников ИЗ app_user;

Отозвать все разрешения:

ОТМЕНИТЬ ВСЕ ПРАВА НА СОТРУДНИКОВ ИЗ app_user;

Удалить общее разрешение:

ОТМЕНИТЬ ВЫБОР СОТРУДНИКОВ ИЗ ОБЩЕСТВЕННОСТИ;

12. Групповая роль в PostgreSQL

Групповая роль — это роль, членами которой являются другие роли, например группы Linux.

1) Создайте групповую роль:

СОЗДАТЬ РОЛЬ dev_team;

2) Добавление пользователей в группу:

GRANT dev_team TO app_user; GRANT dev_team TO backend_user;

3) Проверка членства:

\du

4) Использование групповой роли:

УСТАНОВИТЬ РОЛЬ dev_team;

С этого момента все разрешения, имеющиеся у dev_team, будут активированы.

5) Автоматическое наследование с помощью INHERIT

ИЗМЕНИТЬ РОЛЬ app_user С НАСЛЕДОВАНИЕМ;

13. Передайте право собственности на объекты перед удалением роли

Если вы хотите удалить роль, но таблица или база данных принадлежит ей:

Изменить владельца таблицы:

ALTER TABLE employees OWNER TO postgres;

Затем удалите роль:

УДАЛЕНИЕ РОЛЬ dev_team;

14. Важные советы по безопасности при использовании ролей на VPS

  • Каждая служба (Backend, Cronjob, Worker) должна иметь отдельную роль.

  • В качестве совета по безопасности используйте роли с низким уровнем доступа.

  • В архитектуре базы данных ни одно приложение не играет никакой роли. суперпользователь Не отдавайте.

  • Пароли ролей должны быть надежными и иметь срок действия.

  • Например, всегда используйте группы для управления доступом.


Заключение

Практически всё в PostgreSQL основано на ролях. Вы можете создавать пользователей, группы, системные роли и роли приложений, используя единую административную модель. Кроме того, инструменты ГРАНТ и ОТМЕНИТЬ Они обеспечивают полный контроль над таблицами, схемами, базами данных и функциями.

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

[Общий: 0   Средний: 0/5]
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может понравиться

Как импортировать и экспортировать базы данных в MySQL или MariaDB

Введение: Импорт и экспорт баз данных — распространённая задача при разработке программного обеспечения. Вы можете использовать данные дампа…