Управление пользователями и командами с помощью SCIM

Note

Доступно в Grafana Enterprise и Grafana Cloud.

SCIM упрощает управление идентификацией в Grafana, автоматизируя операции жизненного цикла пользователей и членства в командах. В этом руководстве объясняется, как SCIM работает с существующими конфигурациями Grafana, обрабатывает провижининг пользователей и управляет синхронизацией команд.

С SCIM вы можете:

  • Автоматизировать жизненный цикл пользователей от создания до деактивации
  • Управлять существующими пользователями, связывая их с идентичностями провайдера идентификации
  • Автоматизировать жизненный цикл команд, автоматически создавая команды при добавлении групп, обновляя членство в командах и удаляя команды при удалении групп
  • Поддерживать безопасность через автоматизированный депровижининг
  • Заменить синхронизацию команд более надёжной синхронизацией групп SCIM

Провижининг пользователей с SCIM

Провижининг SCIM работает в сочетании с существующими методами управления пользователями в Grafana. Хотя SCIM автоматизирует провижининг пользователей от провайдера идентификации, пользователи всё ещё могут создаваться через JIT-провижининг SAML при входе, вручную через интерфейс Grafana или через инструменты автоматизации, такие как Terraform и Grafana API. Для наиболее согласованного опыта управления пользователями мы рекомендуем централизовать провижининг пользователей через SCIM.

Note

Провижининг пользователей требует user_sync_enabled = true в конфигурации SCIM. Дополнительную информацию см. в разделе Настройка SCIM в Grafana.

Warning

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

Подробные шаги настройки, специфичные для провайдера идентификации, см.:

Как SCIM идентифицирует пользователей

SCIM использует определённый процесс для установления и поддержания идентичности пользователей между провайдером идентификации и Grafana:

  1. Первоначальный поиск пользователя:

    • Администратор настраивает SCIM у провайдера идентификации, определяя поле уникального идентификатора
    • Провайдер идентификации ищет каждого пользователя в Grafana, используя это поле уникального идентификатора в качестве фильтра
    • Провайдер идентификации ожидает единственный результат от Grafana для каждого пользователя
  2. Связывание идентичностей на основе результатов поиска:

    • Если есть единственный совпадающий результат: провайдер идентификации получает уникальный ID пользователя в Grafana, сохраняет его, подтверждает, что может получить информацию о пользователе, и обновляет информацию о пользователе в Grafana
    • Если совпадающих результатов нет: провайдер идентификации пытается создать пользователя в Grafana. В случае успеха он получает и сохраняет уникальный ID пользователя для будущих операций. Если пользователь с тем же адресом электронной почты уже существует в Grafana, пользователь обновляется и с этого момента будет управляться SCIM.
    • Провайдер идентификации узнаёт связь между найденным пользователем Grafana и внутренним ID Grafana
    • Провайдер идентификации обновляет Grafana с External ID
    • Grafana обновляет проверки аутентификации, чтобы ожидать этот External ID
  3. Сопоставление пользователя при входе: Когда пользователь входит через SAML, Grafana должна безопасно сопоставить его с правильной учётной записью пользователя, провижиненной через SCIM. Это требует использования согласованного уникального идентификатора в обоих процессах (например, objectId пользователя в Entra ID).

    • Настройте утверждения SAML: настройте ваш провайдер идентификации (например, Entra ID) так, чтобы он включал этот уникальный идентификатор в информацию, отправляемую во время входа SAML.
    • Настройте Grafana SAML: в настройках SAML Grafana используйте параметр assertion_attribute_login, чтобы указать, какой входящий атрибут SAML содержит этот уникальный идентификатор.
    • Настройте сопоставление SCIM: чтобы завершить связь, убедитесь, что ваше сопоставление атрибутов SCIM в провайдере идентификации устанавливает атрибут externalId пользователя Grafana в значение того же уникального идентификатора, предоставленного через SAML (например, objectId пользователя в Entra ID).
    • См. Сведения о конфигурации SAML для конкретных рекомендаций по настройке.

Этот процесс обеспечивает безопасную и согласованную идентификацию пользователей в обеих системах, предотвращая проблемы безопасности, которые могли бы возникнуть из-за изменений адреса электронной почты или других изменений атрибутов пользователя.

Note

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

Существующие пользователи Grafana

Для пользователей, которые уже существуют в экземпляре Grafana:

  • SCIM устанавливает связь через процесс сопоставления External ID
  • Создаёт безопасную связь с идентичностью провайдера идентификации
  • Сохраняет все существующие настройки и доступ
  • Оставляет учётную запись активной и неизменной до тех пор, пока она не будет назначена в провайдере идентификации

