Задание 2: Особенности маскирования
В заключительном разделе данного модуля мы коснемся особенностей механизма маскирования, знание о которых может вам пригодиться в работе.
Маскирование параметров функций, использующих конфиденциальную информацию
Примеры функций, принимающих на вход конфиденциальную информацию:
pm_create_security_admin()pm_set_security_admin_password()add_auth_record_to_storage()
Маскирование параметров при вызовах таких функций осуществляется только при значении параметра masking_mode = full.
Давайте рассмотрим примеры отображения информации о вызовах таких функций в журнале сообщений.
-
Установите режим
masking_mode = fullв конфигурационном файлеkms_dynamic_params.cfg:[UserName@ServerName ~]$ sudo su - kmadmin_pg[kmadmin_pg@ServerName ~]$ vi /etc/pangolin-security-utilities/kms_dynamic_params.cfg -
Перезапустите сервер, чтобы настройки применились:
[UserName@ServerName ~]$ sudo systemctl restart postgresql -
Добавьте параметры в хранилище паролей с помощью функции
add_auth_record_to_storage:postgres@postgres=# SELECT add_auth_record_to_storage('127.0.0.1', 5433, 'First_db', 'user7654', '<password>');┌────────────────────────────┐│ add_auth_record_to_storage │├────────────────────────────┤│ │└────────────────────────────┘(1 row)Изучите журнал сообщений:
2023-03-02 05:50:53 MSK [15827]: [5-1] app=psql,user=postgres,db=postgres,client=<IP-Address>,type=client backend STATEMENT: SELECT add_auth_record_to_storage(***, ***, ***, ***, ***); -
Используя функцию
pm_create_security_adminсоздайте еще одного администратора безопасности (должна быть включена защита от привилегированных пользователей):[postgres@ServerName ~]$ psql -U sec_admin -h 127.0.0.1 -d postgresPassword for user sec_admin:Pager is used for long output.Border style is 2.Line style is unicode.psql (15.5)SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)Type "help" for help.sec_admin@postgres=# SELECT pm_create_security_admin('sec_test1','<password>');pm_create_security_admin---------------------------------------------------------------------------------------------------------------------------------------SCRAM-SHA-256$4096:Hev4aNTCQ3ur...........(1 row)Журнал сообщений:
2022-11-18 13:23:23 MSK [18926]: [52-1] app=psql,user=sec_admin,db=postgres,client=<IP-Address>,type=client backend LOG: AUDIT: SESSION,14,1,READ,SELECT,,,"SELECT pm_create_security_admin('sec_test1','***');",<not logged>2022-11-18 13:23:23 MSK [18926]: [53-1] app=psql,user=sec_admin,db=postgres,client=<IP-Address>,type=client backend LOG: AUDIT: SESSION,14,2,PROTECTION,EXECUTE,FUNCTION,pg_catalog.pm_create_security_admin,"SELECT pm_create_security_admin('sec_test1','***');",<not logged>
Создание пользователя
С использованием CREATE ROLE/USER в запросе создайте пользователя:
postgres@postgres=# CREATE USER user_test WITH ENCRYPTED PASSWORD '<password>';
CREATE
postgres@postgres=# ALTER USER user_test WITH ENCRYPTED PASSWORD '<password>';
ALTER
Журнал сообщений:
2023-03-02 17:50:58 MSK [30388]: [4-1] app=psql,user=postgres,db=postgres,client=<IP-Address>,type=client backend LOG: AUDIT: SESSION,1,1,ROLE,CREATE ROLE,,,CREATE USER user_test WITH ENCRYPTED PASSWORD ***;,<not logged>
2023-03-02 17:51:32 MSK [30388]: [5-1] app=psql,user=postgres,db=postgres,client=<IP-Address>,type=client backend LOG: AUDIT: SESSION,2,1,ROLE,ALTER ROLE,,,ALTER USER user_test WITH ENCRYPTED PASSWORD ***;,<not logged>
В случае создания пользователя с уже существующим именем, будет выдана ошибка, но в логе пароль также будет замаскирован:
postgres@postgres=# CREATE USER user_test WITH ENCRYPTED PASSWORD '<password>';
ERROR: role "user_test" already exists
Журнал сообщений:
2023-03-02 17:53:37 MSK [30388]: [6-1] app=psql,user=postgres,db=postgres,client=<IP-Address>,type=client backend ERROR: role "user_test" already exists
2023-03-02 17:53:37 MSK [30388]: [7-1] app=psql,user=postgres,db=postgres,client=<IP-Address>,type=client backend STATEMENT: CREATE USER user_test WITH ENCRYPTED PASSWORD ***;
Маскирование запросов в файлах ASH
ASH (Active Session History) - файлы, в которых ведется история активных сессий (выполняющиеся в центральном процессоре или не находящиеся в режиме ожидания). С помощью них можно определить состояние БД или сервера в разные моменты времени, а на основе диагностики спрогнозировать, как изменится нагрузка в будущем и по каким причинам.
Сохранение текста запросов в такие ASH-файлы ASH регулируется собственными параметрами: performance insight и performance_insights.masking.
При этом, если значение параметра masking_mode = full, то маскирование будет выполняться независимо от значения параметра performance_insights.masking. Это связано с тем, что ASH пользуется текстами запросов, помещенных в представление pg_stat_activity, и при включенном маскировании тексты запросов в представлении находятся в уже замаскированном виде.
Завершение
В рамках курса DBP1 вы познакомитесь со средствами безопасности, доступными в СУБД Pangolin. К ним относятся:
- парольные политики
- журналирование и аудит
- обфускация
- контроль загрузки модулей
- защита от привилегированных пользователей
- маскирование
Мы надеемся, что погружение в функциональности Pangolin было увлекательным и вы продолжите знакомиться с нашей СУБД.
До новых встреч!