Настройка сопоставления организаций для SAML

Сопоставление организаций позволяет назначать пользователей конкретной организации в Grafana в зависимости от значения атрибута, полученного от провайдера идентификации.

  1. В файле конфигурации установите assertion_attribute_org в имя атрибута, в котором вы храните информацию об организации. Этот атрибут может быть массивом, если вы хотите, чтобы пользователь состоял в нескольких организациях.
  2. Установите параметр org_mapping в список пар Organization:OrgId, разделённых запятыми, чтобы сопоставить организацию из IdP с организацией Grafana, указанной по ID. Если вы хотите, чтобы пользователи имели разные роли в нескольких организациях, вы можете установить этот параметр в список сопоставлений Organization:OrgId:Role, разделённых запятыми.

Например, используйте следующую конфигурацию, чтобы назначить пользователей из организации Engineering организации Grafana с ID 2 как Editor, а пользователей из Sales — организации с ID 3 как Admin, на основе значения атрибута утверждения Org:

ini
[auth.saml]
assertion_attribute_org = Org
org_mapping = Engineering:2:Editor, Sales:3:Admin

Warning

Параметр org_mapping хранит сопоставления в базе данных как JSON. Ограничения размера зависят от вашей базы данных. В MySQL до Grafana 12.3 ограничение составляет 65 535 байт. Начиная с Grafana 12.3 столбец использует MEDIUMTEXT, что повышает ограничение MySQL до 16 777 215 байт (~16 МБ). Если вам нужно разделить пользователей для более гранулярного контроля, мы предлагаем вместо этого использовать Синхронизацию ролей и команд.

Начиная с версии Grafana 11.5 вы можете использовать имя организации вместо ID организации в параметре org_mapping. Убедитесь, что настроенное вами имя организации точно совпадает с именем организации в Grafana, так как оно учитывает регистр. Если имя организации не найдено в Grafana, сопоставление будет проигнорировано. Если внешняя организация или имя организации содержат пробелы, используйте синтаксис JSON для параметра org_mapping:

ini
org_mapping = ["Org 1:2:Editor", "ExternalOrg:ACME Corp.:Admin"]

Если одно из сопоставлений содержит :, используйте синтаксис JSON и экранируйте : обратной косой чертой:

ini
# Assign users from "External:Admin" to the organization with name "ACME Corp" as Admin
org_mapping = ["External\:Admin:ACME Corp:Admin"]

Например, чтобы назначить пользователей из организации Engineering организации Grafana с именем ACME Corp как Editor, а пользователей из Sales — организации с ID 3 как Admin, на основе значения атрибута утверждения Org:

ini
[auth.saml]
assertion_attribute_org = Org
org_mapping = ["Engineering:ACME Corp:Editor", "Sales:3:Admin"]

Вы можете указать несколько организаций как для IdP, так и для Grafana:

  • org_mapping = Engineering:2, Sales:2, чтобы сопоставить пользователей из Engineering и Sales с 2 в Grafana.
  • org_mapping = Engineering:2, Engineering:3, чтобы назначить Engineering как 2, так и 3 в Grafana.

Вы можете использовать * в качестве организации SAML, если хотите, чтобы все ваши пользователи были в некоторых организациях Grafana с ролью по умолчанию:

  • org_mapping = *:2:Editor, чтобы сопоставить всех пользователей с организацией, ID которой 2 в Grafana, как Editors.

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

  • org_mapping = Engineering:*, чтобы сопоставить пользователей из Engineering со всеми существующими организациями Grafana.
  • org_mapping = Administration:*:Admin, чтобы сопоставить пользователей из Administration со всеми существующими организациями Grafana как Admins.