Перейти к содержанию

Установка и настройка LDAP

Функционал доступен в Enterprise и On-premise версиях. Данный функционал гарантировано работает при использовании: OpenLDAP или FreeIPA.


Создание LDAP подключения

Для создания LDAP подключения необходимо перейти в панель администратора, открыть раздел Настройки SSO и в разделе Настройка LDAP нажать кнопку Создать.

Создание 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. После ввода учетных данных, которые вам сообщил администратор, нажмите кнопку "Войти"

Вход при помощи LDAP

Синхронизация LDAP групп

Функционал доступен в Enterprise версии

Настройка синхронизации LDAP групп

Для активации синхронизации групп LDAP с командами или компаниями в GitFlic необходимо воспользоваться настройкой "Включить синхронизацию групп". Для создания LDAP подключения с активной синхронизацией групп необходимо заполнить обязательные поля:

  • GroupDN - DN сервера LDAP для поиска групп
  • Атрибут id пользователя - атрибут, указывающий на id члена группы
  • Атрибут имени группы - атрибуты, указывающий на название группы
  • Атрибут для поиска членов группы - атрибут группы, в котором перечисляются все id ее членов

Для более гибкой настройки синхронизации групп можно воспользоваться необязательными фильтрами:

  • Фильтры для поиска групп - фильтр, конкретизирующий поиск групп

Настройка синхронизации LDAP групп

Применение синхронизации LDAP групп

После настройки LDAP подключения, с указанием всех необходимых параметров для синхронизации групп, для администраторов команд и компаний станет доступна вкладка Синхронизация LDAP.

Группы, указанные в настройках LDAP подключения, появляются в GitFlic не сразу - встроенный механизм обновляет информацию о них раз в час. Кнопка Синхронизировать группы LDAP позволяет избежать ожидания. При нажатии на нее происходит синхронизация и актуальная информация о группах LDAP становится доступна в GitFlic. Поэтому начинать любое взаимодействие с функционалом синхронизации групп рекомендуется именно с нажатия на данную кнопку.

Селектор LDAP сервера позволяет выбрать конкретное подключение, группы которого необходимо добавить в команду или компанию. Есть два метода синхронизации:

После выбора группы одним из методов, необходимо выбрать роль, которую получат все пользователи в указанной группе при ее синхронизации с командой или компании.

Для добавление пользователей выбранной группы в приватные проекты команды или компании, в которую происходит синхронизация, необходимо активировать переключатель Добавить синхронизированных пользователей в приватные проекты команды. Пользователи будут добавлены с такой же ролью, с которой синхронизируется их роль.

После нажатия на кнопку Добавить группа попадает в раздел Активные синхронизации. После добавления достаточного числа групп необходимо нажать на кнопку Синхронизировать, после чего все участники групп, получат указанные роли в команде или компании.

  • Если пользователь присутствует в нескольких группах, то при синхронизации ему будет присвоена самая старшая роль.

    Например, пользователь присутствует в group1, которая добавлена на синхронизацию с ролью Гость и в group2, добавленной на синхронизацию с ролью Разработчик. Тогда, после нажатия кнопку Синхронизировать, этот пользователь получит роль Разработчик в команде или в компании, в которой осуществляется синхронизация.

  • Если синхронизация осуществляется в сущности, которая находится во владении компании или команды, то при синхронизации пользователь будет добавлен в вышестоящую компанию с ролью Гость.

    Например, синхронизация осуществляется в подгруппе. Тогда, при синхронизации, пользователь будет добавлен в компанию, которая является родительской для команды, в рамках которой создана данная подгруппа.

  • Перед синхронизацией групп необходимо произвести вход под учетной записью LDAP пользователя для создания профиля в GitFlic.

Применение синхронизации LDAP групп

Управление синхронизированными пользователями

Пользователи, которые добавлены в команду или компанию, с помощью синхронизации групп, заблокированы для изменений в разделе Управление доступом. Для изменения роли или удаления таких пользователей необходимо снять блокировку с помощью кнопки в виде замка. После повторной синхронизации, роли этих пользователей не будут изменены.

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