Дружественные напоминания
В рамках курса и за его пределами вы не раз столкнетесь с необходимостью редактировать конфигурационные файлы. В данном вводном разделе мы собрали несколько сценариев в виде шпаргалок, которые помогут вам разобраться с настройками СУБД Pangolin и особенностями их применения.
Шпаргалка 1: Приглашение
Приглашение операционной системы в консоли при работе с psql может быть отличным помощником, если первое время вы путаетесь в именах, пользователях, названиях баз данных и именах серверов.
Если вы сомневаетесь, просто вспомните, что приглашение состоит из двух частей: пользователь@имя сервера.
В рамках курса в качестве имени сервера для простоты мы будем использовать ServerName, для этого в конфигурационном файле etc/hosts укажем соответствие адреса нашей виртуальной машины имени узла:
[UserName@ServerName ~]$ sudo vi /etc/hosts
# Loopback entries; do not change.
# For historical reasons, localhost precedes localhost.localdomain:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
# See hosts(5) for proper format and other examples:
<IP-Address> ServerName
Шпаргалка 2: Настройка подключения в pg_hba.conf
Аутентификация клиентов управляется конфигурационным файлом pg_hba.conf, по умолчанию расположенном в $PGDATA. Файл представляет собой набор однострочных записей, отражающих тип соединений, IP-адреса и тип аутентификации. В рамках курса вы будете работать с:
Типами соединений:
local- локальное (на текущей машине) подключениями через Unix-сокетыhost- сетевое подключение, устанавливаемыми по TCP/IP
Методами аутентификации:
trust- Разрешается подключение без пароляscram-sha-256- для аутентификации требуется пароль
Другие значения обоих параметров могут встречаться редко и в таких случаях будут отдельные пояснения.
Для применения обновленных настроек подключений требуется перезагрузка сервера (команда sudo systemctl restart postgresql).
Шпаргалка 3: Изменяем настройки в postgresql.conf
При рассмотрении функциональностей в разных модулях курса вы часто будете включать и отключать функциональности. Для этого нужно уметь изменять значения параметров в конфигурационном файле $PGDATA/postgresql.conf:
[postgres@ServerName ~]$ vi $PGDATA/postgresql.conf
При изменении некоторых из настроек требуется перезапуск сервера. Перезапуска сервера требуют все параметры в контексте postmaster. Если вы сомневаетесь между перезагрузкой (reload) или перезапуском (restart), то можно выполнить команду:
<пользователь>@<имя сервера>=# SELECT name,context FROM pg_settings WHERE name='password_policies_enable';
name | context
--------------------------+------------
password_policies_enable | postmaster
(1 row)
где name - имя параметра, который вы поменяли.
Если значение поля context=postmaster, то необходим перезапуск сервера.
В рамках прохождения курса вы будете обращаться к системным логам, для простоты рекомендуем настроить параметры логирования в postgresql.conf следующим образом:
logging_collector = on
log_directory = '/pgerrorlogs/06/'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
Шпаргалка 4: Пользователь и роль
В Pangolin, аналогично PostgreSQL, понятия пользователя и роли являются синонимами. Таким образом, команды CREATE USER и CREATE ROLE аналогичны друг другу.
Единственное отличие – это необходимость при использовании команды CREATE ROLE в явном виде включать возможность подключения к IP-адресу, прописанному в pg_hba.conf, при помощи команды login:
postgres@postgres=# CREATE ROLE test_user WITH ENCRYPTED PASSWORD '123';
CREATE ROLE
postgres@postgres=# ALTER ROLE test_user LOGIN;
ALTER ROLE
Шпаргалка 5: Настройка локального соединения по паролю
Так как данный модуль посвящен механизмам безопасности в Pangolin, давайте предварительно настроим локальное соединение по паролю с целью обеспечения приближенных к реальным требованиям по безопасности.
-
В сеансе пользователя ОС
postgresзапуститеpsql:$ sudo su - postgres$ psql -
Задайте пароль:
postgres@postgres=# ALTER USER postgres WITH PASSWORD 'new_password'; -
Отредактируйте конфигурационный файл
postgresql.conf:# Allowed authentification methods for othersenabled_extra_auth_methods = 'scram-sha-256, cert' -
Скорректируйте настройки локального подключения в конфигурационном файле
pg_hba.conf:# "local" is for Unix domain socket connections onlylocal all all scram-sha-256 -
Перезапустите сервер и войдите в psql. Убедитесь, что запрашивается пароль.