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

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

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

  • Если флаг установлен (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 — количество дней до окончания срока действия пароля, за которое будет отправлено уведомление о необходимости его смены.

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

При включении флага 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).

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

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

  • Если nNonRepeatPassAmount > 0, установка пароля, совпадающего с одним из последних, запрещается.

  • Например, при значении 2 система не позволит использовать пароль, совпадающий с любым из двух предыдущих.

Обработка устаревших паролей и уведомлений#

Методы:

  • 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 обязательно для:

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

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

    • доступа к системам с персональными данными.
      → Предпочтительно: мобильные аутентификаторы, аппаратные ключи.
      → SMS-коды как единственный фактор — запрещены.

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

  • Восстановление пароля:

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

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

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

  • Аудит аутентификации:

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

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