Настройка аутентификации SAML с помощью файла конфигурации Grafana

Note

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

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

Чтобы настроить аутентификацию SAML в Grafana с помощью файла конфигурации, выполните следующие шаги:

  1. В разделе [auth.saml] файла конфигурации Grafana установите enabled в true.
  2. Настройте SAML в соответствии с вашими требованиями. Просмотрите все доступные параметры конфигурации.
  3. Для конфигурации, специфичной для IdP, см.:
  4. Сохраните файл конфигурации и затем перезапустите сервер Grafana.

Вот пример файла конфигурации Grafana с SAML:

ini
[server]
root_url = https://grafana.example.com

[auth.saml]
enabled = true
name = My IdP
auto_login = false
private_key_path = "/path/to/private_key.pem"
certificate_path = "/path/to/certificate.cert"
idp_metadata_url = "https://my-org.okta.com/app/my-application/sso/saml/metadata"
assertion_attribute_name = DisplayName
assertion_attribute_login = Login
assertion_attribute_email = Email
assertion_attribute_groups = Group

SAML Name ID

Поле конфигурации name_id_format задаёт запрашиваемый формат элемента NameID в утверждении SAML.

По умолчанию оно установлено в urn:oasis:names:tc:SAML:2.0:nameid-format:transient и не требует указания в файле конфигурации.

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

Значение name_id_format в файле конфигурации или Terraform Name identifier format в интерфейсе
urn:oasis:names:tc:SAML:2.0:nameid-format:transient Default
urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified Unspecified
urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress Email address
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent Persistent
urn:oasis:names:tc:SAML:2.0:nameid-format:transient Transient

Максимальная задержка выпуска

Предотвращает атаки повторного воспроизведения ответа SAML и внутренние расхождения часов между SP (Grafana) и IdP. Вы можете установить максимальное количество времени между выпуском AuthnRequest от SP и его обработкой SP (Grafana).

Параметр конфигурации задаётся как длительность, например max_issue_delay = 90s или max_issue_delay = 1h.

Срок действия метаданных

Метаданные SP, скорее всего, истекут в какой-то момент, возможно, из-за ротации сертификата или изменения привязки местоположения. Grafana позволяет вам указать, как долго метаданные должны быть действительными. Используя поле validUntil, вы можете сообщить потребителям, до какого момента ваши метаданные будут действительными. Длительность вычисляется путём добавления длительности к текущему времени.

Параметр конфигурации задаётся как длительность, например metadata_valid_duration = 48h.

Разрешение регистрации новых пользователей

По умолчанию новым пользователям Grafana, использующим аутентификацию SAML, автоматически создаётся учётная запись. Чтобы разделить аутентификацию и создание учётных записей и гарантировать, что только пользователи с существующими учётными записями могут войти с SAML, установите параметр allow_sign_up в false.

Настройка автоматического входа

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

Дополнительную информацию о поведении автоматического входа и устранении неполадок см. в разделе Автоматический вход.

auto_login = true

Настройка разрешённых организаций

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

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

Чтобы включить в список значения, содержащие пробелы, используйте следующий синтаксис JSON:

ini
allowed_organizations = ["org 1", "second org"]

Настройка SAML с привязкой HTTP-Post

Если провайдер идентификации (IdP) поддерживает несколько привязок для единого входа SAML (SSO), Grafana по умолчанию будет использовать привязку HTTP-Redirect. Если IdP поддерживает только HTTP-Post binding, то может потребоваться обновление content_security_policy_template (в случае content_security_policy = true) и content_security_policy_report_only_template (в случае content_security_policy_report_only = true), чтобы позволить Grafana инициировать POST-запрос к IdP. Эти настройки используются для определения заголовков Content Security Policy (CSP), отправляемых Grafana.

Чтобы позволить Grafana инициировать POST-запрос к IdP, обновите настройки content_security_policy_template и content_security_policy_report_only_template в файле конфигурации Grafana и добавьте домен провайдера идентификации в директиву form-action. По умолчанию директива form-action установлена в self, что разрешает POST-запросы только к тому же домену, что и Grafana. Чтобы разрешить POST-запросы к домену провайдера идентификации, обновите директиву form-action, включив в неё домен провайдера идентификации, например: form-action 'self' https://idp.example.com.

Note

Для экземпляров Grafana Cloud, пожалуйста, свяжитесь со службой поддержки Grafana для обновления настроек content_security_policy_template и content_security_policy_report_only_template вашего экземпляра Grafana. Предоставьте URL/файл метаданных вашего IdP.

Единый вход (SSO), инициированный IdP

По умолчанию Grafana разрешает только входы, инициированные поставщиком услуг (SP) (когда пользователь входит с SAML через страницу входа в Grafana). Если вы хотите, чтобы пользователи входили в Grafana напрямую из вашего провайдера идентификации (IdP), установите параметр конфигурации allow_idp_initiated в true и настройте relay_state с тем же значением, указанным в конфигурации IdP.

Вход, инициированный IdP, имеет некоторые риски безопасности, поэтому убедитесь, что вы понимаете риски, прежде чем включать эту функцию. При использовании входа, инициированного IdP, Grafana получает незапрошенные ответы SAML и не может проверить, что процесс входа был начат пользователем. Это затрудняет обнаружение того, было ли сообщение SAML украдено или заменено. Из-за этого вход, инициированный IdP, уязвим к атакам межсайтовой подделки запросов при входе (CSRF) и атакам типа “человек посередине” (MITM). Мы не рекомендуем использовать вход, инициированный IdP, и по возможности держать его отключённым.

Сопоставление утверждений

assertion_attribute_name — это специальное сопоставление утверждений, которое может быть либо простым ключом, указывающим на сопоставление с одним атрибутом утверждения в ответе SAML, либо сложным шаблоном с переменными, использующими синтаксис $__saml{<attribute>}. Если это свойство настроено неправильно, Grafana запишет сообщение об ошибке при запуске и запретит входы SAML. Grafana также будет записывать ошибки после попытки входа, если переменная в шаблоне отсутствует в ответе SAML.

Дополнительную информацию см. в разделе Сопоставление утверждений.

Примеры:

ini
#plain string mapping
assertion_attribute_name = displayName
ini
#template mapping
assertion_attribute_name = $__saml{firstName} $__saml{lastName}