Политика паролей#

Политика паролей определяет требования к созданию, изменению, сроку действия и повторному использованию паролей пользователей.

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

Реализация в системе#

За включение парольной политики в системе отвечает флаг Настройка политики паролей на типе объекта (bPasswordSettingsInOT) в группе Безопасность и аутентификация в классе Btk_Setting (по умолчанию — false).

Путь: Приложение «Настройка системы» > Настройки и сервисы > Настройки модулей системы > Общие настройки модулей > btk > Безопасность и аутентификация > Настройка политики паролей на типе объекта.

  • Если флаг установлен (true), то парольная политика настраивается на типе объекта пользователя (Btk_UserPasswordSetting).

  • Если флаг не установлен или равен false, используются стандартные параметры паролей из класса Btk_User. Они настраиваются отдельно на каждом пользователе.

Параметры из класса Btk_User

Атрибуты, определяющие требования к паролю:

  • bPassSpecSymb — необходимость наличия хотя бы одного специального символа; по умолчанию — 0 (не требуется); допустимые символы: !@#$%^&*()-+\?/.,№;:;

  • bPassLetterDigit — обязательное наличие как букв, так и цифр; по умолчанию — 0;

  • bPassUpperLowerLetter — необходимость использования как строчных, так и прописных букв; по умолчанию — 0;

  • nPassMinSymbCnt — минимально допустимое количество символов в пароле; значение по умолчанию отсутствует (ограничение не применяется).

Настройки политики на типе объекта (Btk_UserPasswordSetting)

Атрибуты, определяющие политику управления паролем:

  • все атрибуты из класса Btk_User (bPassSpecSymb, bPassLetterDigit, bPassUpperLowerLetter, nPassMinSymbCnt) — действуют аналогично вышеописанным;

  • nNonRepeatPassAmount — количество последних паролей, которые нельзя повторно использовать; по умолчанию отсутствует (повтор разрешён);

  • nDayInactivityCntForUserBlocking — число дней без активности, после которого пользователь будет заблокирован; значение по умолчанию — 180;

  • nMinLifetime — минимальное количество дней между сменами пароля; запрещает слишком частую смену; по умолчанию отсутствует;

  • jTempBlockingForUnsuccessfulLogin — параметры временной блокировки при неудачных попытках входа; JSON-объект с полями:

    • nNumberOfAttempts — допустимое число ошибочных попыток входа;

    • nBlockingTimeMin — время блокировки (в минутах) при превышении лимита;

  • nValidityPeriod — срок действия постоянного пароля (в днях);

  • nValidityPeriodTemp — срок действия временного пароля (в днях);

  • sDaysForNotifyChangePass — количество дней до окончания срока действия пароля, за которое будет отправлено уведомление о необходимости его смены.

  • bPassDenyPersonalData — запрет на использование в пароле логина, персональных и контактных данных пользователя;

Настройка политики через типы объектов

При включении флага bPasswordSettingsInOT в классе Btk_Setting (установке галочки «Настройка политики паролей на типе объекта») политика применяется ко всей системе.

После включения управление политикой осуществляется через типы объектов класса Btk_User. Каждому пользователю назначается определённый тип объекта, который определяет применяемые к нему правила парольной политики. По умолчанию доступны предопределённые типы объектов, однако допускается создание новых.

Настройка параметров на типе объекта

Параметры парольной политики настраиваются непосредственно на типе объекта:

  1. Перейдите: Настройки системы > Сущности > Типы объектов.

  2. В фильтре укажите класс Btk_User.

  3. Выберите нужный тип объекта из списка.

  4. В левой панели перейдите в раздел «Настройки пользователей».

  5. Установите требуемые значения параметров парольной политики.

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

Тип объекта пользователя указывается в карточке учетной записи.

Путь: Приложение «Администратор» > Пользователи > открыть учетную запись пользователя > поле Тип в правой части карточки.

Валидация политики#

Проверка требований к сложности пароля

