Настройка аутентификации SAML с помощью файла конфигурации Grafana
Note
Доступно в Grafana Enterprise и Grafana Cloud.
См. Конфигурация для получения дополнительной информации о настройке Grafana.
Чтобы настроить аутентификацию SAML в Grafana с помощью файла конфигурации, выполните следующие шаги:
- В разделе
[auth.saml]файла конфигурации Grafana установитеenabledвtrue. - Настройте SAML в соответствии с вашими требованиями. Просмотрите все доступные параметры конфигурации.
- Для конфигурации, специфичной для IdP, см.:
- Сохраните файл конфигурации и затем перезапустите сервер Grafana.
Вот пример файла конфигурации Grafana с SAML:
[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 и не требует указания в файле конфигурации.
Следующий список включает допустимые значения поля конфигурации:
Максимальная задержка выпуска
Предотвращает атаки повторного воспроизведения ответа 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:
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.
Дополнительную информацию см. в разделе Сопоставление утверждений.
Примеры:
#plain string mapping
assertion_attribute_name = displayName
#template mapping
assertion_attribute_name = $__saml{firstName} $__saml{lastName}