Active Directory vs Authentik

Всем привет!
Во первых, хочу поблагодарить автора этого ресурса за структурирование имеющихся материалов и выпуск новых, где “разжевывается” прям для тех, кто в танке с треугольными люками… Жаль, что я наткнулся на этот ресурс только сейчас, а не год назад, когда начинал щупать proxmox и виртуализацию.

Предложение следующее: разобрать Active Directory и Authentik, что из этого целесообразно в домашней локальной сети, где некоторые сервисы будут выставлены наружу? Беглый гуглеж подсказал, что сервисы решают схожие задачи аутентификации пользователей в системах по единой учетной записи.

Дополнительный вопрос: какие ещё есть open-source способы реализации данной задачи? Кто как эти задачи решает в своих домашних системах с десятком-двумя сервисов?

Вставлю свои пять копеек как человек у которого дома развернут домен AD, могу сказать, что если ваша цель только аутентификация и авторизация, то AD вам не надо, это трата ресурсов, потому что задачи AD и Windows домена сильно шире :slight_smile:

1 лайк

Все зависит от того, что надо от AD, какие конкретно планируется решать задачи?

Итого (сразу пишу выводы, за подробностями читайте лонгрид ниже)

  1. Для сетевика, который хочет прокачаться в технологиях хоть AD, хоть остальное, главное, что это ваша лаба и вы ее админите, хоть циску ставьте
  2. AD в чистом виде без ADFS не очень интересна (см. минусы LDAP и Kerberos), но вместо ADFS можно и authentik прикрутить
  3. Если задача стоит аутентифицироваться во всяких immich и прочих сервисах, без MS инфраструктуры, то однозначно Authentik будет проще и быстрее
  4. Если домашняя лаба на пару серверов и столько же пользователей, то однозначно Authentik, если у вас 1000 компьютеров и 1000 пользователей, то однозначно AD
    Лично мое мнение, что за рамками кучерявого ентерпрайза он не нужен.

Моя история

  1. Пробовал для дома и сервисов лет ХХ назад еще на 2003 сервере - прикольно, конечно, но больше как домашняя лаба + серверные венды были тогда более стабильные, нежели десктопные.
  2. Пробовал samba ad чуть позже для управления офисными компьютерами с групповыми политиками и прочем - понял, что без каноничного AD стабильного решения не будет.
  3. Еще на работе пользователи AD для настройки ферм Sharepoint.
  4. Когда начались санкции переводил корпоративную инфраструктуру на self-hosted решения, тогда остановился на FreeIPA + KeyCloak
  5. Дома выбираю легковесные решения, хотя, authentik не такой уж и легковесный. Остановился на Authentik

Чем прям очень хороша AD

  1. Иерархическая структура пользователей, групп, узлов.
  2. Поддержка лесов
  3. Ролевая модель
  4. Нативная поддержка групповых политик
  5. ADFS из коробки (в мое время этого не было)
  6. Хорошая интеграция в Windows машинами
  7. Всевозможные интеграции с софтом, я не сильно погружался, но что-то типа zookeeper, в 3 пункте из истории там регистрировались компоненты фермы, все собиралось в единую MS систему с IIS в качестве сервера.

Минусы AD

  1. Перегруженность для дома
  2. Завязка на MS, у меня последняя windows была уже озвученная 2003 server, потом сбежал от них
  3. Ресурсы, много ресурсов

