Построение корпоративной системы управления идентификационной информацией на базе FreeIPA (Леонид Кантер, OSSDEVCONF-2018)
Материал из 0x1.tv
- Докладчик
- Леонид Kaнтер
Доклад посвящён опыту построения и внедрения корпоративной системы управления идентификационной информацией на базе свободных продуктов FreeIPA и Ipsilon с поддержкой единого входа в систему (SSO) по протоколу SAML для сторонних поставщиков услуг.
Содержание
Видео
Презентация
Thesis
Постановка задачи
В процессе развития любой компании неизбежно возникает момент, когда администрирование пользователей становится невозможным без единой корпоративной системы управления идентификационной информацией сотрудников, которая с одной стороны хранила бы организационную информацию о пользователях, такую как имя, контакты, отдел, должность; с другой стороны, позволяла бы управлять политиками доступа к ресурсам. К этому моменту мы уже пользовались пакетом G Suite, в котором были заведены все пользователи, кроме этого, необходимо было предоставлять доступ к OpenNebula, сборочной системе, веб-серверам, серверам БД и другим корпоративным ресурсам, поскольку пользователи на всех этих ресурсах добавлялись индивидуально. В случае увольнения сотрудника необходимость проверки наличия учётных записей пользователя на всех этих ресурсах вызывала большую нагрузку на IT-отдел.
Выбор FreeIPA
Поскольку у нас уже была готовая база сотрудников в G Suite, звучали предложения использовать именно его в качестве первичного источника идентификационной информации. И действительно, вход на некоторые ресурсы уже был организован с использованием Google OAuth2. Но организовать таким образом доступ на системы Linux по ssh в консольном окружении не представлялось возможным. Поэтому необходима была такая система, которая позволяла бы управлять политикой консольного доступа по ssh и предоставлять идентификационную информацию для G Suite одновременно. Основными аргументами в пользу FreeIPA стали:
- Появление в CentOS 7.2 поставщика идентификации (IdP) в виде пакета Ipsilon 1.0.0, работающего с FreeIPA;
- Появление на стороне пакета приложений от Google поддержки единого входа в систему (SSO) по протоколу SAML с использованием сторонних IdP.
Возможности FreeIPA
FreeIPA (от Free Identity, Policy, Audit) — открытый проект для создания централизованной системы масштаба предприятия по управлению идентификацией пользователей, задания политик доступа и аудита сетей. Поддерживается компанией Red Hat. Используемые цели и механизмы схожи с Microsoft Active Directory. Включает в себя следующие компоненты: 389 Directory Server в качестве сервера LDAP; MIT Kerberos 5.0 для аутентификации и единого входа; DogTag для управления сертификатами; NTP; BIND и DHCP для управления DNS; WEB-интерфейс управления. Начиная с версии 3.0.0, FreeIPA также использует Samba для интеграции с Active Directory от Microsoft путём доверительных отношений.
Ipsilon
Ipsilon представляет собой поставщик идентификационной информации (Identity Provider, IdP), поддерживающий протоколы SAML2, OpenID Connect, OAuth2, Persona, OpenID 2.0, а также набор инструментов, позволяющий настраивать поставщики услуг на базе веб-сервера Apache. Представляет собой приложение, работающее на mod_wsgi. Аутентификация пользователей выполняется на отдельно стоящем сервере FreeIPA.
Внедрение
После испытаний на тестовом домене G Suite были установлены основной сервер FreeIPA и две реплики для обеспечения отказоустойчивости. Подготовлены инструкции для пользователей по использованию Kerberos для консольного и графического входа. На IPA были заведены рабочие группы. Из основного домена G Suite был экспортирован список пользователей. Был написан скрипт, который для полученного списка пользователей выполнил следующие действия: добавление пользователя в IPA; генерация начального пароля; отправка начального пароля и инструкции по смене пароля пользователю. После получения подтверждения от всех пользователей о возможности входа на веб-страницу Ipsilon домен G Suite был перенастроен на использование SSO. После этого началась работа по интеграции существующих и новых сервисов. В настоящее время c FreeIPA интегрированы следующие внешние и внутренние сервисы:
- G Suite — SAML-авторизация через Ipsilon
- Корпоративные веб-сайты на Apache — ipsilon-client (mod_auth_mellon)
- Консольный доступ на Linux-системы — ipa-client (Kerberos/sssd)
- OpenNebula — LDAP
- Jupyterhub — локальная pam-авторизация через sssd
- OpenVPN — локальная pam-авторизация через sssd
- Сборочная система — библиотека python-saml на уровне приложения
В обозримое время планируется интеграция таких внутренних сервисов, как Jenkins и Sentry.
Примечания и ссылки
- https://freeipa.org
- https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/linux_domain_identity_authentication_and_policy_guide/index
- https://ipsilon-project.org/
- https://fedoraproject.org/wiki/Features/SSSD