Установка и настройка LDAP
Функционал доступен в Enterprise и On-premise версиях. Данный функционал гарантировано работает при использовании: OpenLDAP или FreeIPA.
Создание LDAP подключения
Для создания LDAP подключения необходимо перейти в панель администратора, открыть раздел Настройки SSO и в разделе Настройка LDAP нажать кнопку Создать.
Настройка LDAP подключения
При создании нового LDAP подключения или редактировании уже существующего необходимо заполнить следующие обязательные поля:
- Название - название LDAP подключение, которое будет отображаться в панели администратора, на странице входа через LDAP или на странице синхронизации групп
- Адрес LDAP сервера - адрес, по которому находится LDAP сервер (если он запущен локально, то необходимо указать localhost)
- Порт LDAP сервера - порт LDAP сервера (по умолчанию порт 389)
- DN пользователя - DN администратора или пользователя с помощью которого будет производиться поиск по LDAP
- Пароль пользователя - пароль пользователя, с помощью которого будет производиться поиск по LDAP. Пароль необходимо вводить повторно при редактировании уже существующего подключения.
- BaseDn - DN сервера LDAP для поиска пользователей
- LDAP атрибут для email пользователя - атрибуты LDAP, которые сопоставляются с email пользователя. Для корректной работы связи с LDAP, в данном атрибуте рекомендуется использовать почту вида
mail@domain.ru
. Возможно указать несколько атрибутов для сопоставления, разделяя их точкой с запятой без пробелов. - LDAP атрибут для логина пользователя - атрибуты LDAP, которые сопоставляются с логином пользователя. Данные атрибуты должны быть уникальны для каждого отдельного пользователя. По данному атрибуту происходит вход в систему. Возможно указать несколько атрибутов для сопоставления, разделяя их точкой с запятой без пробелов.
Поля, описанные ниже, не являются обязательными для создания LDAP подключения, но их заполнение способно сделать синхронизацию пользователей более полной:
- LDAP атрибут для имени пользователя - атрибут для заполнения имени пользователя. В случае если поле не заполнено используется атрибут по умолчанию - givenName
- LDAP атрибут для фамилии пользователя - атрибут для заполнения фамилии пользователя. В случае если поле не заполнено используется атрибут по умолчанию - sn
- Описание LDAP соединения - описание, которое будет отображаться в панели администратора GitFlic
Кроме того, в настройках LDAP подключения присутствуют дополнительные параметры:
- Использовать SSL соединение (ldaps) - позволяет использовать ssl соединение в LDAP подключении. Более подробно ознакомиться с этой функцией можно здесь.
- Аутентифицировать пользователя если LDAP сервер недоступен - позволяет пользователям зайти с помощью ранее успешно введенных данных, в случае если LDAP сервер недоступен для подключения. Более подробно ознакомиться с этой функцией можно здесь
- Ограничение на количество запросов - указывает ограничение установленное на сервере на количество объектов получаемых в рамках одного запроса. По умолчанию - 1000
После заполнения требуемых полей, необходимо нажать кнопку "Создать". После успешного создания вы будете перенаправлены на страницу, где представлен список всех созданных LDAP-соединений.
Вход при помощи LDAP
На странице входа необходимо выбрать раздел LDAP. После ввода учетных данных, которые вам сообщил администратор, нажмите кнопку "Войти"
Синхронизация LDAP групп
Функционал доступен в Enterprise версии
Настройка синхронизации LDAP групп
Для активации синхронизации групп LDAP с командами или компаниями в GitFlic необходимо воспользоваться настройкой "Включить синхронизацию групп". Для создания LDAP подключения с активной синхронизацией групп необходимо заполнить обязательные поля:
- GroupDN - DN сервера LDAP для поиска групп
- Атрибут id пользователя - атрибут, указывающий на id члена группы
- Атрибут имени группы - атрибуты, указывающий на название группы
- Атрибут для поиска членов группы - атрибут группы, в котором перечисляются все id ее членов
Для более гибкой настройки синхронизации групп можно воспользоваться необязательными фильтрами:
- Фильтры для поиска групп - фильтр, конкретизирующий поиск групп
Применение синхронизации LDAP групп
После настройки LDAP подключения, с указанием всех необходимых параметров для синхронизации групп, для администраторов команд и компаний станет доступна вкладка Синхронизация LDAP.
Группы, указанные в настройках LDAP подключения, появляются в GitFlic не сразу - встроенный механизм обновляет информацию о них раз в час. Кнопка Синхронизировать группы LDAP позволяет избежать ожидания. При нажатии на нее происходит синхронизация и актуальная информация о группах LDAP становится доступна в GitFlic. Поэтому начинать любое взаимодействие с функционалом синхронизации групп рекомендуется именно с нажатия на данную кнопку.
Селектор LDAP сервера позволяет выбрать конкретное подключение, группы которого необходимо добавить в команду или компанию. Есть два метода синхронизации:
- LDAP group cn - выбор группы из списка, который автоматически формируется на основании настроек синхронизации групп LDAP подключения
- LDAP user filter - формирование группы с помощью указанного фильтра
После выбора группы одним из методов, необходимо выбрать роль, которую получат все пользователи в указанной группе при ее синхронизации с командой или компании.
Для добавление пользователей выбранной группы в приватные проекты команды или компании, в которую происходит синхронизация, необходимо активировать переключатель Добавить синхронизированных пользователей в приватные проекты команды. Пользователи будут добавлены с такой же ролью, с которой синхронизируется их роль.
После нажатия на кнопку Добавить группа попадает в раздел Активные синхронизации. После добавления достаточного числа групп необходимо нажать на кнопку Синхронизировать, после чего все участники групп, получат указанные роли в команде или компании.
- Если пользователь присутствует в нескольких группах, то при синхронизации ему будет присвоена самая старшая роль.
Например, пользователь присутствует в group1, которая добавлена на синхронизацию с ролью Гость и в group2, добавленной на синхронизацию с ролью Разработчик. Тогда, после нажатия кнопку Синхронизировать, этот пользователь получит роль Разработчик в команде или в компании, в которой осуществляется синхронизация.
- Если синхронизация осуществляется в сущности, которая находится во владении компании или команды, то при синхронизации пользователь будет добавлен в вышестоящую компанию с ролью Гость.
Например, синхронизация осуществляется в подгруппе. Тогда, при синхронизации, пользователь будет добавлен в компанию, которая является родительской для команды, в рамках которой создана данная подгруппа.
- Перед синхронизацией групп необходимо произвести вход под учетной записью LDAP пользователя для создания профиля в GitFlic.
Управление синхронизированными пользователями
Пользователи, которые добавлены в команду или компанию, с помощью синхронизации групп, заблокированы для изменений в разделе Управление доступом. Для изменения роли или удаления таких пользователей необходимо снять блокировку с помощью кнопки в виде замка. После повторной синхронизации, роли этих пользователей не будут изменены.
- Если удалить пользователя из команды или компании после снятия блокировки, то при следующей синхронизации данный пользователь снова получит доступ с той ролью, с которой добавлена его группа. Для окончательного удаления пользователя рекомендуется удалить его из конфигурации самого LDAP сервера и произвести повторную синхронизацию как самого LDAP подключения, так и LDAP групп.
- Если необходимо вернуть пользователю роль, с которой его группа была добавлена в команду или компанию, то необходимо снова заблокировать пользователя и повторно нажать кнопку Синхронизировать.
Дополнительная информация по работе с LDAP
-
В
application.properties
рекомендуется указать параметрgitFlic.aes.secret
, который используется в качестве пароля для шифрования пароля от базы LDAP. Вы можете задать свой пароль или ничего не назначать, в таком случае используется стандартный пароль (небезопасно). -
На сервере хранится хэш пароля, который используется только в том случае, если стоит галочка "Аутентифицировать пользователя если LDAP сервер недоступен". При входе пользователя, в случае недоступности LDAP сервера, GitFlic сверяет хеш в базе и введенный пароль. Если галочки нет, то в случае, если сервер недоступен, учётная запись блокируется: не будет возможности работать с проектом через ssh, токены станут невалидными и т.д.
-
При работе через https при каждом запросе к GitFlic (clone, push, pull и т.д.) GitFlic обращается к LDAP серверу и в случае, если LDAP сервер не доступен, то пользователь блокируется. При работе через ssh такая проверка не производится, т.е. если заблокировать пользователя в системе LDAP, то доступ к веб-интерфейсу и к работе через http в git работать не будет, но если пользователь продолжит работу через ssh то в GitFlic его учётная запись не заблокируется.
-
В gitflic настроен worker который раз в час обращаться к LDAP серверу для проверки и обновления пользователей. Процесс выполняет следующие проверки доступа:
- Проверяет, что пользователь ещё присутствует в LDAP
- Если сервером LDAP является Active Directory, убедитесь, что пользователь активен (не заблокирован/отключен). В Active Directory пользователь помечается как отключенный/заблокированный, если в атрибуте управления учетными записями пользователя (
userAccountControl:1.2.840.113556.1.4.803
) установлен бит 2. (поиск по битовой маске в LDAP)
-
Для оперативной блокировки пользователей можно вручную заблокировать пользователя в панели администратора сервиса GitFlic.
-
Поля имя и фамилия заполняются из атрибутов
givenName
(имя) иsn
(фамилия). После первого входа данные параметры можно переопределить вручную.
Добавление локального сертификата для работы LDAPS.
Если требуется использовать локальный сертификат для работы с LDAPS то, кроме добавления его на сервер где запущен GitFlic, сертификат так же необходимо импортировать в JRK. Если не выполнить данное действие, то при установке галочки Использовать SSL соединение (ldaps) в настройках ldap в логах появится сообщение Ошибка при создании LDAP подключения: simple bind failed
. Для сертификатов которые подтверждаются через глобальные центры сертификации данные настройки можно не производить.
Ubuntu
- Узнайте, где находится папка с сертификатами Java. Чтобы найти местоположение
$JAVA_HOME
выполните команду:
readlink -f /usr/bin/java | sed "s:bin/java::"
cacerts
находятся в lib/security/cacerts
. Запись ниже можно использовать как переменную с корректным путём до cacerts
.
$(readlink -f /usr/bin/java | sed "s:bin/java::")lib/security/cacerts
- Выполните импорт сертификата.
keytool -import -alias <alias> -file <file_path> -keystore $JAVA_HOME/lib/security/cacerts
В примере ниже используется:
* -alias
ya.ru
* Полный путь до сертификата -file ~/tmp/ya.crt
* Путь до сертификатов JRK -keystore /usr/lib/jvm/java-18-openjdk-amd64/lib/security/cacerts
keytool -import -alias ya.ru -file ~/tmp/ya.crt -keystore /usr/lib/jvm/java-18-openjdk-amd64/lib/security/cacerts
При запросе пароля Enter keystore password:
попробуйте просто нажать Enter
или пароль changeit
Посмотреть сертификаты можно командой:
keytool -list -v -keystore $(readlink -f /usr/bin/java | sed "s:bin/java::")lib/security/cacerts