Обработка пользователей из других методов провижининга

Чтобы предотвратить конфликты и поддерживать согласованное управление пользователями, отключите или ограничьте другие методы провижининга при внедрении SCIM. Это гарантирует, что все новые пользователи создаются через SCIM, и предотвращает дублирующиеся или конфликтующие записи пользователей.

  • Провижининг SAML Just-in-Time (JIT):

    • Отключите allow_sign_up в настройках SAML, чтобы предотвратить автоматическое создание пользователей
    • Существующие JIT-провижиненные пользователи продолжат работать, но их следует мигрировать на SCIM
  • Провижининг Terraform или API:

    • Прекратите создание новых пользователей с помощью этих методов
    • Существующие пользователи продолжат работать, но их следует мигрировать на SCIM
    • Рассмотрите возможность удаления или архивирования ресурсов создания пользователей Terraform
  • Ручное создание пользователей:

    • Ограничьте создание пользователей через интерфейс только администраторами
    • Запланируйте миграцию вручную созданных пользователей на SCIM

Новые пользователи

Для пользователей, которые ещё не существуют в Grafana:

  • SCIM создаёт учётные записи, когда пользователи назначаются Grafana в провайдере идентификации
  • Настраивает начальный доступ на основе членства в группах провайдера идентификации и сопоставления ролей SAML
  • Ручное создание учётной записи Grafana не требуется

Управление ролями

SCIM обрабатывает синхронизацию пользователей, но не назначение ролей. Управление ролями обрабатывается через Синхронизацию ролей, и любые изменения ролей вступают в силу во время аутентификации пользователя.

Миграция существующих пользователей на провижининг SCIM

Если у вас есть существующий экземпляр Grafana с вручную созданными пользователями и вы хотите перейти на провижининг SCIM на основе IDP, вы можете использовать механизм идентификации SCIM, чтобы бесшовно связать существующих пользователей с их идентичностями IDP.

Обзор миграции

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

Ключевые преимущества этого подхода:

  • Сохраняет все существующие настройки пользователей, дашборды и разрешения
  • Отсутствие нарушений в доступе пользователей во время миграции
  • Возможна постепенная миграция (пользователи могут быть мигрированы партиями)
  • Сохраняет журналы аудита и исторические данные

Шаги миграции

  1. Подготовьте провайдер идентификации:

    • Убедитесь, что у всех существующих пользователей Grafana есть соответствующие учётные записи в вашем IDP
    • Проверьте, что поле уникального идентификатора (например, email, username или object ID) совпадает между системами
    • Настройте приложение SCIM в вашем IDP, но пока не назначайте пользователей
  2. Настройте SCIM в Grafana:

    • Настройте конечную точку SCIM и аутентификацию, как описано в разделе Настройка SCIM в Grafana
    • Включите user_sync_enabled = true
    • Настройте поле уникального идентификатора в соответствии с вашей конфигурацией IDP

Note

Чтобы ограничить доступ для входа только пользователями, провижиненными через SCIM, включите параметр [auth.scim][reject_non_provisioned_users]. Пользователи Cloud Portal всегда могут войти независимо от этой настройки.

ini
[auth.scim]
reject_non_provisioned_users = true
  1. Протестируйте механизм сопоставления:

    • Используйте API SCIM, чтобы убедиться, что существующие пользователи могут быть найдены с помощью уникального идентификатора:
    Bash
    curl --location 'https://{$GRAFANA_URL}/apis/scim.grafana.app/v0alpha1/namespaces/{$STACK_ID}/Users?filter=userName eq "existing.user@company.com"' \
    --header 'Authorization: Bearer glsa_xxxxxxxxxxxxxxxxxxxxxxxx'
    • Это должно вернуть ровно одну запись пользователя для каждого существующего пользователя
  2. Назначьте пользователей в IDP:

    • Начните назначать существующих пользователей приложению Grafana в вашем IDP
    • Процесс идентификации SCIM автоматически свяжет существующих пользователей Grafana с их идентичностями IDP
    • Отслеживайте процесс на предмет любых конфликтов или ошибок
  3. Проверьте миграцию:

    • Проверьте, что пользователи по-прежнему могут получить доступ к Grafana со своими существующими разрешениями
    • Проверьте, что вход SAML/SSO работает корректно для мигрированных пользователей
    • Убедитесь, что External ID правильно задан для каждого мигрированного пользователя

Соображения по миграции

