GitLab

Навигатор по разделу:

1. Общие сведения

Avanpost IDM позволяет автоматизировать управление учётными записями и правами доступа пользователей в подключенной системе управления репозиториями GitLab через API веб-сервера.

Коннектор "GitLab.ProvisioningConnector", представляющий из себя библиотеку dll, устанавливается на сервере Avanpost IDM. С помощью коннектора создается подключение к системе управления репозиториями GitLab. Взаимодействие IDM с управляемой системой осуществляется в одностороннем порядке:

  1. Avanpost IDM инициирует запрос;
  2. GitLab исполняет запрос и возвращает результат исполнения запроса.

Примечание:

Подробнее о настройке ресурсов управляемых систем см. статью "6.1.4. Настройка интеграции с целевыми системами" руководства по администрированию.

2. Поддерживаемые функции

Коннектор Avanpost IDM к системе управления репозиториями GitLab обладает следующими функциональными возможностями:

1. Управление УЗ пользователей:

  • Создание УЗ пользователя;
  • Изменение атрибутов УЗ пользователя;
  • Блокировка УЗ пользователя;
  • Разблокировка УЗ пользователя;
  • Удаление УЗ пользователя;
  • Получение атрибутов с генерируемыми значениями.

2. Управление доступом и мониторинг активности пользователей:

  • Включение УЗ пользователя в группы доступа;
  • Исключение УЗ пользователя из групп доступа;
  • Получение времени последнего входа пользователя.

3. Управление репозиториями:

  • Проверка наличия у пользователя прав на доступ к проектам, фрагментам и группам в GitLab;
  • Назначение и отзыв у пользователя прав на доступ к проектам, фрагментам и группам в GitLab;

3. Порядок установки и настройки подключения

Для установки подключения через коннектор "GitLab.ProvisioningConnector" к управляемой системе необходимо:

  1. Установить коннектор на сервере Avanpost IDM.
  2. Выпустить токен доступа в GitLab.
  3. Настроить ресурс для подключаемой управляемой системы в IDM.
  4. Проверить настроенную интеграцию.

4. Установка коннектора на сервере Avanpost IDM

Для установки коннектора на сервере Avanpost IDM необходимо поместить библиотеку коннектора "GitLab.ProvisioningConnector.dll" в директорию "/opt/avanpost/connectors" или на удаленный сервис коннекторов.

Примечание:

Подробнее о настройке удаленного сервиса коннекторов см. статью "5.4. Установка и настройка удаленного сервиса коннекторов Avanpost IDM" руководства по установке.

5. Выпуск токена доступа в GitLab

Для выпуска токена доступа в GitLab необходимо выполнить действия по инструкции: https://docs.gitlab.com/user/profile/personal_access_tokens/

       Внимание! 

  • Для выпуска токена доступа требуется учетная запись администратора GIT с правом выпуска токена. 
  • В разделе scopes необходимо выбрать "api".

6. Настройка интеграции в Avanpost IDM

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

Шаг 6.1. Создать и настроить ресурс для подключаемой управляемой системы в Avanpost IDM.

Для этого требуется:

  1. В разделе "Интеграции"→"Целевые системы" веб-интерфейса администратора Avanpost IDM нажать и выбрать "Ресурс" из списка.
  2. В открывшейся форме указать произвольное название ресурса.
  3. Нажать . Ресурс будет добавлен в список в разделе "Целевые системы".

    Рисунок – Создание ресурса

  4. Нажать на созданный ресурс в списке. Откроется форма с настройками ресурса.
  5. На вкладке "Атрибуты ресурса" требуется указать следующие атрибуты:
    АтрибутЗначение
    КаталогКаталог в иерархии, в котором находится ресурс. Для смены каталога выбрать из выпадающего списка требуемый каталог.
    НазваниеПроизвольное название ресурса.
    Библиотека коннекторов

    Выбрать из выпадающего списка библиотеку коннекторов "FreeIpa.ProvisioningConnector". 

    Строка подключения

     Формат строки подключения

    Параметры в строке подключения записываются последовательно с указанием передаваемых значений после знака равно (=). Разделителем между параметрами служит точка с запятой (;).

    Пример строки подключения
    url=http://gitlab.test/api/v4;base_dn=ou=public-wf,dc=tester,dc=domain;token=oy5Vz4szH-KMorUZdCfQ;

    Обязательные параметры строки подключения

    Параметр

    Описание

    urlАдрес к API сервера GitLab.
    baseDnБазовое DN для аутентификации, на основании которого формируется идентификатор внешнего пользователя (external_uid), соответствующий пользователю на LDAP-сервере.
    tokenТокен доступа. Подробнее см. раздел 5.Выпуск токена доступа в GitLab

    Опциональные параметры строки подключения

    Параметр

    Описание

    projects_limitЛимит создаваемых проектов для права "can_create_projects". Если пользователю назначено право can_create_projects=true, будет применяться лимит создаваемых проектов, который должен быть строго больше нуля. В противном случае создание проектов будет невозможно. По умолчанию значение лимита 100 000
    Ресурс включенОтметить чекбокс для активации ресурса в системе.
    Число потоков синхронизацииУказать число потоков синхронизации ресурса с Avanpost IDM. 
    Использовать ограничение потоков синхронизации для операций чтенияОтметить чекбокс для использования ограничения потоков синхронизации для операций чтения.
    Использовать как источник почтовых адресовОтметить чекбокс, если ресурс является источником почтовых адресов.
    Применение изменений прав к ресурсуВыбрать из выпадающего списка "Все назначаемые ролью" или "Только недостающие".

    Примечание:

    Подробнее о настройке ресурсов см. статью "6.1.4. Настройка интеграции с целевыми системами" руководства по администрированию.

