Вопрос или проблема
Я настроил GitLab для работы с моим Authentik SSO:
gitlab_rails['omniauth_providers'] = [
{
name: 'saml',
label: 'Company SSO',
groups_attribute: 'Groups',
required_groups: ['gitlab_users'],
admin_groups: ['gitlab_admins'],
external_groups: ['gitlab_externals'],
auditor_groups: ['gitlab_auditors'],
},
}
]
Я определил некоторые группы в Authentik и сопоставил их с GitLab в конфигурации. Если я пытаюсь войти в GitLab с пользователем, который не состоит в группе, доступ отклоняется, как и ожидалось. Если я устанавливаю группу пользователя, я могу войти. Когда я снова удаляю пользователя и назначаю ему группу администраторов, я также могу войти, но не вижу никаких административных контролей. Я что-то упустил?
Я следовал этому учебнику: https://docs.gitlab.com/ee/integration/saml.html
Ответ или решение
Настройка GitLab для работы с одноразовой системой аутентификации (SSO) на базе SAML через Authentik может быть сложным процессом. В вашем случае проблема заключается в том, что группы, назначаемые через Authentik, не дают ожидаемых разрешений в GitLab. Давайте подробно разберёмся в проблеме и предложим возможные решения.
Теория
SAML (Security Assertion Markup Language) — это открытый стандарт для обмена данными об аутентификации и авторизации между сторонними удостоверяющими центрами (IdP) и поставщиками услуг (SP), такими как GitLab. Важным аспектом SAML является возможность передачи атрибутов пользователя, одного из которых и являются группы.
Когда вы интегрируете GitLab с Authentik, вы назначаете группы через атрибуты SAML, такие как groups_attribute
, required_groups
, admin_groups
и так далее. Это позволяет GitLab на основе информации об группах, предоставляемой IdP, решать, какими правами обладает пользователь.
Пример
На вашем объекте конфигурации видны следующие записи:
gitlab_rails['omniauth_providers'] = [
{
name: 'saml',
label: 'Company SSO',
groups_attribute: 'Groups',
required_groups: ['gitlab_users'],
admin_groups: ['gitlab_admins'],
external_groups: ['gitlab_externals'],
auditor_groups: ['gitlab_auditors'],
},
}
]
Применение
1. Проверка соответствия атрибутов
Убедитесь, что атрибут groups_attribute
действительно передаёт необходимые данные в GitLab. В вашем случае, это атрибут 'Groups'
. Проверьте, что Authentik отправляет корректные данные в атрибуте SAML. Это можно сделать через инструменты диагностики SAML, доступные в панели управления Authentik.
2. Проверка настроек Authentik
Откройте настройки Authentik и убедитесь, что в конфигурации вашей SSO-системы правильно настроены группы. Группы gitlab_admins
, gitlab_users
, gitlab_externals
и gitlab_auditors
должны существовать и быть привязаны к соответствующим ролям в вашей системе.
3. Проверка журнала и отчётов
Воспользуйтесь журналами и средствами логирования как в Authentik, так и в GitLab, чтобы выявить, передаются ли данные о группах и как они обрабатываются на стороне GitLab. В журналах вы можете найти ключи, которые помогут понять, передаются ли атрибуты корректно и обрабатываются ли они GitLab.
4. Обновление и кэширование
Иногда изменения в конфигурации могут не сразу отображаться из-за кэширования. Убедитесь, что GitLab перезапущен после внесения изменений, и попробуйте очистить кэш. Это можно сделать выполнением команды:
gitlab-ctl restart
или
gitlab-rake cache:clear
5. Проверка GitLab Roles
В GitLab существует деление на роли: Reporter, Developer, Maintainer, Owner и Administrator. Убедитесь, что роль, которая назначена группе gitlab_admins
, обладает правами администратора. Проверка на уровне самой группы в GitLab может выявить, обладает ли пользователь всеми необходимыми разрешениями.
6. Тестирование с новым пользователем
Создайте совершенно нового пользователя в Authentik, назначьте ему группу gitlab_admins
и попробуйте заново протестировать аутентификацию. Это позволит исключить проблему с кэшированием или остальными временными данными предыдущих пользователей.
Заключение
Настройка SSO интеграции через SAML требует учёта многих деталей. Очень важно, чтобы передаваемая IdP информация соответствовала ожидаемой на стороне GitLab. Полнота и корректность настроек как в Authentik, так и в конфигурации GitLab — необходимое условие для работы групп и сопутствующих прав пользователей. Если после выполнения всех указанных шагов проблема остаётся нерешённой, может потребоваться обращение в техническую поддержку GitLab или Authentik для дальнейшего анализа сложившейся ситуации.