Перейти к основному содержимому

Дружественные напоминания

В рамках курса и за его пределами вы не раз столкнетесь с необходимостью редактировать конфигурационные файлы. В данном вводном разделе мы собрали несколько сценариев в виде шпаргалок, которые помогут вам разобраться с настройками СУБД 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, давайте предварительно настроим локальное соединение по паролю с целью обеспечения приближенных к реальным требованиям по безопасности.

  1. В сеансе пользователя ОС postgres запустите psql:

    $ sudo su - postgres
    $ psql
  2. Задайте пароль:

    postgres@postgres=# ALTER USER postgres WITH PASSWORD 'new_password';
  3. Отредактируйте конфигурационный файл postgresql.conf:

    # Allowed authentification methods for others
    enabled_extra_auth_methods = 'scram-sha-256, cert'
  4. Скорректируйте настройки локального подключения в конфигурационном файле pg_hba.conf:

    # "local" is for Unix domain socket connections only
    local all all scram-sha-256
  5. Перезапустите сервер и войдите в psql. Убедитесь, что запрашивается пароль.

Подведем итоги​

Вопрос 1

Я всегда смогу вернуться к этим шпаргалкам при работе с конфигурационными файлами!