Происходит при смене пароля в методе Btk_ChangePasswordAvi.Card.beforeCloseForm. Используются следующие методы:

  • Btk_UserApi.validateUserPassword — проверяет соблюдение минимального срока жизни пароля (nMinLifetime);

  • Btk_UserApi.validateTempPassword — проверяет, не истёк ли срок действия текущего пароля (nValidityPeriod или nValidityPeriodTemp);

  • Btk_UserApi.checkPass — производит детальную проверку структуры нового пароля по заданным параметрам (bPassSpecSymb, bPassLetterDigit, bPassUpperLowerLetter, nPassMinSymbCnt).

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

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

Для каждого вида данных используются следующие варианты проверки:

  • Логин проверяется полностью, в исходном написании и с сохранением входящих в него символов. Логин не разбивается на отдельные части, не транслитерируется и не очищается от точек и других символов. Пароль блокируется, если содержит полный логин как непрерывный фрагмент. Дополнительные символы до или после логина не позволяют пройти проверку.

    Например, для логина test.test пароль 123test.test456 будет заблокирован, а testtest пройдет проверку, если не содержит других персональных данных пользователя.

  • Фамилия, имя и отчество проверяются по отдельности:

    • в исходном написании на русском языке;

    • в английской раскладке клавиатуры;

    • в короткой транслитерации, например с заменой ж на j;

    • в общеупотребительной английской транслитерации, например с заменой ж на zh.

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

    Например, для фамилии Иванов пароль Ивановы будет заблокирован, поскольку содержит значение Иванов.
    Для фамилии Гладкий значение Гладкого не будет распознано как фамилия, поскольку исходная форма Гладкий не входит в него как непрерывный фрагмент.

  • ИНН и СНИЛС проверяются в следующих вариантах:

    • в полном виде, указанном в карточке физического лица;

    • без пробелов, дефисов и других символов, кроме цифр.

    Например, для СНИЛС 123-456-789 00 проверяются значения 123-456-789 00 и 12345678900.- Дата рождения проверяется в следующих вариантах:

    • ДДММГГГГ, например 14081990;

    • ГГГГ, например 1990;

    • ДДММГГ, например 140890.

  • Адрес электронной почты проверяется в следующих вариантах:

    • полный адрес;

    • локальная часть адреса до символа @;

    • отдельные фрагменты локальной части, полученные разбиением по символам -, ., _ и +.

    Например, для адреса name.surname@mail.ru проверяются полный адрес, значение name.surname, а также фрагменты name и surname.

  • Номера телефонов всех типов, включая рабочий, мобильный, домашний и прочий, проверяются в следующих вариантах:

    • в полном виде, указанном в способах связи;

    • без пробелов, скобок, дефисов и других символов, кроме цифр;

    • по последним семи цифрам номера.

    Например, для номера +7 (999) 123-45-67 проверяются значения +7 (999) 123-45-67, 79991234567 и 1234567.

Совет

Например, если фамилия пользователя — Иванов, а логин — a.ivanov, пароль aivanov будет заблокирован не из-за совпадения с логином, а из-за наличия транслитерированного значения фамилии ivanov.

Условия проверки:

  • Персональные и контактные данные берутся из карточки физического лица, связанного с учетной записью. Если физическое лицо не указано, система проверяет только логин пользователя.

  • Проверка выполняется без учета регистра.

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

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

Проверка уникальности пароля

Метод Btk_UserApi.setsPass вызывает Btk_UserPassHistoryApi.register, который сравнивает новый пароль с предыдущими.

Если nNonRepeatPassAmount > 0, установка пароля, совпадающего с одним из последних, запрещается. Например, при значении 2 система не позволит использовать пароль, совпадающий с любым из двух предыдущих.

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

Срок действия пароля задается параметрами парольной политики на типе объекта пользователя: nValidityPeriod определяет срок действия постоянного пароля, nValidityPeriodTemp — срок действия временного пароля.

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

Если пользователь не сменил временный пароль до окончания срока nValidityPeriodTemp, учетная запись блокируется. Для восстановления доступа пользователь должен обратиться к администратору.

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

Методы обработки:

  • processUpdatingOutdatedPass — используется в составе job-процесса; при истечении срока действия постоянного пароля переводит пароль во временное состояние и устанавливает Btk_User.bChangePasswd = true;

  • emailNotifyUserForNeedChangePassword — отправляет уведомление пользователю, если до окончания срока действия постоянного пароля осталось количество дней, заданное в sDaysForNotifyChangePass.