До миграции:

  • Сделайте резервную копию вашей базы данных Grafana — всегда имейте план восстановления
  • Проведите аудит существующих пользователей — задокументируйте текущие учётные записи пользователей и их уровни доступа
  • Запланируйте исключения — некоторым пользователям может потребоваться ручное вмешательство, если уникальные идентификаторы не совпадают

Во время миграции:

  • Отслеживайте логи — следите за ошибками или конфликтами SCIM во время процесса связывания в Grafana и вашем провайдере идентификации
  • Пакетная обработка — рассмотрите миграцию пользователей небольшими партиями, чтобы выявлять проблемы на раннем этапе
  • Коммуникация — информируйте пользователей о сроках миграции и любых требуемых действиях

После миграции:

  • Отключите ручной провижининг — предотвратите создание новых пользователей вне SCIM
  • Обновите документацию — убедитесь, что процедуры команды отражают новый рабочий процесс на основе IDP
  • Регулярные аудиты — периодически проверяйте, что пользователи IDP и Grafana остаются синхронизированными

Устранение неполадок миграции

Найдено несколько пользователей для уникального идентификатора:

  • Проверьте конфигурацию поля уникального идентификатора
  • Проверьте наличие дублирующихся учётных записей в Grafana или IDP
  • Рассмотрите возможность использования более конкретного идентификатора (например, object ID вместо email)

Пользователь не найден во время поиска:

  • Проверьте, что значение уникального идентификатора точно совпадает между системами
  • Проверьте, что пользователь существует как в Grafana, так и в IDP

Сбои аутентификации после миграции:

  • Убедитесь, что утверждение SAML assertion_attribute_external_uid включает правильный уникальный идентификатор
  • Проверьте, что ваша конфигурация SAML использует один и тот же уникальный идентификатор как для SCIM, так и для аутентификации SAML

Провижининг команд с SCIM

SCIM предоставляет возможности автоматизированного управления командами, которые выходят за рамки того, что предлагает синхронизация команд. В то время как синхронизация команд только сопоставляет группы провайдера идентификации с существующими командами Grafana, SCIM может автоматически создавать и удалять команды на основе изменений групп в провайдере идентификации.

Note

Провижининг команд требует group_sync_enabled = true в конфигурации SCIM. Дополнительную информацию см. в разделе Настройка SCIM в Grafana.

Warning

Команды, провижиненные через SCIM, нельзя удалить вручную из Grafana — их можно удалить только путём удаления соответствующих групп из провайдера идентификации. При желании вы можете отключить синхронизацию групп SCIM, чтобы разрешить ручное удаление команд.

Подробные шаги настройки, специфичные для провайдера идентификации, см.:

SCIM против синхронизации команд

Warning

Не включайте одновременно синхронизацию групп SCIM и синхронизацию команд, так как эти методы могут конфликтовать друг с другом. Однако вы можете использовать SCIM для провижининга пользователей, сохраняя синхронизацию команд для управления командами до появления поддержки миграции.

Выберите один метод синхронизации команд:

  • Если вы включаете синхронизацию групп SCIM, отключите синхронизацию команд и используйте SCIM для управления командами
  • Если вы предпочитаете синхронизацию команд, не включайте синхронизацию групп SCIM

Warning

Миграция с синхронизации команд: поддержка миграции с синхронизации команд на синхронизацию групп SCIM появится в ближайшее время. До выпуска этой поддержки мы рекомендуем сохранить вашу существующую конфигурацию синхронизации команд для управления командами. Вы всё ещё можете пользоваться возможностями провижининга пользователей SCIM, используя синхронизацию команд для управления командами.

Ключевые различия

Синхронизация групп SCIM предоставляет несколько преимуществ по сравнению с синхронизацией команд:

  • Автоматическое создание команд: SCIM автоматически создаёт команды Grafana, когда новые группы добавляются в провайдер идентификации
  • Автоматическое удаление команд: SCIM удаляет команды, когда их соответствующие группы удаляются из провайдера идентификации
  • Обновления в реальном времени: членство в командах обновляется немедленно при изменении назначений групп
  • Упрощённое управление: нет необходимости вручную создавать команды в Grafana перед их сопоставлением

Как работает синхронизация команд

SCIM управляет командами через следующий процесс:

Назначение групп:

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

Создание и сопоставление команд:

  • Создаёт команды Grafana для новых групп провайдера идентификации
  • Сопоставляет пользователей с соответствующими командами
  • Удаляет пользователей из команд при изменении членства в группах

Поддержание членства в командах:

  • Непрерывно синхронизирует членство в командах
  • Удаляет пользователей из команд при удалении из групп
  • Обновляет членство в командах при изменении групп

Дальнейшие шаги