Настройка шифрования базы данных

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

Grafana шифрует эти секреты перед записью в базу данных, используя симметричный алгоритм шифрования Advanced Encryption Standard (AES). Эти секреты подписываются с помощью секретного ключа, который вы можете сменить при настройке нового экземпляра Grafana.

Note

Grafana v9.0 и новее по умолчанию используют конвертное шифрование, которое добавляет уровень косвенности в процесс шифрования и вносит неявное ломающее изменение для более старых версий Grafana.

Дополнительные сведения о том, как эксплуатировать экземпляр Grafana с конвертным шифрованием, см. в разделе Операционные работы.

Note

В Grafana Enterprise вы также можете шифровать секреты в режиме AES-GCM (Galois/Counter Mode) вместо используемого по умолчанию AES-CFB (режим Cipher FeedBack).

Конвертное шифрование

Note

Начиная с Grafana v9.0, конвертное шифрование можно отключить, добавив переключатель функции disableEnvelopeEncryption в вашу конфигурацию Grafana.

Вместо шифрования всех секретов одним ключом Grafana использует набор ключей, называемых ключами шифрования данных (DEK). Эти ключи шифрования данных сами шифруются одним ключом шифрования ключей (KEK), настраиваемым через атрибут secret_key в вашей конфигурации Grafana либо путём шифрования базы данных ключом из сервиса управления ключами (KMS).

Неявное ломающее изменение

Конвертное шифрование вносит неявное ломающее изменение для версий Grafana до v9.0, поскольку оно меняет способ шифрования секретов, хранящихся в базе данных Grafana. Администраторы Grafana могут обновиться до Grafana v9.0 без каких-либо действий с точки зрения шифрования базы данных, но должны быть крайне осторожны, если потребуется откатить обновление до Grafana v8.5 или более ранней версии, потому что секреты, созданные или изменённые после обновления до Grafana v9.0, не могут быть расшифрованы предыдущими версиями.

В Grafana v8.5 конвертное шифрование было реализовано за необязательным переключателем функции. Администраторы Grafana, которым нужно понизить версию до Grafana v8.5, могут включить конвертное шифрование как обходное решение, добавив переключатель функции envelopeEncryption в конфигурацию Grafana.

Операционные работы

С точки зрения шифрования базы данных администраторы Grafana могут:

  • Перешифровать секреты: повторно зашифровать секреты с помощью конвертного шифрования и нового ключа данных.
  • Откатить секреты: расшифровать секреты, зашифрованные конвертным шифрованием, и повторно зашифровать их устаревшим способом.
  • Перешифровать ключи данных: повторно зашифровать ключи данных новым ключом шифрования ключей и с интеграцией с KMS.
  • Ротировать ключи данных: отключить активные ключи данных и прекратить их использование для шифрования в пользу нового ключа.

Перешифрование секретов

Вы можете перешифровать секреты, чтобы:

  • Перевести шифрование уже существующих секретов с устаревшего способа на конвертное шифрование.
  • Перешифровать секреты после ротации ключей данных.

Чтобы перешифровать секреты, используйте Grafana CLI, выполнив команду grafana cli admin secrets-migration re-encrypt, либо конечную точку /encryption/reencrypt-secrets Admin API Grafana. Операцию безопасно выполнять более одного раза, но рекомендуется делать это в режиме обслуживания.

Откат секретов

Вы можете откатить секреты, зашифрованные конвертным шифрованием, к устаревшему шифрованию. Это может потребоваться для понижения версии до Grafana ниже v9.0 после неудачного обновления.

Чтобы откатить секреты, используйте Grafana CLI, выполнив команду grafana cli admin secrets-migration rollback, либо конечную точку /encryption/rollback-secrets Admin API Grafana. Операцию безопасно выполнять более одного раза, но рекомендуется делать это в режиме обслуживания.

Перешифрование ключей данных

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

Чтобы перешифровать ключи данных, используйте Grafana CLI, выполнив команду grafana cli admin secrets-migration re-encrypt-data-keys, либо конечную точку /encryption/reencrypt-data-keys Admin API Grafana. Операцию безопасно выполнять более одного раза, но рекомендуется делать это в режиме обслуживания.

Ротация ключей данных

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

Новые ключи данных для операций шифрования создаются по требованию.

Note

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

Чтобы ротировать ключи данных, используйте конечную точку /encryption/rotate-data-keys Admin API Grafana. Её безопасно вызывать более одного раза, но рекомендуется делать это в режиме обслуживания.

Шифрование базы данных ключом из сервиса управления ключами (KMS)

Если вы используете Grafana Enterprise, вы можете интегрироваться с провайдером сервиса управления ключами (KMS) и изменить криптографический режим работы Grafana с AES-CFB на AES-GCM.

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

Grafana интегрируется со следующими сервисами управления ключами:

Смена режима шифрования на AES-GCM

Grafana шифрует секреты с помощью Advanced Encryption Standard в режиме Cipher FeedBack (AES-CFB). Возможно, вы предпочтёте использовать AES в режиме Galois/Counter Mode (AES-GCM), чтобы соответствовать требованиям безопасности вашей компании или сохранить единообразие с другими сервисами.

Чтобы сменить режим шифрования, обновите значение algorithm в разделе [security.encryption] файла конфигурации Grafana. Дополнительные сведения см. в разделе Конфигурация Enterprise.