Если вам понравилась эта статья, вы можете стать спонсором на Boosty.
Предполагаю, что Authentik у вас уже установлен и настроен (см. статьи про общий обзор и первоначальную настройку). Политики обеспечивают настройку и гибкость при определении процесса входа и аутентификации пользователей.
По сути, политики решают, будет ли определенный этап применен в потоке, а также смогут ли конкретные пользователи вообще получить доступ к этому потоку.
Например, можно создать политику, которая для некоторых пользователей пропускает этап запроса MFA. Либо можно определить политику, разрешающую доступ к потоку входа только в том случае, если выполняются заданные условия. В данной статье я рассмотрю политику репутации.
Политика репутации#
Authentik отслеживает недавние попытки входа для каждой пары «идентификатор (имя пользователя, почтовый адрес и т. д.) + IP-адрес клиента». Эти значения сохраняются в виде рейтингов (score). Каждая неудачная попытка входа уменьшает рейтинг на 1. Успешный вход увеличивает его на 1, а если рейтинг к этому моменту был отрицательным - сбрасывает в 0.
Рейтинг ограничен снизу и сверху: по умолчанию от -5 до 5 (меняется в System > Settings, параметры Reputation: lower limit и Reputation: upper limit). Записи о репутации не вечные - по умолчанию они живут сутки, после чего удаляются.
Эту политику можно использовать, например, для того, чтобы пользователи с низким рейтингом проходили CAPTCHA-проверку перед продолжением входа - как ее настроить, я разбирал в статье про Cloudflare Turnstile в Authentik. А можно поступить жестче и вообще не пускать их дальше - именно этот вариант разберем ниже.
Под учетной записью администратора переходим в меню Flows and Stages > Flows
Выбираем ваш основной идентификационный поток, в моем случае default-authentication-flow, затем переходим в раздел Policy/Groups/User Bindings

Далее переходим в раздел Create and Bind Policy, и выбираем в меню Reputation Policy.

В следующем разделе задаем имя политики, которое имеет для вас смысл.
Дальше - очень важный момент, который нужно учитывать: что именно политика будет считать.
Если выбрать только check ip, политика суммирует рейтинг всех попыток входа с этого IP-адреса, вне зависимости от имени пользователя. Несколько неудачных попыток с одного IP - и вход с него будет запрещен для всех.
Если выбрать только check username, политика суммирует рейтинг всех попыток входа под этим именем пользователя, вне зависимости от IP-адреса, с которого он пытается авторизоваться. Запрещен будет вход именно этого пользователя.
Если выбрать check ip и check username одновременно, рейтинги складываются: учитываются и все попытки с этого IP-адреса, и все попытки под этим именем пользователя. На практике это значит, что если условный пользователь Ваня с конкретного IP-адреса несколько раз неудачно попытается войти, то от этого пострадает и условная Галя, которая будет входить с того же IP-адреса: Ванины неудачи попадут и в ее сумму. Спасти Галю может только ее собственная хорошая история успешных входов, если она перевесит Ванины ошибки.
Выбирайте тот вариант, который больше всего подходит под ваши нужды.
Threshold - это пороговое значение. Политика срабатывает (возвращает true), когда рейтинг равен порогу или ниже него. По умолчанию установлено значение -5.

В следующем разделе активируем параметр Negate the result.

Коротко: Negate the result - это флаг инвертировать результат политики.
Проще говоря:
- выключено → политика работает «как есть»
- включено → результат политики переворачивается
На примере, допустим, политика возвращает:
true- условия выполненыfalse- условия не выполнены
Если включить Negate the result:
true→ станетfalsefalse→ станетtrue
Зачем это нужно в Authentik: это удобно, когда политика определяет «плохое» условие, а тебе нужно реагировать на «хорошее», или наоборот.
Reputation Policy как раз определяет «плохое» условие: она возвращает true, когда рейтинг упал до порога или ниже, то есть когда репутация плохая. Отсюда два сценария:
- Показать CAPTCHA только подозрительным. Политика привязывается к этапу с CAPTCHA без
Negate the result: этап выполняется, когда политика сработала, то есть когда репутация плохая. Документация Authentik советует в этом случае включать у привязки этапаEvaluate when stage is run, чтобы политика учитывала самые свежие попытки входа. - Не пускать подозрительных вообще. Политика привязывается ко всему потоку с
Negate the result: поток доступен, когда политика не сработала, то есть когда репутация нормальная. Это ровно то, что мы делаем в этой статье.
Также указываем порядковый номер политики.
В разделе Flow overview можно посмотреть, как теперь работает поток.

Если репутация у вас хорошая, вы сможете пройти все этапы аутентификации. Если же репутация ниже установленных значений (в моем случае - три неудачные попытки входа с одного IP-адреса), Authentik просто не пустит вас дальше.
При варианте «не пускать вообще» не заблокируйте самого себя: несколько опечаток в пароле - и вход с вашего же IP будет закрыт, пока рейтинг не вернется выше порога (записи о репутации по умолчанию живут сутки). Держите под рукой второй способ попасть в админку или запасную учетную запись, а сбросить рейтинг можно, удалив соответствующую запись в Reputation scores.
Посмотреть значения репутации можно в меню Customization → Reputation scores.






