Интеграция 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'

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

Интеграция Grafana и FreeIPA (авторизация при помощи учетных данных IPA-домена)

Продолжаю настраивать интеграцию сервисов и FreeIPA и аналогично Zabbix настроим авторизацию Grafana при помощи учетных данных IPA-домена. Учетную запись и группу для ограничения доступа будем использовать аналогично использовавшейся в заметке…

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

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

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

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

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

Шпаргалка по основным командам консоли Ubuntu Linux

Шпаргалка по основным командам консоли Ubuntu Linux

Интеграция Grafana и FreeIPA (авторизация при помощи учетных данных IPA-домена)

Интеграция Grafana и FreeIPA (авторизация при помощи учетных данных IPA-домена)

Linux синхронизация времени (Установка настройка и диагностика chrony)

Linux синхронизация времени (Установка настройка и диагностика chrony)

Интеграция Zabbix и FreeIPA (авторизация пользователей домена)

Интеграция Zabbix и FreeIPA (авторизация пользователей домена)

Собираем корпоративный AI-чат: от выбора модели до работающего прототипа

Собираем корпоративный AI-чат: от выбора модели до работающего прототипа