Шаг 6.2. Добавить профиль для созданного ресурса.

Требуется добавить хотя бы один общий или необщий профиль (по инструкции 5.2.1. или 5.2.2.)

6.2.1. Создание общего профиля ресурсов

Для создания общего профиля необходимо:

  1. Перейти в раздел "Интеграции"→"Целевые системы"  в веб-интерфейсе администратора Системы.
  2. Нажать и выбрать из списка "Общий профиль".
  3. Заполнить атрибуты профиля в открывшейся форме (Таблица).
  4. Нажать .

6.2.2. Создание необщего профиля ресурсов

Для создания необщего профиля необходимо:

  1. Перейти в раздел "Интеграции"→"Целевые системы"  в веб-интерфейсе администратора Системы.
  2. Нажать  в строке ресурса, в котором требуется создать профиль, и выбрать из открывшегося списка "Добавить профиль".
  3. Заполнить атрибуты профиля в открывшейся форме (Таблица).
  4. Нажать .

Таблица - Атрибуты профиля.

АтрибутЗначение
НазваниеУказать произвольное название профиля.
Профиль-источник учётных данных

Заполнять, только если в поле "Источник имен учетных записей" выбран вариант "Другой профиль".

Выбрать из списка уже созданных профилей источник учётных данных пользователей. 

Чекбокс "Синхронизировать пароли с источником учётных данных"Включает синхронизацию паролей с источником учётных данных.
Чекбокс "При создании учётных записей генерировать пароль"Включает генерацию первоначального пароля при создании УЗ пользователя в ресурсе.
Чекбокс "Разрешить неуникальность учетных записей по владельцу"Разрешает одному пользователю иметь более одной УЗ в ресурсе.
Чекбокс "Разрешить восстановление пароля"Разрешает восстановление пароля для УЗ в ресурсе.
Источник имен учетных записей

Выбрать из списка источник имен учетных записей:

  • Скрипт – для указания скрипта генерации имен учетных записей.

  • Другой профиль – для выбора другого профиля в качестве источника имен учетных записей.

Возможен вариант создания новых учетных записей только вручную. В таком случае необходимо задать скрипт возвращающий ошибку на запрос генерации имени УЗ.

Сценарий генерации имён учётных записей

Данное поле доступно, только если в поле "Источник имен учетных записей" выбран вариант "Скрипт".

Задать сценарий генерации имен учетных записей на Python.

Кнопка открывает окно редактирования скрипта.

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

Примечание:

Подробнее о юнитах см. статью "5.1.8. Настройка типов объектов и юнитов" руководства по администрированию.

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

  • "Проверить на сотруднике"
  • "Проверить на юните"

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

После выбора одного из вариантов откроется окно со списком сотрудников или юнитов. Требуется выбрать объект в списке и нажать .
Во всплывающем окне будет указан результат отладочного запуска. В данном случае сгенерированное имя учетной записи.

Чекбокс "Отклонять возвращаемые имена для уже существующих учётных записей"

Данное поле доступно, только если в поле "Источник имен учетных записей" выбран вариант "Скрипт".

При отмеченном чекбоксе отклоняются возвращаемые скриптом имена УЗ, незарегистрированные в IDM, но существующие в ресурсе.

Примечание: По умолчанию существование или отсутствие УЗ в ресурсе не влияет на процесс назначения ролей.

Способ разрешения конфликтов

Данное поле доступно, только если в поле "Источник имен учетных записей" выбран вариант "Скрипт".

Выбрать из списка способ разрешения конфликтов при генерации имён УЗ:

  • Автоматический – по умолчанию к полученному имени прибавляется суффикс "_n" (n ϵ N), и используется первое незанятое имя (сценарий вызывается один раз и не участвует в разрешении конфликта).
  • Повторное выполнение – сценарий берёт на себя разрешение конфликтов, т.е. повторный вызов сценария должен вернуть следующий вариант имени.

