Задание 2: Защитное преобразование и хранение параметров подключения
Для исключения хранения паролей в открытом виде и предотвращения компрометации паролей в СУБД Pangolin подготовлен набор утилит, позволяющих преобразовывать пароли и хранить их в закодированном виде:
- pg_auth_config — утилита защитного преобразования/хранения параметров подключения к БД.
- pg_auth_password — утилита защитного преобразования паролей. Позволяет получить пароль в защищенном виде после ввода исходного пароля.
- pangolin-auth-reencrypt – утилита перекодирования паролей, которая используется для восстановления работоспособности узла кластера при смене параметров сервера.
Утилиты pg_auth_config и pg_auth_password располагаются в каталоге $PGHOME/bin и доступны только владельцу (postgres).
Защитное преобразование параметров подключения к базе
Утилита pg_auth_config формирует защищенное хранилище, которое хранится в файле /etc/postgres/enc_utils_auth_settings.cfg. Ключи, используемые при кодировании, уникальны в рамках узла. Они не хранятся, а вычисляются в процессе. Также возможно добавление нескольких записей одной командой через разделитель ,.
В качестве ключа защитного преобразования используется фраза, конструируемая из параметров:
- парольная фраза –
CPU manufacturer ID CPU,CPU stepping,CPU model,CPU family,CPU feature flags, список MAC и IP-адресов постоянных сетевых интерфейсов; - соль – тип
credentials,machineIdиз/etc/machine-id,UUIDкорневой файловой системы, домен для использованияcredentials(сейчасPOSTGRESQL- для защитного преобразования конфигурационных файлов компонент отказоустойчивого кластера илиKMS- для защитного преобразования параметров доступа к KMS).
Алгоритм определяется сконфигурированным плагином защитного преобразования (по умолчанию AES-256). Хранилище может быть декодировано только на узле, где было создано. Оно автоматически формируется на этапе установки дистрибутива СУБД Pangolin.
Защитное преобразование паролей (pg_auth_password и pg_auth_reencrypt)
Утилита pg_auth_password выполняет защитное преобразование паролей и исключает хранение паролей в открытом виде, предотвращая компрометацию паролей.
На вход утилита pg_auth_password принимает пароль, результат выполнения выводится в консоль. Закодированный пароль используется в конфигурационных файлах.
Формат закодированного пароля:
$enc$<encrypted_password_in_base64>
- $enc$ — признак закодированного пароля;
- <encrypted_password_in_base64> — закодированный пароль в формате base64.
Запуск утилиты pg_auth_passwordс опцией --help отображает параметры использования:
$ /opt/pangolin-auth-password/bin/pg_auth_password --help
Утилита 'pg_auth_password' предназначена для защиты пароля.
Использование:
pg_auth_password enc -t [ОПЦИИ]
Опции:
-s или enc -t --skip-confirm ручной ввод без подтверждения
-W <пароль> или enc -t --password <пароль> пароль вводится в качестве аргумента
Другие опции:
-V или --version вывод информации о версии, затем выход
-h или --help вывод справки, затем выход
Информация о версии продукта Pangolin:
--product_version выводит название и версию продукта
--product_build_info выводит номер, дату и хеш сборки продукта
--product_component_hash выводит хеш-строку компонента
В состав Pangolin также включена утилита pangolin-auth-reencrypt, которая используется для восстановления работоспособности узла кластера при смене параметров сервера.
После автоматизированной установки Pangolin утилита доступна в каталоге /opt/pangolin-auth-reencrypt/bin/pangolin-auth-reencrypt.
Утилита запускается в двух режимах:
- автоматический — запуск настраивается при установке Pangolin;
- ручной — вызов бинарного файла утилиты с указанием требуемых параметров и предварительной настройкой утилиты.