Настройка подписи и шифрования SAML

Grafana поддерживает подписанные и зашифрованные ответы, и только поддерживает подписанные запросы.

Сертификат и приватный ключ

Обычно сертификат и ключ встроены в метаданные IdP и обновляются по мере необходимости Grafana автоматически. Однако если ваш IdP ожидает подписанные запросы, вы должны предоставить сертификат и приватный ключ.

Стандарт SAML SSO использует асимметричное шифрование для обмена информацией между SP (Grafana) и IdP. Для выполнения такого шифрования вам нужны публичная часть и приватная часть. В этом случае сертификат X.509 предоставляет публичную часть, а приватный ключ предоставляет приватную часть. Приватный ключ должен быть выпущен в формате PKCS#8.

Если вы предоставляете сертификат и ключ напрямую, Grafana поддерживает два способа указания как certificate, так и private_key:

  • Без суффикса (certificate или private_key) конфигурация предполагает, что вы предоставили содержимое файла в кодировке base64.
  • С суффиксом _path (certificate_path или private_key_path) Grafana обрабатывает введённое значение как путь и пытается прочитать файл из файловой системы.

Note

Вы можете использовать только одну форму каждого параметра конфигурации. Использование нескольких форм, например как certificate, так и certificate_path, приводит к ошибке.

Всегда работайте с командой безопасности вашей компании над настройкой сертификатов и приватных ключей. Если вам нужно сгенерировать их самостоятельно (например, в краткосрочной перспективе, для целей тестирования и так далее), используйте следующий пример для генерации сертификата и приватного ключа, включая шаг обеспечения того, чтобы ключ был сгенерирован в формате PKCS#8.

Алгоритм подписи

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

Поддерживаемые алгоритмы

  • rsa-sha1: устаревший алгоритм, не рекомендуется для новых развёртываний
  • rsa-sha256: рекомендуется для большинства случаев использования
  • rsa-sha512: самая сильная безопасность, но может повлиять на производительность

Важные соображения

  • Алгоритм подписи должен точно совпадать с вашей конфигурацией IdP
  • Несовпадающие алгоритмы приведут к сбоям валидации подписи
  • Grafana использует ключ и сертификат, указанные в параметрах private_key и certificate, для подписи
  • Мы рекомендуем использовать rsa-sha256 для новых реализаций SAML

Пример генерации приватного ключа для аутентификации SAML

Пример того, как сгенерировать самоподписанный сертификат и приватный ключ, действительный в течение одного года:

sh
$ openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes​

Кодируйте файлы cert.pem и key.pem в base64: (переключатель -w0 не нужен на Mac, только для Linux)

sh
$ base64 -i key.pem -o key.pem.base64
$ base64 -i cert.pem -o cert.pem.base64

Значения в кодировке base64 (файлы key.pem.base64, cert.pem.base64) затем используются для certificate и private key.

Предоставляемый вами ключ должен выглядеть так:

-----BEGIN PRIVATE KEY-----
...
...
-----END PRIVATE KEY-----