Еще мысли по целесообразности

  1. Ванильный LDAP и ванильная же AD имеет иерархическую структуру, на работе у меня 241 группа, пользователей, у альтернатив часто группы плоские т.е. нельзя создать департамент, а в него добавить пользователей, или сами группы прав построить в виде дерева, просто списки
  2. Интересный проект нашел недавно pocket-id - очень легкий passkey OIDC, но я аналогичное поведение настроил и в authentik
  3. Часто сервисы аутентифицируют пользователя или по LDAP или по openid-connect иногда SAML
    4.1. LDAP удобен тем, что может быть фоновый провижининг и синхронизация, например, блокировка пользователей если они заблокированы в idP, можно настраивать роли, но синхронизация должна быть по расписанию и грузит системы, минус в безопасности т.к. стороннаяя система получает доступ к паролю, fail2ban, безопасность сервиса должны быть реализованы на всех сервисах + сервис имеет доступ к каталогу, путь и на чтение, а еще пользователи сохраняют пароли для каждого сервиса, а потом при смене пароля приходится обновлять его
    4.2. openid-connect/OAuth безопасней LDAP, но пользователь получает права в момент выпуска токена, например, ты не сможешь назначить задачу на пользователя, который ниразу не заходил в сервис. Но с другой стороны сервис не имеет доступа к паролю, защита об брутфорса только в одной системе, а при компрометации одного сервиса злоумышленник не сможет получить доступ ко всем системам (если правильно настроить), ну и если сохраняют пароль в браузере, то только для одного сайта.
    4.2. SAML это что-то среднее между LDAP и OAuth, но намного сложнее и у меня не получалось настроить с первой попытке, при этом имеет стандартизацию структуры данных пользователя, но лучше туда не лезть, встречается редко, обычно в лютом ентерпрайзе т.к. самый безопасный метод, но при наличии Oauth я выбираю его.
  4. На работе перевел все на OAuth или SAML и ушел от LDAP как раз по причине безопасности.
  5. Authentik очень простой и имеет ограничения в бесплатной версии, но часть функций настраивает проще, я бы сказал, что это проект для людей
  6. FreeIPA более функциональная, чем Authentik, ближе к AD, но не имеет OAuth/SAML/OpenID, поэтому я поставил KeyCloak, он тоже более функциональный, чем Authentik, но тяжелый и нет нескольких крутых фишек
  7. FreeIPA и AD имеют еще кроме аутентификации пользователя в вебе такие штуки как kerberos и sssd
    7.1. например, на linux сервере делаешь подключение freeipa и пользователи могут заходить по SSH по своему ключу или kerberos токену, они создаются и настраиваются автоматом
    7.2. можно настроить в самой IPA правила доступа к серверам, правила sudo системные группы и т.д.
    7.3. Kerberos крут, ты логинишься на локальном компе под учеткой IDP и по ssh даже без ключа ходишь на сервера и на сайтах сразу аутентифицируешься без ввода пароля
    7.4. ну и управление DNS тоже может быть, например в AD так реализуется DDNS, когда ты регистрируешь комп в домене и потом он доступен по имени
  8. Но 7.3. крут, конечно, но надо понимать, что это единая точка управления, когда в офисе куча компов и серверов это круто, но дома если у тебя упадет контроллер домена, то ты не сможешь зайти на домашний комп, а еще в интернет выносить эти сервисы очень неплохо, поэтому, часто есть привязка к проводу или wifi офисному
  9. С одной стороны SSSD это круто, но с дефолтными настройками я не смог настроить вход в LXC контейнер т.е. для решения проблем с конфликами ID пользователей AD/FreeIPA использует большие числа, например 1820400000, а в непривилегированном LXC используется маппинг ID пользователей, что-то +10000 или типа того, и получается, что пользователь c id 1820400000 в LXC на хосте будет уже с id 18204000000000, что превышает максимально допустимое значение
  10. Authentik имеет крутую штуку с приложениями и правами доступа, т.е. включает в себя не только аутентификацию, но и авторизацию, что не совсем правильно, но удобно, Keycloak имеет только аутентификацию, авторизацию я пробовал несколько раз добавить, но так и не заработало идеально. Суть в том, что когда ты логинишься в Oauth сервисе, то по правилам, токен должен тебе выдаваться в любом случае, в вот сервис сам должен проверить наличие ролей (RBAC) и выдать 403 страницу, но не все сервисы это умеют, authentik может сам показать 403 без выдачи токена
  11. Не знаю, как в ADFS, но мне очень зашла authentication proxy в authentik, для keycloak я поднимал перед сервисом сайдкар аутентификатор, который потом еще и удалили из репы, а тут очень круто и быстро
  12. Ну и для всяких Immich, NextCloud и прочих бесплатных опенсорсов чаще есть готовые инструкции именно для бесплатных ipP сервисов типа keycloak, authentik, Authelia, Okta, чем для AD
  13. Ну и сравнить authentik а альтернативами можно тут https://goauthentik.io/
  14. А еще в authentik есть radius, часть сервисов, например VPN работают по этому устаревшему протоколу и мне приходилось поднимать freeradius + ldap plugin для реализации, а тут прям из коробки, но это не для дома, имхо
  15. Я еще хочу попробовать RAC Provider в Authentik
3 лайка

Спасибо за развернутый ответ. Вопросов стало ещё больше, буду изучать.

Попробуйте PocketID. Отличное простое решение, для меня стало как глоток свежего воздуха после монструозного и страшного Authentik. Плюс - его можно с минимальным шаманством подружить с Nginx Proxy Manager (на какой-нибудь traefik переходить не хочу, из-за простоты и понятности npm). Думаю, таких много, кто хочет обеспечить приемлемую безопасность и удобство, но не видит смысла защищаться от самых крутых хакеров мира…

3 лайка

Не знаю чем authentik безопасней pocket is, я бы сказал даже, что наоборот

Authentik как-то подтормаживает периодически у меня, думал тюнить пытаться.

Но он для меня как глоток свежего воздуха после keycloak был.

А вот pocket-id подумывал даже поставить локально для тестов - уж очень он легок, но с базовым функционалом, но таки смущает отсутствие парольной аутентификации

NPM у меня был лет 5, наверное, но смущает низкая стабильность

  1. Несколько раз падала миграция БД и приходилось заново создавать базу с наполнением хостов
  2. Криво работает с сертификатами, бывало так, что менял один на другой и все рушилось
  3. Очень странная работа с подпутями
  4. Отсутствие SSO
  5. Не кластеризируется
  6. Приходится писать ручные конфиги
  7. Нет версионирования
  8. Так и не разобрался с метриками

Базово это отличный продукт, я сам продолжаю пользовать его и рекомендую начинающим, но после того, как несколько раз ковырялся в кишках и в офисе работал месяц в режиме только для чтении т.к. база сломалась при обновлении я чёт не особо хотел оставаться на нем в рамках хомлабы.
В NPM у меня было 40+ хостов, в traefik уже 83 маршрута

Ну и с трафиком я уверен т.к. все конфиги в гите, с NPM на таком количестве хостов уже тормозит и сохранении и без бэкапа страшно пользовать

1 лайк

По PocketID - тоже сам сначала думал: как это, без пароля совсем?
Но в итоге, как и разработчик сего по, пришел к выводу: да, без пароля даже лучше и удобнее)
В моём случае, в связке с bitwarden (waultwarden) вообще шикарно всё работает и на ПК в браузере с расширением, и на телефоне. А по npx -сам знаю, что решение не идеальное, но для хоумлабы - зачем больше? У меня ваших проблем с ним пока не было, у большинства пользователей думаю тоже всё адекватно работает

1 лайк