Как установить PostgreSQL Linux часть 4.

Введение.

Изучая основы работы сервера PostgreSQL, переходим к рассмотрению вопросов обеспечения безопасности пользователей использующих БД PgSQL. В статье PostgreSQL Linux часть 4, мы будем рассматривать такие важные понятия как пользователи и роли.

Основу защиты учётных записей пользователей PgSQL формируют пользовательские роли и пароли.

Все статьи посвящённые PostgreSQL см.

тэг БД или поиск postgres

Подготовка PostgreSQL Linux часть 4.

  • Стенд
    • Cервер ALT Linux, имя: lin-pq; IP 10.0.2.11;
      • PostgreSQL X.X
        • метод аутентификации md5
    • Simply Linux, имя: lin-sl, IP=10.0.2.30
    • Пользователь, имя: trt

Роль — это пользователь СУБД или, если пользоваться терминологией ОС Linux, Windows — группа. Роли не связаны с именами пользователей ОС. Роли являются общими объектами для PgSQL, могут подключаться к разным базам и быть владельцами объектов для различных БД.

Команды управления ролями PostgreSQL Linux часть 4.

  • Список основных команд для управления ролями:
    • CREATE ROLE — вызывается из psql
    • DROP ROLE — вызывается из psql
    • ALTER ROLE — вызывается из psql
    • createuser — вызываются из командной строки ОС
    • dopuser — вызываются из командной строки ОС

CREATE ROLE.

  • CREATE ROLE — создать роль в базе данных
    • CREATE ROLE имя [ [WITH] параметр [ …] ]
      • параметр
        • LOGIN вход на сервер
        • NOLOGIN
        • SUPERUSER суперпользователь
        • NOSUPERUSER
        • CREATEDB создавать базы данных
        • NOCREATEDB
        • CREATEROLE создавать, изменять, удалять роли
        • NOCREATEROLE
        • REPLICATION выполнять репликации
        • NOREPLICATION
        • и другие…

Параметры (атрибуты) имеют два варианта, пример, CREATEDB (дает право на создание БД) и NOCREATEDB (не дает такого права), по умолчанию выбирается ограничивающий вариант.

DROP ROLE.

  • DROP ROLE — удалить роль в базе данных
    • DROP ROLE [ IF EXISTS ] имя [, …]
      • IF EXISTS — не считать ошибкой, если роль не существует

ALTER ROLE.

  • ALTER ROLE — изменяет атрибуты роли
  • ALTER ROLE имя [ [WITH] параметр [ …] ]
    • параметр
      • SUPERUSER суперпользователь
      • NOSUPERUSER
      • CREATEDB создавать базы данных
      • NOCREATEDB
      • CREATEROLE создавать, изменять и удалять другие роли
      • NOCREATEROLE
      • INHERIT наследовать права ролей
      • NOINHERIT
      • LOGIN вход на сервер
      • NOLOGIN
      • REPLICATION режим репликации
      • NOREPLICATION
      • BYPASSRLS — игнорировать все политики защиты на уровне строк
      • NOBYPASSRLS
      • CONNECTION LIMIT сколько параллельных подключений установить
      • [ ENCRYPTED ] PASSWORD ‘парользадаёт пароль роли
      • PASSWORD NULL пароль не задан
      • VALID UNTIL ‘дата_времяустанавливает дату и время, после которого пароль роли перестаёт действовать

createuser.

  • createuser — создать новую учётную запись PostgreSQL
    • createuser [параметр…] [имя_пользователя]
      • параметр
        • -c номер количество соединений
        • -d может создавать базы данных
        • -D не может создавать базы данных
        • -g role роль, к которой будет добавлена текущая роль
        • -i наследовать права ролей
        • -I не наследовать права ролей
        • -l может подключаться к серверу
        • -L не может подключаться к серверу
        • -r может создавать, изменять и удалять роли
        • -R не может создавать, изменять и удалять роли
        • -s имеет права суперпользователя
        • -S не имеет права суперпользователя
        • —interactive диалоговый режим для параметров
        • и другие…

createuser — та же функциональность, что и команда CREATE ROLE

dropuser.

  • dropuser — удалить учётную запись пользователя PostgreSQL
    • dropuser [параметр…] [имя_пользователя]
      • параметр
        • -i диалоговый режим
        • -e журнал выполнения команд

dopuser — та же функциональность, что и команда DROP ROLE

Управление ролями PostgreSQL Linux часть 4.

Перейдём к практическим действиям использования ролей. Для начала посмотрим; какие роли, пользователи и БД существуют после установки и первичной настройки PgSQL.

Для сокращения фрагментации кода, строки

$ sudo su - postgres -s /bin/bash
-bash-4.4$ psql
будут в дальнейшем опущены, мы внутри клиента psql
$ postgres=# \l Список баз данных Имя | Владелец | Кодировка | LC_COLLATE | LC_CTYPE | Права доступа -----------+----------+-----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | template0 | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres postgres=# \du Имя роли | Атрибуты, Список ролей | Член ролей ----------+-------------------------------------------------------------------------+------------ postgres | Суперпользователь, Создаёт роли, Создаёт БД, Репликация, Пропускать RLS | {}

Создадим новую базу данных.

postgres=# CREATE DATABASE trest;

Введём в нашу БД новую роль (пользователя)

postgres=# CREATE ROLE trt LOGIN CREATEROLE;

Установим пароль для пользователя trt.

postgres=# \password trt
Введите новый пароль для пользователя "trt":********** 
Повторите его:**********

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

$ psql -U trt
Пароль пользователя trt: 
...
trt=> 

Используя ключ du смотрим обновлённый список ролей.

$ postgres=# \du

Пользователь trt не обладает привилегированной ролью, мы вынужденны, для управления PostgreSQL, постоянно обращаться к записи postgres. Это неправильно, тем более, что консольные команды из OC, createuser и dropuser для postgres не доступны — у postgres нет регистрации в OC и это хорошо. Узко — целевое значение пользователя postgres, один из элементов безопасности БД. Запись Postgres владеет только теми данными, которыми управляет сервер БД.

Рекомендуется не назначать пользователя postgres владельцем исполняемых файлов PgSQL, чтобы их нельзя было подменить в случае компрометации серверного процесса.

Добавление административной роли.

Сейчас пользователь trt может только создавать роли, мы добавим ему некоторые привилегированные права, что бы разгрузить запись postgres и сделать управление PqSQL более гибким.

postgres=# ALTER ROLE trt SUPERUSER CREATEDB CREATEROLE; ALTER ROLE postgres=# \du Список ролей Имя роли | Атрибуты | Член ролей ----------+-------------------------------------------------------------------------+------------ postgres | Суперпользователь, Создаёт роли, Создаёт БД, Репликация, Пропускать RLS | {} trt | Суперпользователь, Создаёт роли, Создаёт БД | {}

Теперь trt имеет привилегии администратора и может выполнять управление другими пользовательскими ролями и записями.

Заключение.

Тема управления ролями PostgreSQL широка и требует более глубокого рассмотрения.

Продолжение смотри в пятой части.

Полезные ссылки.

Добавить комментарий

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

Copyright © 2011-2024
Все права защищены.
При перепечатке указать источник: kabtim.ru
Контакты