Шифрование секретов базы данных с помощью Google Cloud KMS
Вы можете использовать ключ шифрования из Google Cloud Key Management Service для шифрования секретов в базе данных Grafana.
Предварительные требования:
- Аккаунт Google Cloud с разрешением на просмотр списка и создание ключей KMS и сервисных учётных записей для доступа к этим ключам
- Доступ к файлу конфигурации Grafana
-
Создайте связку ключей в Google Cloud KMS.
-
Создайте симметричный ключ шифрования в связке ключей.
-
Создайте сервисную учётную запись и назначьте ей роль: это может быть предопределённая роль или настраиваемая роль с разрешениями на шифрование и расшифровку секретов с помощью Key Management Service.
-
Создайте ключ сервисной учётной записи и сохраните его JSON-файл на своём компьютере, например как
~/.config/gcloud/sample-project-credentials.json. -
Войдя в Grafana, включите конвертное шифрование.
-
Добавьте сведения о вашем Google Cloud KMS в файл конфигурации Grafana; в зависимости от операционной системы он обычно называется
grafana.ini:
a. Добавьте в файл конфигурации новый раздел с именем в формате[security.encryption.azurekv.<KEY-NAME>], где<KEY-NAME>— любое имя, однозначно идентифицирующее этот ключ среди ключей других провайдеров.
b. Заполните раздел следующими значениями:key_id: ID ключа шифрования, см. Получение ID ключа.credentials_file: полный путь к JSON-файлу ключа сервисной учётной записи на вашем компьютере.
Пример раздела провайдера Google Cloud KMS в файле
grafana.ini:# Example of Google Cloud KMS provider setup ;[security.encryption.googlekms.example-encryption-key] # Google Cloud KMS key ID key_id = 1234abcd-12ab-34cd-56ef-1234567890ab # Full path to a JSON file with a service account key credentials_file = ~/.config/gcloud/sample-project-credentials.json -
Обновите раздел
[security]файла конфигурацииgrafana.ini, указав новый ключ провайдера шифрования, который вы создали:[security] # previous encryption key, used for legacy alerts, decrypting existing secrets or used as default provider when external providers are not configured secret_key = AaaaAaaa # encryption provider key in the format <PROVIDER>.<KEY-NAME> encryption_provider = googlekms.example-encryption-key # list of configured key providers, space separated available_encryption_providers = googlekms.example-encryption-key -
(Необязательно) Из командной строки и корневого каталога Grafana Enterprise повторно зашифруйте все секреты в базе данных Grafana новым ключом с помощью следующей команды:
grafana cli admin secrets-migration re-encryptЕсли не перешифровать существующие секреты, они останутся зашифрованными прежним ключом шифрования. Пользователи по-прежнему смогут получить к ним доступ.
> Примечание: Этот процесс может занять несколько минут в зависимости от количества секретов (например, источников данных) в вашей базе данных. Во время выполнения процесса пользователи могут столкнуться с ошибками, а уведомления алертов могут не отправляться.
> Примечание: Если вы обновляете этот ключ шифрования во время первоначальной настройки Grafana, до создания каких-либо источников данных или дашбордов, этот шаг не нужен, поскольку в Grafana нет секретов для переноса.