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

Параметры безопасности

В данном разделе представленные параметры относящиеся к настройке функциональностей блока безопасности.

Параметры аудита

В данном подразделе представлены параметры настройки функциональности «журналирование и аудит».

Основной параметр (pgaudit.log)

Настраиваемый параметр конфигурации pgaudit.log указывает, какие классы операторов, событий, функций и команд будут регистрироваться при ведении журнала аудита сессии. Возможные значения:

  • READ: SELECTи COPY, если источник — отношение или запрос;
  • WRITE: INSERT, UPDATE, DELETE, TRUNCATE, и COPY, если цель — отношение;
  • FUNCTION: вызовы функций и блоки DO;
  • ROLE: операторы, связанные с ролями и привилегиями: GRANT, REVOKE, CREATE/ALTER/DROP ROLE;
  • DDL: все DDL, не входящие в класс ROLE;
  • MISC: прочие команды, включая DISCARD, FETCH, CHECKPOINT, VACUUM, SET;
  • MISC_SET: прочие команды SET, включая SET ROLE;
  • CONNECTION: события, связанные с подключением к серверу. Существуют 4 типа таких событий: OPEN, CLOSED, FAILED, CHANGE USER. Событие FAILED регистрируется в случае неудачной попытки аутентификации по паролю и независимо от значения pgaudit.log;
  • PROTECTION: функции настройки механизма защиты от привилегированных пользователей;
  • RECOVERY: события восстановления базы данных;
  • INTEGRITY: события нарушения целостности объектов контроля;
  • ACTION: события запуска/остановки базы данных с причиной остановки;
  • PARAMETER: события изменения конфигурации системы управления базами данных;
  • ALL: включить все вышеперечисленное.

Значение по умолчанию - ddl, role, connection, misc_set, protection.

Для применения измененного значения данного параметра необходимо перечитать конфигурацию. Для добавления новых классов событий необходимо включить параметр pgaudit.legal.

Можно включить несколько классов, перечислив их через запятую, или исключить определенные классы, поставив перед ними знак -. С примером можно ознакомиться в подразделе «Ведение журнала аудита сессии» раздела «Журналирование и аудит» документа «Руководство администратора».

Дополнительные параметры

Конфигурационные параметры аудита

Параметр

Описание

Тип

Значение

pgaudit.legal

Включение/отключение расширенных возможностей аудита: запись логов аудита в отдельный файл, регистрация дополнительных событий аудита, использование нового формата событий аудита.

Для активации указанных в таблице параметров аудита (и добавления в pgaudit.log новых классов событий) необходимо включить данный параметр (pgaudit.legal = on)

boolean

Параметр может быть установлен в значения on/off, применяется при перезапуске сервера.

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

pgaudit.log_syslog

Включение/отключение записи логов аудита в системный журнал при включенной записи в файл

boolean

По умолчанию - off

pgaudit.log_directory

Путь к каталогу для сохранения файлов аудита. Это может быть абсолютный путь или заданный относительно каталога данных ($PGDATA)

string

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

Файлы аудита будут созданы в каталоге $PGDATA/audit

pgaudit.log_filename

Используемый шаблон имен файлов для журналов событий

string

Шаблон может содержать спецпоследовательности, определяющие временную метку, которые начинаются со знака %.

Значение по умолчанию audit-%Y-%m-%d_%H%M%S.log

pgaudit.log_rotation_size

Максимальный размер файла CSV-журнала в килобайтах. При достижении установленного лимита для записи событий безопасности создается новый файл

integer

Если параметр равен 0, новый файл в зависимости от размера текущего создаваться не будет.

Значение по умолчанию 10240 (10 Мбайт)

pgaudit.log_rotation_age

Максимальное время жизни файла журнала в минутах. По истечении этого времени создается новый файл для записи событий безопасности

integer

Если параметр равен 0, создание новых файлов журналов по времени отключается.

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

pgaudit.log_truncate_on_rotation

Определяет, должны ли усекаться файлы журналов при переключении записи на уже существующий файл журнала.

Параметр учитывается только при ротации по времени. В остальных случаях запись всегда продолжается в конец файла

boolean

Если значение параметра off, запись продолжается в конец файла.

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

pgaudit.log_file_mode

Определяет права на файл аудита при создании и задается в восьмеричном виде

integer

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

pgaudit.log_recovery

