Настройка синхронизации команд для SAML

Note

Доступно в Grafana Enterprise и для клиентов на отдельных планах Grafana Cloud. Информацию о ценах см. на странице цены или свяжитесь с нашей командой продаж.

Чтобы использовать синхронизацию команд SAML, установите assertion_attribute_groups в имя атрибута, где вы храните группы пользователей. Затем Grafana будет использовать значения атрибутов, извлечённые из утверждения SAML, чтобы добавлять пользователя в группы с тем же именем, настроенные на вкладке External group sync.

Warning

Grafana требует, чтобы атрибут групп SAML был настроен с отдельными элементами AttributeValue для каждой группы. Не включайте несколько групп в один AttributeValue, разделённых запятой или любым другим символом. Несоблюдение этого приведёт к невозможности правильного разбора групп. Пример:

xml
<saml2:Attribute ...>
    <saml2:AttributeValue ...>admins_group</saml2:AttributeValue>
    <saml2:AttributeValue ...>division_1</saml2:AttributeValue>
</saml2:Attribute>

Note

Синхронизация команд позволяет синхронизировать пользователей из SAML с командами Grafana. Она не создаёт команды в Grafana автоматически. Вам нужно создать команды в Grafana, прежде чем вы сможете использовать эту функцию.

Учитывая следующее частичное утверждение SAML:

xml
<saml2:Attribute
    Name="groups"
    NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
    <saml2:AttributeValue
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:type="xs:string">admins_group
    </saml2:AttributeValue>
    <saml2:AttributeValue
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:type="xs:string">division_1
    </saml2:AttributeValue>
</saml2:Attribute>

Конфигурация будет выглядеть так:

ini
[auth.saml]
# ...
assertion_attribute_groups = groups

Следующие External Group ID будут допустимы для ввода на вкладке External group sync нужной команды:

  • admins_group
  • division_1

Узнать больше о синхронизации команд

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

Синхронизация ролей позволяет сопоставлять роли пользователей от провайдера идентификации с Grafana. Чтобы включить синхронизацию ролей, настройте атрибут роли и возможные значения для ролей Editor, Admin и Grafana Admin. Дополнительную информацию о ролях пользователей см. в разделе Роли и разрешения.

  1. В файле конфигурации установите параметр assertion_attribute_role в имя атрибута, из которого будет извлекаться информация о роли.
  2. Установите параметр role_values_none в значения, сопоставленные с ролью None.
  3. Установите параметр role_values_viewer в значения, сопоставленные с ролью Viewer.
  4. Установите параметр role_values_editor в значения, сопоставленные с ролью Editor.
  5. Установите параметр role_values_admin в значения, сопоставленные с ролью организации Admin.
  6. Установите параметр role_values_grafana_admin в значения, сопоставленные с ролью Grafana Admin.

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

Дополнительную информацию о ролях и разрешениях в Grafana см. в разделе Роли и разрешения.

Пример конфигурации:

ini
[auth.saml]
assertion_attribute_role = role
role_values_none = none
role_values_viewer = external
role_values_editor = editor, developer
role_values_admin = admin, operator
role_values_grafana_admin = superadmin

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

Если вы не хотите, чтобы организации и роли пользователей синхронизировались с IdP, вы можете использовать параметр конфигурации skip_org_role_sync.

Пример конфигурации:

ini
[auth.saml]
skip_org_role_sync = true

Настройка синхронизации ролей с Okta

В этом разделе показано, как настроить Okta на отправку членства в группах в утверждении SAML, а затем использовать эти группы для назначения ролей в Grafana.

Шаг 1: настройте Okta на отправку групп

  1. В Okta Admin перейдите в Applications > Applications и откройте ваше приложение Grafana SAML.

  2. Откройте вкладку Sign On, затем нажмите Edit в разделе SAML 2.0.

  3. Прокрутите до GROUP ATTRIBUTE STATEMENTS.

  4. Добавьте атрибут группы со следующими настройками:

    Поле Значение
    Name Group
    Filter Matches regular expression
    Value .*
  5. Нажмите Save.

Эта конфигурация отправляет все группы Okta, к которым принадлежит пользователь, в утверждении SAML под атрибутом Group.

Note

Чтобы отправить только определённые группы, измените фильтр регулярного выражения. Например, grafana-.* отправляет только группы, начинающиеся с grafana-.

Шаг 2: настройте Grafana на сопоставление групп с ролями

Используйте атрибут группы для назначения ролей, установив assertion_attribute_role в имя вашего атрибута группы:

ini
[auth.saml]
# Use the Group attribute (sent from Okta) for role assignment
assertion_attribute_groups = Group
assertion_attribute_role = Group

# Map Okta group names to Grafana roles
role_values_admin = grafana-admins
role_values_editor = grafana-editors
role_values_viewer = grafana-viewers

С этой конфигурацией:

  • Пользователи в группе Okta grafana-admins получают роль Admin
  • Пользователи в группе Okta grafana-editors получают роль Editor
  • Пользователи в группе Okta grafana-viewers получают роль Viewer
  • Пользователи, не соответствующие ни одной группе, получают роль, указанную auto_assign_org_role (по умолчанию Viewer)

Note

Имена групп учитывают регистр. Убедитесь, что имена групп в конфигурации Grafana точно совпадают с именами групп Okta.

Если вы пользователь Grafana Cloud и хотите настроить SAML через интерфейс:

  1. Перейдите в Administration > Authentication > Configure SAML.
  2. В разделе User mapping установите:
    • Groups attribute: Group
    • Role attribute: Group
  3. В разделе Role mapping введите имена ваших групп Okta для каждой роли.
  4. Нажмите Save.