Примечание: Номер попытки сохраняется в переменной Iteration, нумерация с 0.

Парольная политика

Выбрать из выпадающего списка одну из настроенных в IDM парольных политик.

Примечание:

Подробнее о настройке профилей ресурсов см. статью "6.1.4. Настройка интеграции с целевыми системами" руководства по администрированию.

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

Примечание:

Подробнее о работе с запланированными заданиями см. статью "6.1.9. Настройка запланированных заданий" руководства по администрированию.

7. Проверка настроенной интеграции

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

Шаг 7.1. Проверка подключения к системе управления репозиториями

Для проверки установки соединения с управляемой системой требуется:

  1. В веб-интерфейсе администратора Avanpost IDM открыть ресурс управляемой системы.
  2. На вкладке "Права" проверить доступные права для добавления. Должны быть доступны права: "Администрирование системы", "Создание групп", "Создание проектов" и права ну группы Git.

Если вышеуказанные права доступны для добавления, то подключение управляемой системы через коннектор выполнено корректно.

Шаг 7.2. Проверка обработки запросов

Чтобы убедиться в правильной обработке запросов коннектором, требуется открыть лог-файл, расположенный на сервере Avanpost IDM в папке коннектора, и проверить его на отсутствие ошибок.

8. Методы API коннектора

МетодПараметрыОписание
CreateSession
  • connectionString – формат строки подключения к ресурсу
Пример значения параметра
url=http://gitlab.test/api/v4;base_dn=ou=public-wf,dc=tester,dc=domain;token=oy5Vz4szH-KMorUZdCfQ;
Установка соединения, проверка возможности соединения с управляемой системой
RenameAccount
  • oldName – старое имя аккаунта пользователя
  • newName – новое имя аккаунта пользователя
Изменение имени аккаунта пользователя
CreateUser
  • user – учетная запись пользователя. Объект, включающий поля:
    • Id – идентификатор пользоватлея (строка)
    • Properties – коллекция объектов PropertyValue (набор пар ключ=значение)
      Пример пользователя в формате json
      {
        "Id":  "userId",
        "Properties": [
          {
            "PropertyId": "phone",
            "Value": "+7(999)879-45-32"
          }
        ]
      }
  • password – пароль для учетной записи
Создание учетной записи пользователя в системе
GetUser
  • userId – идентификатор пользователя (uid)
Получение имени УЗ и статуса пользователя. Если УЗ не существует, то метод возвращает null.
GetActiveUsers
Получение всех активных (включенных и незаблокированных) УЗ в ресурсе
GetAllProperties

Возвращение списка значимых атрибутов пользователей, вычисляемых на основе классов пользователей. Метод предоставляет атрибуты УЗ целевой системы для связи со свойствами УЗ в IDM посредством настройки шаблона учетных записей в профиле ресурса.

Примечание:

Подробнее о настройке шаблонов УЗ в профилях ресурсов см. статью "6.1.4. Настройка интеграции с целевыми системами" руководства по администрированию.

GetUserProperties
  • userId – идентификатор пользователя (uid)
  • propertyIds – непустой список идентификаторов свойств
Получение значений свойств УЗ
SetUserProperties
  • userId – идентификатор пользователя (uid)
Установка значений свойств в существующей УЗ
SetUserPassword
  • userId – идентификатор пользователя (uid)
  • password – новый пароль пользователя, отвечающий парольным политикам ресурса
Изменение пароля пользователя
ResetUserPassword
  • userId – идентификатор пользователя (uid)
Сброс пароля пользователя (будет выполнена смена пароля на случайно сгенерированный)
LockUser
  • userId – идентификатор пользователя (uid)
Блокировка учетной записи пользователя (выключение учетной записи пользователя)
UnlockUser
  • userId – идентификатор пользователя (uid)
Разблокировка учетной записи пользователя (включение учетной записи пользователя)
GetAllRights
Получение списка прав пользователей в управляемой системе
GetUserRights
  • userId – идентификатор пользователя (uid)
Получение прав УЗ в управляемой системе
AddUserRights
  • userId – идентификатор пользователя (uid)
  • rightIds – непустой список идентификаторов 
Добавление права пользователю
DropUserRights
  • userId – идентификатор пользователя (uid)
  • rightIds – непустой список идентификаторов прав пользователя
Изъятие прав у пользователя
GetRightIdByName
  • name – имя права
Получение идентификатора права по его имени
SearchRights
  • searchString – имя права пользователя в Gitlab. Поиск осуществляется по полному имени или части имени
Поиск права по имени

Обсуждение