Подписи плагинов

Проверка подписи плагинов, также известная как подписывание, — это мера безопасности, позволяющая убедиться, что плагины не были изменены. При загрузке Grafana проверяет, подписан плагин или нет, инспектируя и проверяя его цифровую подпись.

Подробнее см. в разделе политики для плагинов.

Как работает проверка?

При запуске Grafana проверяет подписи каждого плагина в каталоге плагинов.

Чтобы увидеть результат этой проверки для каждого плагина, перейдите в Configuration → Plugins. Подпись может иметь любой из следующих статусов:

Статус подписи Описание
Core Основной плагин, встроенный в Grafana.
Invalid signature У плагина недействительная подпись.
Modified signature Плагин изменился после того, как был подписан. Это может указывать на злонамеренные действия.
Unsigned Плагин не подписан.
Signed Подпись плагина успешно проверена.

Что происходит, если плагин не подписан?

Если плагин не подписан, Grafana не загружает и не запускает его. Также Grafana записывает в журнал сервера сообщение об ошибке:

Bash
WARN[05-26|12:00:00] Some plugin scanning errors were found   errors="plugin '<plugin id>' is unsigned, plugin '<plugin id>' has an invalid signature"

Как Grafana находит ключ подписи

Чтобы проверить подпись, Grafana нужен открытый ключ, соответствующий идентификатору ключа плагина. Подписанный манифест в MANIFEST.txt хранит этот идентификатор ключа в поле keyId. Grafana сопоставляет идентификатор ключа с двумя источниками ключей в следующем порядке:

  1. Загруженные ключи. Когда включено динамическое получение ключей, Grafana читает ключ из пространства ключей plugin.publickeys в своей базе данных. Grafana заполняет это пространство ключей из API-сервера, поэтому в нём хранятся только те ключи, которые публикует каталог.
  2. Встроенные ключи. Grafana использует набор ключей, скомпилированный в бинарный файл, когда в первом источнике нет записи для данного идентификатора ключа. Этот набор содержит ключ Grafana Labs и любой другой ключ, включённый в сборку.

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

Note

Динамическое получение ключей не работает в изолированной сети, потому что Grafana не может обратиться к API-серверу. В этом случае при запуске Grafana записывает в журнал сервера сообщение Error downloading plugin manifest keys. О том, как остановить загрузку и проверять подписи плагинов только встроенными ключами, см. в описании параметра public_key_retrieval_disabled.

Уровни подписи плагинов

Все плагины подписываются на определённом уровне подписи. Уровень подписи определяет, как плагин может распространяться.

Уровень плагина Описание
Private

Частные плагины предназначены для использования в вашей собственной Grafana. Их нельзя распространять среди сообщества Grafana, и они не публикуются в каталоге Grafana.

Community

Плагины сообщества основаны на зависимых технологиях, которые имеют открытый исходный код и некоммерческий характер.

Плагины сообщества публикуются в официальном каталоге Grafana и доступны сообществу Grafana.

Commercial

Коммерческие плагины основаны на зависимых технологиях с закрытым исходным кодом или коммерческой поддержкой.

Коммерческие плагины публикуются в официальном каталоге Grafana и доступны сообществу Grafana.

Разрешение неподписанных плагинов

Note

Неподписанные плагины не поддерживаются в Grafana Cloud.

Мы настоятельно рекомендуем не запускать неподписанные плагины в вашем экземпляре Grafana. Однако если вы осознаёте риски и всё же хотите загрузить неподписанный плагин, см. раздел Конфигурация.

Если вы разрешили загрузку неподписанного плагина, Grafana записывает в журнал сервера предупреждение:

Bash
WARN[06-01|16:45:59] Running an unsigned plugin   pluginID=<plugin id>

Note

Если вы разрабатываете плагин, можете включить режим разработки, чтобы разрешить все неподписанные плагины.

Подписывание разработанного вами плагина

Если вы разработчик плагинов и хотите узнать, как подписать свой плагин, см. раздел Подписывание плагина.