Часто встречающиеся проблемы и пути их устранения
Истечение срока действия пароля учетной записи kmadmin_pg
Пользователь не может успешно подключиться к хосту с использованием учетной записи kmadmin_pg при локальном подключении, даже если вводится правильный пароль. Возникает ошибка:
$ su - kmadmin_pg
Пароль:
Срок действия учетной записи истек, обратитесь к системному администратору
su: Сбой при проверке подлинности
При просмотре параметров пароля пользователя kmadmin_pg видно, что пароль имеет ограничения срока действия, что в итоге может приводить к блокировке пользователя:
$ sudo chage -l kmadmin_pg
Last password change : Aug 01, 2023
Password expires : Sep 10, 2023
Password inactive : Dec 09, 2023
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 40
Number of days of warning before password expires : 7
Решение:
После установки снимите ограничения срока действия пароля для созданного пользователя, выполнив команду:
$ sudo chage -E -1 -I -1 -M -1 -m -1 -W -1 kmadmin_pg
$ sudo chage -l kmadmin_pg
Last password change : Nov 09, 2023
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : -1
Maximum number of days between password change : -1
Number of days of warning before password expires : -1
Ошибки аутентификации пользователя patroni при восстановлении кластера
Во время системного обслуживания кластера Pangolin и выполнения административных задач, связанных с хранилищем паролей, возникают следующие ошибки в журнале postgresql:
FATAL: password authentication failed for user "patroni"
password retrieved from file "(null)"
2022-12-15 21:19:15,869 ERROR: Error when fetching backup: pg_basebackup exited with code=1
2022-12-15 21:19:15,870 ERROR: failed to bootstrap from leader '<address>'
2022-12-15 21:19:15,870 INFO: Removing data directory: /pgdata/04/data/
2022-12-15 21:19:20,679 INFO: Lock owner: <address>; I am pdled-
2022-12-15 21:19:20,764 INFO: trying to bootstrap from leader '<address>'
pg_basebackup: FATAL: password authentication failed for user "patroni"
password retrieved from file "(null)"
FATAL: password authentication failed for user "patroni"
password retrieved from file "(null)"
2022-12-15 21:19:20,811 ERROR: Error when fetching backup: pg_basebackup exited with code=1
2022-12-15 21:19:20,812 WARNING: Trying again in 5 seconds
pg_basebackup: FATAL: password authentication failed for user "patroni"
password retrieved from file "(null)"
FATAL: password authentication failed for user "patroni"
password retrieved from file "(null)"
Ключевой момент данного сценария заключается в том, что параметр password_encryption был установлен в значение md5, а не scram-sha-256. Во время системных работ конфигурационные настройки кластера были приведены к следующему виду:
-
Параметр
password_encryptionустановлен в значениеmd5. -
Содержимое файла
pg_hba.confвыглядит следующим образом:hostssl all postgres 127.0.0.1/32 cert
hostssl all postgres 'master_ip' cert
hostssl all postgres 'replica_ip' cert
hostssl replication postgres 127.0.0.1/32 cert
hostssl replication postgres 'master_ip' cert
hostssl replication postgres 'replica_ip' cert
hostssl all +as_TUZ 0.0.0.0/0 md5 clientcert=1
host all DB_MONITOR 0.0.0.0/0 md5
host all +all-sa-pam-group 0.0.0.0/0 ldap ldapserver=<ldapserver_name> ldapport=<ldapport> ldapprefix="cn=" ldapsuffix="<@ldapsuffix>"
host all zabbix_oasubd,pgbouncer,monitoring_php,auditor 0.0.0.0/0 md5
host all +as_admin, +as_admin_read 0.0.0.0/0 ldap ldapserver="<ldapserver_name>" ldapsuffix="<@ldapsuffix>"
host all all <IP-Address> md5
host all all <IP-Address> md5
host all all <IP-Address> md5
host all all <IP-Address> md5
host all patroni 127.0.0.1/32 scram-sha-256
host all patroni 'master_ip' scram-sha-256
host all patroni 'replica_ip' scram-sha-256
host replication patroni 127.0.0.1/32 scram-sha-256
host replication patroni 'master_ip' scram-sha-256
host replication patroni 'replica_ip' scram-sha-256
host all cron, backup_user 0.0.0.0/0 scram-sha-256 -
Пароль пользователя
patroni, указанный вpostgres.yml, имеет значение формата**SCRAM-SHA-256$4096**:....
Решение:
Для корректного изменения пароля пользователя patroni необходимо выполнить следующие шаги:
- Измените пароль пользователя
patroniв базе данных. - Установите параметр
password_encryptionв значениеscram-sha-256. - Запишите новый пароль пользователя
patroniв хранилище паролей.
Если в файле pg_hba.conf метод аутентификации установлен в md5, но пользователь предоставляет пароль в формате scram-sha-256, то подключение будет использовано методом scram-sha-256. Это сделано для облегчения перехода с md5 на scram-sha-256.
Ошибка загрузки плагина засекречивания (Load encryption plugin failed)
При запуске утилиты pangolin-auth-reencrypt возникает ошибка загрузки плагина засекречивания: Load encryption plugin failed.
Решение:
Укажите явно путь к /usr/pangolin-dbms/lib или /opt/pangolin-manager/lib в случае отсутствуя СУБД (к примеру узел арбитра), установив переменную окружения PG_PLUGINS_PATH перед запуском, например:
-
для системных unit-файлов:
PG_PLUGINS_PATH=/usr/pangolin-dbms/lib /opt/pangolin-auth-reencrypt/bin/pangolin-auth-reencrypt -l3 -d -L /opt/pangolin-auth-reencrypt/log -n test.log -p /var/run/pangolin-auth-reencrypt/postgres.pid -
для пользовательских unit-файлов:
PG_PLUGINS_PATH=/usr/pangolin-dbms/lib /opt/pangolin-auth-reencrypt/bin/pangolin-auth-reencrypt -l3 -d -L /opt/pangolin-auth-reencrypt/log -n test.log -p /var/run/user/%U/pangolin-auth-reencrypt/postgres.pidГде
%U— идентификатор пользователя.
Ошибка определения схемы при создании расширения
При установке расширения без указания схемы, возникает следующая ошибка:
ERROR: no schema has been selected to create in
Это связано с пустым значением search_path.
Решение:
При установке укажите явно схему, в которую требуется установить расширения. Пример команды:
CREATE EXTENSION <ext_name> SCHEMA ext;
Либо укажите значение для search_path:
-
Проверьте, что текущее значение для
search_pathне указано:SHOW search_path; -
Укажите новое значение для
search_path:SET search_path TO <schema_name>; -
Установите расширение:
CREATE EXTENSION <ext_name>;
Новое значение для search_path будет считаться значением по умолчанию.
Ошибка «Storage error» при использовании утилиты setup_kms_credentials
При обращении к хранилищу секретов или сертификатов с указанием корневого сертификата для проверки сервера может возникнуть ошибка. Ошибка проявляется на этапе чтения параметров подключения:
setup_kms_credentials show
Ошибка вида:
Storage error
С флагом –debug выводятся детали ошибки:
CURL request failed. Error: error:0200100D:system library:fopen:Permission denied. Error: HTTP server error
Решение:
Если параметры, переданные утилите, указаны корректно, возможна проблема с сертификатами. Необходимо проверить следующее:
-
Добавлен ли сертификат
root_caв хранилище доверенных сертификатов ОС. -
Если сертификат не должен добавляться в хранилище доверенных сертификатов, убедитесь в наличии корректных прав доступа. Пример верно установленных прав для
root_ca:-rw-r----- 1 postgres pangolin_users ... root_ca.crtГде права доступа соответствуют
640, владелецpostgres, группаpangolin_users.
Ошибка доступа к KMS credentials при старте/рестарте БД
При запуске или перезапуске СУБД Pangolin в журнале postgresql могут появляться следующие сообщения:
LOG: postgres: Could not get KMS credentials mod time. Error: -1 (common error)
FATAL: postgres: Could not get cluster ID. Error: -52 (failed to lock file)
Ошибка возникает при невозможности доступа к файлам конфигурации KMS.
Наиболее частые причины:
- пользователь ОС
postgresне входит в группуpangolin_users; - отсутствуют права доступа к каталогу
/etc/pangolin-security-utilities/; - отсутствуют или заданы некорректные права доступа к файлу
/etc/pangolin-security-utilities/enc_connection_settings.cfg.
Проверка подключения к KMS выполняется при наличии каталога /etc/pangolin-security-utilities/ при запуске СУБД Pangolin независимо от того, используются ли функции безопасности.
Решение:
- Проверьте группы пользователя
postgres:
id postgres
- При необходимости добавьте пользователя в группу:
sudo usermod -aG pangolin_users postgres
- Проверьте права доступа:
ls -ld /etc/pangolin-security-utilities/
ls -l /etc/pangolin-security-utilities/enc_connection_settings.cfg
Ошибка инициализации подключения к KMS при старте/рестарте БД
При запуске или перезапуске СУБД Pangolin в журнале postgresql могут появляться следующие сообщения:
WARNING: postgres: Could not init KMS connection. Error: -52 (failed to lock file)
WARNING: could not get parameter "secure_config" from KMS. Error: -47 (KMS connection plugin is not initialized)
Ошибка возникает при некорректной настройке плагина подключения к KMS.
Наиболее частые причины:
- отсутствует или неверно создана символическая ссылка на библиотеку плагина;
- библиотека плагина отсутствует или недоступна;
- некорректные права доступа к библиотеке.
Решение:
Проверьте наличие и корректность ссылки на библиотеку плагина KMS, а также права доступа к файлам плагина.
Ошибка «file is not found» при запуске утилиты setup_kms_credentials
При запуске утилиты setup_kms_credentials может возникать следующая ошибка:
$ /opt/pangolin-security-utilities/bin/setup_kms_credentials
Error: file is not found
Сообщение об ошибке не содержит указания на конкретный файл, поэтому пользователю может быть неочевидно, с каким файлом связана проблема.
Ошибка возникает при невозможности доступа к файлу лицензии, используемому утилитой для работы с KMS.
Наиболее частая причина – некорректные права доступа к файлу лицензии.
Решение:
Проверьте права доступа к файлу лицензии и убедитесь, что пользователь, от имени которого запускается утилита, имеет права на его чтение.
При необходимости скорректируйте права доступа к файлу лицензии.