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

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

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

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

  2. Создайте ключ в Key Vault с нужным вам именем, указав RSA в качестве типа и 2048 в качестве размера, с разрешениями на шифрование и расшифровку.

  3. Зарегистрируйте приложение и сгенерируйте для него секрет клиента.

  4. Назначьте политику доступа Key Vault для созданного вами хранилища ключей:

  5. В разделе Key Permissions задайте разрешения на шифрование и расшифровку и нажмите Save.

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

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

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

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

    • tenant_id: Directory ID (tenant) зарегистрированного вами приложения.
    • client_id: Application ID (client) зарегистрированного вами приложения.
    • client_secret: значение (VALUE) секрета, сгенерированного в вашем приложении. (Не используйте Secret ID.)
    • key_id: имя ключа, созданного вами в хранилище ключей.
    • vault_uri: URL вашего хранилища ключей.

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

    # Azure Key Vault provider setup
    ;[security.encryption.azurekv.example-encryption-key]
    # Azure Application directory ID (tenant)
    tenant_id = 1234abcd-12ab-34cd-56ef-1234567890ab
    # Azure Application application ID (client).
    client_id = 1356dfgh-12ab-34cd-56ef-3322114455cc
    # Azure Application client secret.
    client_secret = FbE4X~4Jq45ERKxx823Aheb9plBjQqHHe81Sc
    # Azure Key Vault key name.
    key_id = mysecretkey
    # Azure Key Vault uri.
    vault_uri = https://my-vault-name.vault.azure.net
  8. Обновите раздел [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 = azurekv.example-encryption-key
    # list of configured key providers, space separated
    available_encryption_providers =  azurekv.example-encryption-key
  9. Перезапустите Grafana.

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

    grafana cli admin secrets-migration re-encrypt

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

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

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