Параметр включает или отключает обработку фатальных ошибок, которые могут возникнуть при работе с файлами аудита

boolean

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

pgaudit.log_catalog

Указывает, должно ли быть включено ведение журнала сессии в том случае, если все отношения в операторе находятся в pg_catalog. Отключение этого параметра уменьшит шум в журнале от таких инструментов, как psql и pgAdmin, которые часто обращаются к каталогу

boolean

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

pgaudit.log_client

Указывает, будут ли сообщения журнала видны клиентскому процессу, такому как psql. Этот параметр обычно следует оставить отключенным, но он может быть полезен для отладки или других целей

boolean

pgaudit.log_client активен только тогда, когда значение pgaudit.log_level задано.

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

pgaudit.log_level

Указывает уровень журналирования, который будет использоваться для записей журнала (смотрите «Уровни важности сообщений»). Обратите внимание, что значения ERROR, FATAL и PANIC не допускаются.

Этот параметр используется для регрессионного тестирования, а также может быть полезен конечным пользователям для тестирования или других целей

string

Значениеpgaudit.log_level используется только тогда, когда pgaudit.log_client включен;
в противном случае будет использоваться значение по умолчанию.

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

pgaudit.log_parameter

Указывает, что ведение журнала аудита должно включать параметры, переданные вместе с оператором. При наличии параметров они будут включены в формате CSV после текста оператора

boolean

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

pgaudit.log_relation

Указывает, должно ли ведение журнала аудита сессии создавать отдельную запись журнала для каждого отношения (TABLE, VIEW и другие), на которое ссылается оператор SELECT или DML. Это полезный прием для исчерпывающего ведения журнала без использования журнала аудита объектов

boolean

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

pgaudit.log_rows

Указывает, что журнал аудита должен включать количество строк, извлеченных или затронутых оператором.

При включении (on) поле строк будет указан после поля параметра (при pgaudit.log_parameter = on)

boolean

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

pgaudit.log_statement

Указывает, будет ли в журнал аудита включаться текст запроса и параметры (если это разрешено). В зависимости от требований журнал аудита может не нуждаться в этом, и это делает журналы менее подробными

boolean

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

pgaudit.log_statement_once

Указывает, будут ли текст и параметры оператора прикрепляться к первой записи в журнале для комбинации оператора и вложенных операторов или к каждой записи.

Отключение этого параметра приведет к менее подробному ведению журнала, но может затруднить определение оператора, сгенерировавшего запись журнала, хотя пары оператора и вложенного оператора вместе с идентификатором процесса должно быть достаточно для идентификации текста оператора, записанного в предыдущей записи

boolean

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

pgaudit.role

Указывает главную роль, используемую для ведения журнала аудита объектов. Можно определить несколько ролей аудита, закрепив их главной роли. Это позволяет нескольким группам отвечать за различные аспекты ведения журнала аудита

string

Значение по умолчанию отсутствует

Префикс строки системного журнала

Для добавления других полей, необходимых для удовлетворения требований к системному журналу логов, используйте префикс строки log_line_prefix:

СпецсимволНазначениеТолько для пользовательского процесса
%aИмя приложения (application_name)да
%uИмя пользователяда
%dИмя базы данныхда
%rИмя удаленного узла или IP-адрес, а также номер портада
%hИмя удаленного узла или IP-адресда
%pИдентификатор процессанет
%tШтамп времени, без миллисекунднет
%mШтамп времени, с миллисекундаминет
%nШтамп времени, с миллисекундами (в виде времени Unix)нет
%iТег команды: тип текущей команды в сессиида
%eКод ошибки SQLSTATEнет
%cИдентификатор сессиинет
%lНомер строки журнала для каждой сессии или процесса. Начинается с единицынет
%sШтамп времени начала процессанет
%vИдентификатор виртуальной транзакции (backendID/localXID)нет
%xИдентификатор транзакции (0 если не присвоен)нет
%qНичего не выводит. Непользовательские процессы останавливаются в этой точке. Игнорируется пользовательскими процессаминет
%%Выводит %нет

Пример префикса строки журнала: %m %u %d [%p]: - включить вывод метки времени, имени пользователя, имени базы данных и идентификатора процесса для каждой записи журнала сообщений.

Параметры обфускации данных

Параметр

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

Описание

anon.algorithm

sha256

Алгоритм хеширования, применяемый методом псевдонимизации.
Поддерживаются md5, sha1, sha224, sha256, sha384 и sha512

anon.allow_constraints_masking

false

Флаг, допускающий обфускацию для атрибутов, входящих в ограничение целостности

anon.default_locale

en_US

Локаль инициализации таблиц подстановок, применяемых в методах фальсификации и псевдонимизации

anon.k_anonymity_provider

k_anonymity

Имя SECURITY PROVIDER, используемого для метода K-Anonimity

anon.masking_policies

anon

Схема БД, используемая расширением обфускации данных и содержащая таблицы и функции подстановок

anon.maskschema

mask

Схема БД, используемая для генерации анонимизированных данных

anon.privacy_by_default

off

Выбор стратегии маскирования атрибутов, не имеющих метки SECURITY LABEL. При включении параметра — для всех атрибутов, имеющих значения по умолчанию — будут использоваться они. Для атрибутов, допускающих NULL — подставлен NULL

anon.restrict_to_trusted_schemas

on

Признак использования функций маскирования, расположенных только в схемах с атрибутом TRUSTED

anon.salt

Отсутствует

Соль, используемая для метода псевдонимизации

anon.sourceschema

public

Схема БД по умолчанию, содержащая исходные данные. В случае использования нескольких схем — каждая из них должна быть помечена атрибутом TRUSTED

anon.strict_mode

on

Требования соответствия типа подстановочного значения типу исходного значения

anon.transparent_dynamic_masking

off

Режим динамического маскирования

Параметры парольных политик

В данном разделе более подробно описаны параметры механизма парольных политик.

ПараметрОписаниеТипPOSIX шаблонЗначение по умолчаниюАналог в pg_pp_policy
password_policy.policy_enableВключение/выключение парольной политикиbooleanon/offonpolicyenable
password_policy.deny_defaultВключение/выключение использования настроек из postgresql.confbooleanon/offoff-
password_policy.psql_encrypt_passwordЗасекречивание пароля при передаче от клиента к БДbooleanon/off--
password_policy.deduplicate_ssl_no_ssl_fail_auth_attemptsВключение механизма исключения повторных попыток подключения psqlbooleanon/offon-
password_policy.allow_hashed_passwordРазрешить задание пароля в виде хешаbooleanon/offoff-

Настройка хранения паролей

ПараметрОписаниеТипPOSIX шаблонОграничение значенияЗначение по умолчаниюСпециальные значения параметровАналог в pg_pp_policy
password_policy.reuse_timeВремя в секундах, в течение которого старый пароль сохраняется, и попытка сменить пароль на совпадающий со старым заканчивается ошибкойstring\d+ sнеотрицательное365 days-reusetime
password_policy.in_historyМаксимальное количество сохраненных старых паролейinteger[0-1000]0-100040 – Проверка на совпадение пароля с ранее использованным не проводится (при условии reuse_time = 0)inhistory
примечание

Если задан параметр password_policy.reuse_time, то параметр password_policy.in_history не используется.

Время жизни пароля

ПараметрОписаниеТипPOSIX шаблонОграничение значенияЗначение по умолчаниюСпециальные значения параметровАналог в pg_pp_policy
password_policy.max_ageВремя жизни пароля в секундахstring\d+ sнеотрицательное00 – Проверка максимального времени жизни пароля не производитсяmaxage
password_policy.min_ageМинимальное время между изменениями пароляstring\d+ sнеотрицательное00 – Проверка максимального времени жизни пароля не производитсяminage
password_policy.grace_login_limitМаксимальное количество аутентификаций после истечения срока действия пароляinteger[0-1000]0-10000-graceloginlimit
password_policy.grace_login_time_limitВремя, в течение которого пароль остается рабочим после окончания срока его действияstring\d+ sнеотрицательное3 days0 – аутентификация не доступна по истечении времени жизни пароляgracelogintimelimit
password_policy.expire_warningВремя до истечения пароля, при котором выводится предупреждениеstring\d+ sнеотрицательное7 days0 – не выводит предупреждениеexpirewarning

Поведение при неудачной аутентификации

ПараметрОписаниеТипPOSIX шаблонОграничение значенияЗначение по умолчаниюСпециальные значения параметровАналог в pg_pp_policy
password_policy.lockoutБлокировка аккаунта при достижении максимума неверных попыток аутентификацииbooleanon/offon/offon-lockout
password_policy.max_failureМаксимальное количество неверных попыток аутентификацииinteger[1-1000]1-10006-maxfailure
password_policy.failure_count_intervalВремя, после которого количество неверных попыток сбрасываетсяstring\d+ s>= 000 – счетчик не обнуляетсяfailurecountinterval
password_policy.lockout_durationВремя блокировки аккаунтаstring\d+ sнеотрицательное24 hours0 – блокировка пользователя по количеству неудачных аутентификаций бессрочнаlockoutduration

Синтаксические проверки пароля

ПараметрОписаниеТипОграничение значенияЗначение по умолчаниюСпециальные значения параметровАналог в pg_pp_policy
password_policy.check_syntaxВключение синтаксической проверки пароляbooleanon/offonchecksyntax
password_policy.alpha_numericМинимальное количество цифр в паролеinteger0-100030 – не проверятьalphanumeric
password_policy.min_lengthМинимальная длина пароляinteger0-1000160 – не проверятьminlength
password_policy.min_alpha_charsМинимальное количество букв в паролеinteger0-100000 – не проверятьminalphachars
password_policy.min_special_charsМинимальное количество специальных символовinteger0-100000 – не проверятьminspecialchars
password_policy.min_uppercaseМинимальное количество прописных буквinteger0-100010 – не проверятьminuppercase
password_policy.min_lowercaseМинимальное количество строчных буквinteger0-100000 – не проверятьminlowercase
password_policy.max_rpt_charsМаксимальное количество повторяющихся символовinteger0-100000 – не проверятьmaxrptchars

Проверка максимального времени неактивности пользователя

ПараметрОписаниеТипОграничение значенияЗначение по умолчаниюСпециальные значения параметровАналог в pg_pp_policy
password_policy.track_loginЗапоминать ли время последней аутентификацииbooleanon/offofftracklogin
password_policy.max_inactivityВремя последней аутентификации, после которого аккаунт блокируетсяstringнеотрицательное00 – функциональность отключенаmaxinactivity

Использование библиотеки zxcvbn

ПараметрОписаниеТипPOSIX шаблонОграничение значенияЗначение по умолчаниюАналог в pg_pp_policy
password_policy.use_password_strength_estimatorВключение использования библиотеки zxcvbn для оценки сложности пароляbooleanon/offon/offonusepasswordstrengthestimator
password_policy.password_strength_estimator_scoreМинимальная оценка сложности пароляinteger[0-4]0-43passwordstrengthestimatorscore

Использование пользовательской функции проверки пароля

ПараметрОписаниеТипPOSIX шаблонЗначение по умолчаниюАналог в pg_pp_policy
password_policy.custom_functionПользовательская функция проверки пароляstring[\w\d]+-customfunction

Проверка вхождения пароля в черный список

ПараметрОписаниеТипОграничение значенияЗначение по умолчаниюАналог в pg_pp_policy
password_policy.illegal_valuesПроверка, что пароль не входит в список часто используемыхbooleanon/offonillegalvalues

Настройка кеширования

ПараметрОписаниеТипPOSIX шаблонОграничение значенияЗначение по умолчаниюАналог в pg_pp_policy
password_policy.pp_cache_dump_intervalИнтервал сохранения данных кеша на дискinteger\d+1 - до максимального значения int в системе10-
password_policy.pp_cache_init_sizeРазмер инициализированного кеша парольных политикinteger\d+1 - до максимального значения int в системе10-
password_policy.pp_cache_soft_max_sizeПредполагаемый максимальный размер кешаinteger\d+1 - до максимального значения int в системе60-
password_policy.pp_cache_max_sizeОграничение сверху на размер кешаinteger\d+1 - до максимального значения int в системе1000-

Параметры управления транспортными паролями

ПараметрОписаниеТипЗначение по умолчаниюАналог в pg_pp_policy
password_policy.transport_password_mark_automaticПри значении true пароль становится транспортным автоматически при смене другим пользователем.
При значении false пароль отмечается транспортным вручную
booleanfalse-
transport_password_life_timeОпределяет время жизни транспортного пароляstring0transportpasswordlifetime
password_policy.is_temp_tuz_passwordОпределяет тип пароля (транспортный или нет) для указанных ТУЗbooleantrue-

Параметр маскирования запросов

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

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

Механизм отключен, маскирование запросов не производится, за исключением значений паролей и параметров функций, принимающих пароли, которые маскируются всегда

full

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

off

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