Аутентификация GitLab SAML группы не работают как ожидалось.

Вопрос или проблема

Я настроил 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 для дальнейшего анализа сложившейся ситуации.

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

Капча загружается...