Интеграция DevOps (Gitea+Concourse) стека с FreeIPA

Оцените статью

По старой схеме продолжаем проект по миграции на отечественное ПО, а именно на RedOS и сегодня настроим интеграцию Gitea и Concourse c доменом FreeIPA.

Настройки Gitea для авторизации при помощи учетных данных FreeIPA

Аналогично предыдущим интеграциям созданы сервисный пользователь _devops и группы _devops_allow и _devops_admin первая группа члены которой являются пользователи, а члены второй соответственно администраторы.

Переходим в Панель управления -> Аутентификация и создаём новый источник аутентификации типа LDAP (via BindDN).

Источник аутентификации типа LDAP (via BindDN).

Задаём параметры подключения к FreeIPA домену и я предоставляю параметры применительно к моему домену, а вы естественно адаптируйте под себя.

  • Тип аутентификации — LDAP (via BindDN)
  • Имя аутентификации — RAIN_LDAP
  • Протокол безопасности — Unencrypted
  • Сервер — srv-kvm-prod-rain-01.rain.shiskitech.ru
  • Порт — 389
  • Bind DN — uid=_devops,cn=users,cn=accounts,dc=rain,dc=shiskitech,dc=ru
  • Привязать пароль — пароль пользователя
  • База для поиска пользователя — cn=users,cn=accounts,dc=rain,dc=shiskitech,dc=ru
  • Фильтр пользователя — (&(objectclass=person)(uid=%s)(memberOf=cn=_devops_allow,cn=groups,cn=accounts,dc=rain,dc=shiskitech,dc=ru)(objectClass=top)(!(nsaccountlock=True)))
  • Фильтр администратора — (&(objectclass=person)(uid=*)(memberOf=cn=_devops_admin,cn=groups,cn=accounts,dc=rain,dc=shiskitech,dc=ru))(objectClass=top)(!(nsaccountlock=True)))
  • Ограниченный фильтр — Пустое значение
  • Атрибут Username — uid
  • Атрибут First Name — givenName
  • Атрибут Surname — sn
  • Атрибут электронной почты — mail
  • Атрибут Открытый ключ SSH — ipaSshPubKey

Дополнительно устанавливаем параметр «Извлекать атрибуты в контексте Bind DN». Так же обратите внимание на фильтры администратора и пользователя.

Дополнительные параметры логирования для отладки.

[log]
MODE = console,file
# LEVEL = info
LEVEL = trace
# LEVEL = debug
ROOT_PATH = /opt/gitea/log

[log.file]
FILE_NAME = /opt/gitea/log/gitea.log

Обратите внимание, что поля email и ipaSshPubKey должны быть уникальными для пользователей и если при не уникальности поля email пользователь просто не сможет войти в Gitea, то при не уникальности ipaSshPubKey пользователю не будет добавлен ключ.

Обязательно используйте отладку на этапе настройки интеграции и вы сможете диагностировать все спорные ситуации.

Настройки Concourse для авторизации при помощи учетных данных FreeIPA (Oauth2)

Для Concourse будем использовать Oauth2 через Keycloak цепочка конечно получается интересная, но главное, что рабочая. Про настройку realm в keycloak я уже не один один раз писал и тут повторяться не будем можно посмотреть например в статье «Авторизация в Wiki Outline при помощи Keycloak«.

Путем проб и ошибок пришел к такой конфигурации.

CONCOURSE_OAUTH_DISPLAY_NAME=oauth
CONCOURSE_OAUTH_CLIENT_ID=concourse
CONCOURSE_OAUTH_CLIENT_SECRET=xxxSECRETxxx
CONCOURSE_OAUTH_AUTH_URL=https://kc.interlan.xyz/realms/concourse/protocol/openid-connect/auth
CONCOURSE_OAUTH_TOKEN_URL=https://kc.interlan.xyz/realms/concourse/protocol/openid-connect/token
CONCOURSE_OAUTH_USERINFO_URL=https://kc.interlan.xyz/realms/concourse/protocol/openid-connect/userinfo

CONCOURSE_OAUTH_SCOPES=openid,profile,email
CONCOURSE_OAUTH_USERNAME_KEY=preferred_username
CONCOURSE_OAUTH_DISPLAY_NAME_KEY=name

CONCOURSE_MAIN_TEAM_OAUTH_USER=administrator
CONCOURSE_MAIN_TEAM_OAUTH_GROUP=concourse-admins

Настройки Concourse для авторизации при помощи учетных данных FreeIPA (LDAP)

Вообще Concourse поддерживает много механизмов авторизации и пытаться настроить их все смысла не имеет, но давайте еще для примера рассмотрим пример с классическим LDAP и пока на этом закончим.

CONCOURSE_LDAP_DISPLAY_NAME='FreeIPA Auth'
CONCOURSE_LDAP_HOST=srv-kvm-prod-rain-01.rain.shiskitech.ru
CONCOURSE_LDAP_INSECURE_NO_SSL=true
CONCOURSE_LDAP_USER_SEARCH_FILTER='(&(objectclass=person)(uid=*)(memberOf=cn=_devops_allow,cn=groups,cn=accounts,dc=rain,dc=shiskitech,dc=ru)(objectClass=top)(!(nsaccountlock=True)))'
CONCOURSE_LDAP_BIND_DN='uid=_devops,cn=users,cn=accounts,dc=rain,dc=shiskitech,dc=ru'
CONCOURSE_LDAP_BIND_PW=qAlYFhQk4X
CONCOURSE_LDAP_USER_SEARCH_BASE_DN='cn=users,cn=accounts,dc=rain,dc=shiskitech,dc=ru'
CONCOURSE_LDAP_USER_SEARCH_SCOPE=sub
CONCOURSE_LDAP_USER_SEARCH_ID_ATTR=uid
CONCOURSE_LDAP_USER_SEARCH_EMAIL_ATTR=mail
CONCOURSE_LDAP_USER_SEARCH_USERNAME='uid'

Похожие записи

Настройка взаимодействия RED ADM и Windows Active Directory

Сегодня проведем несколько экспериментов по настройке взаимодействия RED ADM и Windows Active Directory. Есть несколько способов настройки доверия для упрощения миграции с решений Microsoft на Российское ПО и сегодня их…

Подробная инструкция по написанию YAML‑файлов для Docker Compose

Так как на севере делать абсолютно нечего, то я продолжаю заниматься саморазвитием 🙂 На этой неделе вспоминаю и углубляю свои знания в Docker. Лучший способ запомнить тему, это вести конспект…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Настройка взаимодействия RED ADM и Windows Active Directory

Настройка взаимодействия RED ADM и Windows Active Directory

Подробная инструкция по написанию YAML‑файлов для Docker Compose

Подробная инструкция по написанию YAML‑файлов для Docker Compose

Установка основного контроллера домена на базе REDADM

Установка основного контроллера домена на базе REDADM

zVirt работа с шаблонами виртуальных машин

zVirt работа с шаблонами виртуальных машин

Подробная инструкция по работе с томами (volumes) в Docker

Подробная инструкция по работе с томами (volumes) в Docker

Сетевые возможности Docker

Сетевые возможности Docker