Задание 1: Настройка и управление маскированием
Если вы проходите модули DBP1, посвященные разным функциональностям, не последовательно, рекомендуем все же перед прохождением данной лабораторной обратиться к вступительному модулю второго уровня в теме DBP1 Парольные политики. Часто конкретные действия могут быть выполнены только одной конкретной ролью, поэтому будьте внимательны и перепроверяйте, под каким пользователем вы выполняете те или иные команды.
Данный модуль ориентирован на студентов, прошедших модуль защиты от привилегированных пользователей. Конфигурирование параметров маскирования будет производиться с учетом наличия настроенного KMS. Полный список настроечных параметров, управляемых администраторами безопасности через хранилище секретов (KMS) можно посмотреть в документации.
Если вы не настраивали KMS, все параметры, которые будут встречаться в модуле, настраиваются в конфигурационном файле $PGDATA/postgresql.conf пользователем postgres.
Маскирование запросов настраивается конфигурационным параметром masking_mode (тип enum), который может принимать три значения: full, disabled и off.
| Маскирование только паролей и параметров функций, принимающих пароли |
| Механизм маскирует параметры по всем обрабатываемым запросам |
| Полное отключение механизма маскирования |
Для применения настройки параметра masking_mode требуется перезагрузка сервера.
Практика
-
Установите значение параметра
log_statementв конфигурационном файлеpostgresql.confв значениеall:[postgres@ServerName ~]$ vi $PGDATA/postgresql.conflog_statement = 'all' # none, ddl, mod, all -
Перезапустите сервер:
[UserName@ServerName ~]$ sudo systemctl restart postgresql -
Убедитесь, что журналирование и маскирование включены:
postgres@postgres=# SELECT name,setting FROM pg_settings WHERE name IN ('masking_mode','log_statement');┌───────────────┬──────────┐│ name │ setting │├───────────────┼──────────┤│ log_statement │ all ││ masking_mode │ disabled │└───────────────┴──────────┘(2 rows)Напомним, что
disabled- это значение по умолчанию для маскирования. -
Создайте пользователя с паролем:
postgres@postgres=# CREATE ROLE alex PASSWORD '<secure_password>';CREATE ROLE -
Обратитесь к логу и посмотрите, как отображается заданный вами пароль:
[postgres@ServerName ~]$ cd /pgerrorlogs/06/[postgres@ServerName 06]$ less postgresql-2025-09-10_130613.log...2025-09-10 13:14:07.846 MSK [2832] LOG: statement: select name,setting from pg_settings where name='masking_mode';2025-09-10 13:14:35.218 MSK [2832] LOG: statement, masked: CREATE ROLE alex PASSWORD ***;...Пароль скрыт в записях журнала, так как в режиме
masking_mode = disabledпароли всегда маскируются.