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

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

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

  • Разрешения на управление Hashicorp Vault для включения секретных движков и выпуска токенов.
  • Доступ к файлу конфигурации Grafana
  1. Включите секретный движок transit в Hashicorp Vault.

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

  3. Создайте периодический сервисный токен.

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

  5. Добавьте сведения о вашем Hashicorp Vault в файл конфигурации Grafana; в зависимости от операционной системы он обычно называется grafana.ini:

    a. Добавьте в файл конфигурации новый раздел с именем в формате [security.encryption.hashicorpvault.<KEY-NAME>], где <KEY-NAME> — любое имя, однозначно идентифицирующее этот ключ среди ключей других провайдеров.

    b. Заполните раздел следующими значениями:

    • token: периодический сервисный токен, используемый для аутентификации в Hashicorp Vault.
    • url: URL сервера Hashicorp Vault.
    • transit_engine_path: точка монтирования движка transit.
    • key_ring: имя ключа шифрования.
    • token_renewal_interval: задаёт, как часто обновлять токен; должно быть меньше значения period периодического сервисного токена.

    Пример раздела провайдера Hashicorp Vault в файле grafana.ini:

    # Example of Hashicorp Vault provider setup
    ;[security.encryption.hashicorpvault.example-encryption-key]
    # Token used to authenticate within Vault. We suggest to use periodic tokens: more on token types https://www.vaultproject.io/docs/concepts/tokens#service-tokens
    ;token =
    # Location of the Hashicorp Vault server
    ;url = http://localhost:8200
    # Mount point of the transit secret engine
    ;transit_engine_path = transit
    # Key ring name
    ;key_ring = grafana-encryption-key
    # Specifies how often to check if a token needs to be renewed, should be less than a token's period value
    token_renewal_interval = 5m
  6. Обновите раздел [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 = hashicorpvault.example-encryption-key
    # list of configured key providers, space separated
    available_encryption_providers = hashicorpvault.example-encryption-key
  7. Перезапустите Grafana.

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

    grafana cli admin secrets-migration re-encrypt

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

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

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