Введение.
Продолжаем тему обеспечения безопасности пользователей БД PgSQL, начало см. PostgreSQL Linux часть 5.
В статье PostgreSQL Linux часть 5, будем рассматривать практические примеры и действия с командами управления пользовательскими ролями.
Все статьи посвящённые PostgreSQL см.
тэг БД или поиск postgres
Подготовка PostgreSQL Linux часть 5.
- Стенд
- Cервер ALT Linux, имя: lin-pq; IP 10.0.2.11;
- PostgreSQL X.X
- метод аутентификации md5
- PostgreSQL X.X
- Simply Linux, имя: sl, IP=10.0.2.30
- Пользователь, имя: trt
- Cервер ALT Linux, имя: lin-pq; IP 10.0.2.11;
Команда createuser.
После того, как был добавлен новый пользователь trt с правами администратора, становится доступна консольная команда creatuser.
Роль trt позволяет создать нового пользователя xre с консоли сервера.
Пользователь trt имеет учётную запись на сервере, где установлен PgSQL
Теперь, эти же действия произведём с удалённой рабочей станции.
- Ключи команды createuser
- -p порт сервера (если стандартный, 5432, можно не указывать)
- -h имя\IP сервера PgSQL
- -i подтверждение об удалении роли
- -e вывести журнал действий
В строке CREATE ROLE указаны какие роли доступны/Не доступны при создании.
Проверяем наши действия с помощью клиента psql.
Команда dropuser.
Команда dropuser удаляет пользователя, только суперпользователь или пользователь с привилегией CREATEROLE могут выполнять данные действия.
Необходимо быть суперпользователем, чтобы удалить учётную запись другого суперпользователя
Выполним удаление пользователя xre, находясь на удалённой рабочей станции и проверим свои действия.
Находясь на консоли сервера команда dropuser может выполнятся без ключа «h».
CREATE ROLE.
Встроенная в оболочку psql команда CREATE ROLE имеет в своём арсенале более широкие возможности чем createuser.
Команда CREATE ROLE использует параметры, с помощью которых может гибко управлять ролевыми профилями пользователей.
Подключимся к серверу с помощью терминального клиента psql.
[trt@sl ~]$ psql -h 10.0.2.11 -U trt
Пароль пользователя trt: **********
Создадим роль, для которой разрешён вход.
trt=# CREATE ROLE xre LOGIN;
Сформируем роль с паролем.
trt=# CREATE USER xre WITH PASSWORD 'jwdold$%^;
Инициируем роль, которая может создавать БД и управлять др.ролями.
trt=# CREATE ROLE admbd WITH CREATEDB CREATEROLE;
DROP ROLE.
Команда DROP ROLE удаляет роль в базе данных, освобождая объекты от ролевой зависимости.
Перед удалением, необходимо освободить все принадлежащие роли объекты и удалить права этой роли на другие объекты.
Удалим существующею роль xre с используя psql.
[trt@sl ~]$ psql -h 10.0.2.11 -U trt
Пароль пользователя trt:********
trt=# DROP ROLE xre;
DROP ROLE
Можете проверить свои действия самостоятельно, с помощью клиента psql с ключом \du.
ALTER ROLE.
Команда ALTER ROLE изменяет атрибуты и название роли в PgSQL.
Для примера создадим пользователя xre и проведём с его записью несколько манипуляций.
[trt@sl ~]$ createuser -h 10.0.2.11 -i -e xre
Пароль: **********
SELECT pg_catalog.set_config('search_path', '', false);
CREATE ROLE xre NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;
Сделаем удалённый вход на сервер.
[trt@sl ~]$ psql -h 10.0.2.11 -U trt
Пароль пользователя trt:*********
Меняем пароль роли.
trt=# ALTER ROLE trt WITH PASSWORD 'hu6h44e';
ALTER ROLE
Удаляем пароль у роли.
trt=# ALTER ROLE xre WITH PASSWORD NULL;
ALTER ROLE
Добавляем права роли xre для управление другими ролями и созданием новых баз и проверяем свои действия.
trt=# ALTER ROLE xre CREATEROLE CREATEDB;
ALTER ROLE
trt=# \du
Список ролей
Имя роли | Атрибуты | Член ролей
---------+------------------------------------------------
xre | Создаёт роли, Создаёт БД | {}
В заключение, самостоятельно, удалим роль xre, используя команду DROP ROLE.
Добавление роли в группу.
Нам остаётся рассмотреть вопрос, участия одной роли членом другой. По аналогии с OC Windows, Linux, где есть группы, в PgSQL так же можно работать с групповыми политиками называемыми ролями для групп.
Что бы не плодить сущности и каждый раз, при создании пользователя БД, устанавливать права, проще иметь готовые роли с нужными правами и добавлять туда вновь созданных пользователей.
Для выполнения этих задач существуют команды GRANT и REVOKE
Команда GRANT.
Команда GRANT добавляет одни роли членами других и назначает права, для доступа к объектам баз данных.
Создадим пользователя xre и проконтролируем свои действия.
psql -h 192.168.100.11 -U trt
Пароль пользователя trt:*********
trt=# CREATE ROLE xre;
CREATE ROLE
trt=# \du
Список ролей
Имя роли | Атрибуты | Член ролей
---------+---------------------------------------------+------------
trt | Суперпользователь, Создаёт роли, Создаёт БД | {}
xre | Вход запрещён | {}
Добавим роль LOGIN для xre и сделаем его членом группы trt роли.
...
trt=# ALTER ROLE xre LOGIN;
ALTER ROLE
trt=# \du
Список ролей
Имя роли | Атрибуты | Член ролей
---------+---------------------------------------------+------------
trt | Суперпользователь, Создаёт роли, Создаёт БД | {}
xre | | {}
trt=# GRANT trt TO xre;
GRANT ROLE
trt=# \du
Список ролей
Имя роли | Атрибуты | Член ролей
---------+---------------------------------------------+------------
trt | Суперпользователь, Создаёт роли, Создаёт БД | {}
xre | | {trt}
Обратите внимание на столбец «Член ролей» пользователя xre.
Команда REVOKE.
Команда REVOKE удаляет из роли права, назначенных ранее.
...
trt=# REVOKE trt FROM xre;
trt=# \du
Список ролей
Имя роли | Атрибуты | Член ролей
---------+---------------------------------------------+------------
trt | Суперпользователь, Создаёт роли, Создаёт БД | {}
xre | | {}
Столбец «Член ролей» пользователя xre изменился.
Заключение.
Эта статья заканчивает курс коротких лекций для начинающих, которые хотят получить общие сведения и начальную практику по установке и управлению PostgreSQL. Позже, вероятно, добавится ещё одна статья, PostgreSQL Linux часть 6, в которой будет рассказано, как создавать базы, таблицы и SQL запросы.