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

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

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

  • Аккаунт AWS с разрешением на просмотр и создание ключей KMS и программными учётными данными для доступа к этим ключам
  • Доступ к файлу конфигурации Grafana
  1. Создайте симметричный ключ API либо в консоли управления AWS, либо с помощью API AWS KMS.

    Подробные инструкции см. в разделе Создание ключей.

  2. Получите ID ключа.

    В терминах AWS это может быть ID ключа, ARN ключа (Amazon Resource Name), имя псевдонима или ARN псевдонима. Дополнительные сведения о том, как получить ID ключа в AWS, см. в разделе Поиск ID ключа и ARN ключа.

  3. Создайте программные учётные данные (ID ключа доступа и секретный ключ доступа), имеющие разрешение на просмотр созданного вами ключа.

    В AWS доступ к вашим ключам KMS можно контролировать с помощью политик ключей, политик IAM и предоставлений (grants). Вы также можете создавать временные учётные данные, которые должны предоставлять токен сессии вместе с ID ключа доступа и секретным ключом доступа.

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

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

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

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

    • key_id: ссылка на ключ, хранящийся в KMS. Это может быть ID ключа, Amazon Resource Name (ARN) ключа, имя псевдонима или ARN псевдонима. Если вы используете псевдоним, применяйте префикс alias/. Чтобы указать ключ KMS в другом аккаунте AWS, используйте его ARN или псевдоним. Дополнительные сведения о том, как получить ID ключа в AWS, см. в разделе Поиск ID ключа и ARN ключа.

      Параметр key_id Пример значения
      Key ID 1234abcd-12ab-34cd-56ef-1234567890ab
      Key ARN arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
      Alias name alias/ExampleAlias
      Alias ARN arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias
    • access_key_id: ID ключа доступа AWS, созданный вами ранее.

    • secret_access_key: секретный ключ доступа AWS, созданный вами ранее.

    • region: регион AWS, в котором вы создали ключ KMS. Регион содержится в ARN ключа. Например: arn:aws:kms:*us-east-2*:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

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

    # AWS key management service provider setup
    ;[security.encryption.awskms.example-encryption-key]
    # Reference to a KMS key - either key ID, key ARN, alias name, or ARN
    ;key_id = 1234abcd-12ab-34cd-56ef-1234567890ab
    # AWS access key ID
    ;access_key_id = AKIAIOSFODNN7EXAMPLE
    # AWS secret access key
    ;secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
    # AWS region, for example eu-north-1
    ;region = eu-north-1
  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 = awskms.example-encryption-key
    # list of configured key providers, space separated
    available_encryption_providers = awskms.example-encryption-key
  7. Перезапустите Grafana.

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

    grafana cli admin secrets-migration re-encrypt

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

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

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