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

Задание 1: Настройка и управление маскированием

Примечание

Если вы проходите модули DBP1, посвященные разным функциональностям, не последовательно, рекомендуем все же перед прохождением данной лабораторной обратиться к вступительному модулю второго уровня в теме DBP1 Парольные политики. Часто конкретные действия могут быть выполнены только одной конкретной ролью, поэтому будьте внимательны и перепроверяйте, под каким пользователем вы выполняете те или иные команды.

Внимание!

Данный модуль ориентирован на студентов, прошедших модуль защиты от привилегированных пользователей. Конфигурирование параметров маскирования будет производиться с учетом наличия настроенного KMS. Полный список настроечных параметров, управляемых администраторами безопасности через хранилище секретов (KMS) можно посмотреть в документации.

Если вы не настраивали KMS, все параметры, которые будут встречаться в модуле, настраиваются в конфигурационном файле $PGDATA/postgresql.conf пользователем postgres.

Маскирование запросов настраивается конфигурационным параметром masking_mode (тип enum), который может принимать три значения: full, disabled и off.

disabled
Значение по умолчанию

Маскирование только паролей и параметров функций, принимающих пароли

full

Механизм маскирует параметры по всем обрабатываемым запросам SELECT/INSERT/UPDATE/DELETE, CREATE/ALTER ROLE/USER, а также паролю в их составе

off

Полное отключение механизма маскирования

Для применения настройки параметра masking_mode требуется перезагрузка сервера.

Практика​

  1. Установите значение параметра log_statement в конфигурационном файле postgresql.conf в значение all:

    [postgres@ServerName ~]$ vi $PGDATA/postgresql.conf
    log_statement = 'all' # none, ddl, mod, all
  2. Перезапустите сервер:

    [UserName@ServerName ~]$ sudo systemctl restart postgresql
  3. Убедитесь, что журналирование и маскирование включены:

    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 - это значение по умолчанию для маскирования.

  4. Создайте пользователя с паролем:

    postgres@postgres=# CREATE ROLE alex PASSWORD '<secure_password>';
    CREATE ROLE
  5. Обратитесь к логу и посмотрите, как отображается заданный вами пароль:

    [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 пароли всегда маскируются.

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

Вопрос 1

Отметьте все примеры маскирования данных:

Вопрос 2

Выберите верные утверждения: