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

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

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

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

ПараметрОписаниеТип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-

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

Основной параметр (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.

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

Совет

Чтобы ограничить количество записей аудита отношений для операторов SELECT и DML, рассмотрите возможность использования журнала аудита объектов. Ведение журнала аудита объектов позволяет выбрать отношения, которые будут регистрироваться, что позволяет уменьшить общий объем журнала. Однако все новые создаваемые отношения должны быть явно добавлены в журнал аудита объектов. В этом случае хорошим вариантом может быть программное решение, в котором некоторые определенные таблицы исключаются из ведения журнала, а все остальные включаются. Подробнее в разделе «Ведение журнала аудита объектов».

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

ПараметрОписаниеТипЗначение
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. Этот параметр обычно следует оставить отключенным, но он может быть полезен для отладки или других целейbooleanpgaudit.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Номер строки журнала для каждой сессии или процесса. Начинается с 1нет
%sШтамп времени начала процессанет
%vИдентификатор виртуальной транзакции (backendID/localXID)нет
%xИдентификатор транзакции (0 если не присвоен)нет
%qНичего не выводит. Непользовательские процессы останавливаются в этой точке. Игнорируется пользовательскими процессаминет
%%Выводит %нет

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

В качестве идентификатора используется UUIDv4 (формируется случайным образом). Для получения идентификатора используется функция gen_random_uuid. Формат идентификатора:

xxxxxxxxxxxxMxxxNxxxxxxxxxxxxxxx
Значения на позициях M и N определяют соответственно версию и вариант UUID

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

ПараметрЗначение по умолчаниюОписание
anon.algorithmsha256Алгоритм хеширования, применяемый методом псевдонимизации.
Поддерживаются md5, sha1, sha224, sha256, sha384 и sha512
anon.allow_constraints_maskingfalseФлаг, допускающий обфускацию для атрибутов, входящих в ограничение целостности
anon.default_localeen_USЛокаль инициализации таблиц подстановок, применяемых в методах фальсификации и псевдонимизации
anon.k_anonymity_providerk_anonymityИмя SECURITY PROVIDER, используемого для метода K-Anonimity
anon.masking_policiesanonСхема БД, используемая расширением обфускации данных и содержащая таблицы и функции подстановок
anon.maskschemamaskСхема БД, используемая для генерации анонимизированных данных
anon.privacy_by_defaultoffВыбор стратегии маскирования атрибутов, не имеющих метки SECURITY LABEL. При включении параметра — для всех атрибутов, имеющих значения по умолчанию — будут использоваться они. Для атрибутов, допускающих NULL — подставлен NULL
anon.restrict_to_trusted_schemasonПризнак использования функций маскирования, расположенных только в схемах с атрибутом TRUSTED
anon.saltОтсутствуетСоль, используемая для метода псевдонимизации
anon.sourceschemapublicСхема БД по умолчанию, содержащая исходные данные. В случае использования нескольких схем — каждая из них должна быть помечена атрибутом TRUSTED
anon.strict_modeonТребования соответствия типа подстановочного значения типу исходного значения
anon.transparent_dynamic_maskingoffРежим динамического маскирования

Настроечные параметры KMS

Настроечные параметры, управляемые администраторами безопасности через KMS в режиме защищенного конфигурирования.

ПараметрГде ведетсяЗначение по умолчаниюПримечание
allowed_serversKMSПустая строка
pg_ident_conf (локально файл pg_ident.conf)Должны совпадать на KMS и локальноNULL
is_tde_onKMSoff
psql_encrypt_passwordKMSoff
enabled_extra_auth_methodsKMSПустая строка
enabled_sec_admin_extra_auth_methodsKMSПустая строка
encrypt_new_tablespacesKMSddl
masking_modeKMSdisabledС версии 5.2.1
password_encryptionKMSmd5
password_policy.alpha_numericKMS1
password_policy.allow_hashed_passwordKMSoff
password_policy.check_syntaxKMSon
password_policy.custom_functionKMSПустая строка
password_policy.deny_defaultKMSoff
password_policies_enableKMSoff
password_policy.expire_warningKMS7 days
password_policy.failure_count_intervalKMS0
password_policy.grace_login_limitKMS5
password_policy.grace_login_time_limitKMS0
password_policy.illegal_valuesKMSoff
password_policy.in_historyKMS0
password_policy.lockoutKMSon
password_policy.lockout_durationKMS24 hours
password_policy.min_ageKMS0
password_policy.max_ageKMS120 days
password_policy.max_failureKMS10
password_policy.max_inactivityKMS0
password_policy.max_rpt_charsKMS0
password_policy.min_alpha_charsKMS0
password_policy.min_lengthKMS5
password_policy.min_lowercaseKMS0
password_policy.min_special_charsKMS0
password_policy.min_uppercaseKMS0
password_policy.password_strength_estimator_scoreKMS3
password_policy.reuse_timeKMS0
password_policy.track_loginKMSoff
password_policy.transport_password_life_timeKMS0
password_policy.transport_password_mark_automaticKMSoff
password_policy.use_password_strength_estimatorKMSoff
performance_insights.maskingKMSonС версии 5.2.0
sec_admin_default_authKMSscram-sha-256С версии 5.4.1
secure_configKMSДолжно быть явно задано при настроенном подключении к KMS
Отсутствие значения является ошибкой
При значении on защищенные параметры считываются с KMS
При значении off защищенные параметры считываются из локальных файлов
sslKMSoff