Временная блокировка при неудачных попытках входа

Метод validateBlockingUserResult контролирует количество подряд неудачных попыток входа.

При превышении лимита jTempBlockingForUnsuccessfulLogin.nNumberOfAttempts пользователь временно блокируется. Длительность блокировки задаётся параметром jTempBlockingForUnsuccessfulLogin.nBlockingTimeMin.

Рекомендации по парольной политике#

Требования к паролю

Минимальная длина:

  • 8 символов — для обычных пользователей;

  • 12 символов — для администраторов и привилегированных учётных записей.

Сложность: пароль должен содержать символы из трёх и более категорий:

  • прописные латинские буквы (A–Z);

  • строчные латинские буквы (a–z);

  • цифры (0–9);

  • специальные символы (!, @, #, $, %, ^, &, * и др.).

Дополнительные требования:

  • допускается использование кириллицы;

  • максимальная длина — до 64 символов;

  • запрещено использовать простые или предсказуемые пароли (например, Password123, Qwerty!);

  • запрещено использовать персональные данные (имена, даты рождения, номера телефонов);

  • запрещено использовать клавиатурные последовательности (например, qwerty, 1qaz2wsx);

  • запрещено использовать повторяющиеся символы (например, aaaaaa);

  • запрещено использовать пароли из списков скомпрометированных.

Рекомендуемые сроки и случаи смены пароля

Смена пароля выполняется из интерфейса системы: Сервис > Регистрация > Сменить пароль.

Рекомендуемые сроки действия постоянного пароля:

  • не более 180 дней — для обычных пользователей;

  • не более 90 дней — для администраторов и привилегированных учетных записей.

Пароль должен быть изменен при:

  • первом входе с временным паролем;

  • подозрении на утечку;

  • передаче пароля третьим лицам;

  • компрометации учетной записи или средств аутентификации.

Дополнительные рекомендации:

  • новый пароль не должен совпадать с двумя последними;

  • новый пароль должен отличаться от старого минимум на 4 символа;

  • новый пароль не должен содержать фрагменты старого пароля длиной ≥ 2 символа на тех же позициях;

  • рекомендуется хранить не менее 24 последних паролей;

  • временная блокировка после 10 неудачных попыток минимум на 3 минуты.

Учётные записи

Требования к управлению:

  • при увольнении, переводе без доступа или прекращении отношений учётная запись немедленно блокируется в течение следующего рабочего дня;

  • запрещено передавать пароль уволенного или перемещённого сотрудника;

  • после блокировки учётная запись отключается во всех системах;

  • отключённая запись сохраняется в каталоге (например, Active Directory) для аудита;

  • срок хранения — от 6 до 36 месяцев;

  • по истечении срока запись удаляется из всех систем.

Использование и хранение паролей

Общие требования:

  • пароль должен быть известен только владельцу;

  • запрещено передавать пароль (включая руководителей);

  • запрещено работать под чужим паролем;

  • запрещено регистрировать других пользователей под своим аккаунтом.

Запрещено хранить пароли:

  • на бумаге (кроме сейфа);

  • в заметках, файлах, на стикерах, под клавиатурой.

Допускается:

  • хранение на бумажном носителе в запирающемся шкафу или сейфе;

  • хранение в зашифрованном виде (bcrypt, scrypt, PBKDF2).

Рекомендации:

  • использование корпоративного менеджера паролей (Bitwarden, 1Password, Keeper);

  • при вводе обеспечивать конфиденциальность (защита от «глазков»);

  • не произносить пароль вслух;

  • учитывать регистр.

Особые положения

MFA обязательно для:

  • администраторов;

  • пользователей с расширенными правами;

  • доступа к системам с персональными данными.

Дополнительные требования к MFA:

  • предпочтительно: мобильные аутентификаторы, аппаратные ключи;

  • SMS-коды как единственный фактор — запрещены.

Дополнительные положения:

  • групповые учётные записи — строго запрещены;

  • восстановление пароля — только через генерацию нового;

  • восстановление пароля — после личной верификации (визит или видеозвонок с документом);

  • запрещено отправлять временные пароли по email без подтверждения;

  • аудит аутентификации — все попытки входа (успешные и нет) должны логироваться;

  • логи хранятся не менее 180 дней.