Шифрование секретов базы данных с помощью Google Cloud KMS

Вы можете использовать ключ шифрования из Google Cloud Key Management Service для шифрования секретов в базе данных Grafana.

Предварительные требования:

  • Аккаунт Google Cloud с разрешением на просмотр списка и создание ключей KMS и сервисных учётных записей для доступа к этим ключам
  • Доступ к файлу конфигурации Grafana
  1. Создайте связку ключей в Google Cloud KMS.

  2. Создайте симметричный ключ шифрования в связке ключей.

  3. Создайте сервисную учётную запись и назначьте ей роль: это может быть предопределённая роль или настраиваемая роль с разрешениями на шифрование и расшифровку секретов с помощью Key Management Service.

  4. Создайте ключ сервисной учётной записи и сохраните его JSON-файл на своём компьютере, например как ~/.config/gcloud/sample-project-credentials.json.

  5. Войдя в Grafana, включите конвертное шифрование.

  6. Добавьте сведения о вашем 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
  7. Обновите раздел [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
  8. Перезапустите Grafana.

  9. (Необязательно) Из командной строки и корневого каталога Grafana Enterprise повторно зашифруйте все секреты в базе данных Grafana новым ключом с помощью следующей команды:

    grafana cli admin secrets-migration re-encrypt

    Если не перешифровать существующие секреты, они останутся зашифрованными прежним ключом шифрования. Пользователи по-прежнему смогут получить к ним доступ.

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

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