Подписи плагинов
Проверка подписи плагинов, также известная как подписывание, — это мера безопасности, позволяющая убедиться, что плагины не были изменены. При загрузке Grafana проверяет, подписан плагин или нет, инспектируя и проверяя его цифровую подпись.
Подробнее см. в разделе политики для плагинов.
Как работает проверка?
При запуске Grafana проверяет подписи каждого плагина в каталоге плагинов.
Чтобы увидеть результат этой проверки для каждого плагина, перейдите в Configuration → Plugins. Подпись может иметь любой из следующих статусов:
Что происходит, если плагин не подписан?
Если плагин не подписан, Grafana не загружает и не запускает его. Также Grafana записывает в журнал сервера сообщение об ошибке:
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 сопоставляет идентификатор ключа с двумя источниками ключей в следующем порядке:
- Загруженные ключи. Когда включено динамическое получение ключей, Grafana читает ключ из пространства ключей
plugin.publickeysв своей базе данных. Grafana заполняет это пространство ключей из API-сервера, поэтому в нём хранятся только те ключи, которые публикует каталог. - Встроенные ключи. Grafana использует набор ключей, скомпилированный в бинарный файл, когда в первом источнике нет записи для данного идентификатора ключа. Этот набор содержит ключ Grafana Labs и любой другой ключ, включённый в сборку.
Grafana сначала запрашивает загруженные ключи и использует встроенные ключи только тогда, когда динамический источник не возвращает ключ. Поэтому плагин, подписанный ключом, который каталог не публикует, всё равно будет проверен, если этот ключ входит в сборку. Верно и обратное: плагин, подписанный ключом каталога, который не входит в сборку, не может быть проверен, когда динамическое получение отключено.
Note
Динамическое получение ключей не работает в изолированной сети, потому что Grafana не может обратиться к API-серверу. В этом случае при запуске Grafana записывает в журнал сервера сообщение
Error downloading plugin manifest keys. О том, как остановить загрузку и проверять подписи плагинов только встроенными ключами, см. в описании параметраpublic_key_retrieval_disabled.
Уровни подписи плагинов
Все плагины подписываются на определённом уровне подписи. Уровень подписи определяет, как плагин может распространяться.
Разрешение неподписанных плагинов
Note
Неподписанные плагины не поддерживаются в Grafana Cloud.
Мы настоятельно рекомендуем не запускать неподписанные плагины в вашем экземпляре Grafana. Однако если вы осознаёте риски и всё же хотите загрузить неподписанный плагин, см. раздел Конфигурация.
Если вы разрешили загрузку неподписанного плагина, Grafana записывает в журнал сервера предупреждение:
WARN[06-01|16:45:59] Running an unsigned plugin pluginID=<plugin id>
Note
Если вы разрабатываете плагин, можете включить режим разработки, чтобы разрешить все неподписанные плагины.
Подписывание разработанного вами плагина
Если вы разработчик плагинов и хотите узнать, как подписать свой плагин, см. раздел Подписывание плагина.