Шифрование секретов базы данных с помощью AWS KMS
Вы можете использовать ключ шифрования из AWS Key Management Service для шифрования секретов в базе данных Grafana.
Предварительные требования:
- Аккаунт AWS с разрешением на просмотр и создание ключей KMS и программными учётными данными для доступа к этим ключам
- Доступ к файлу конфигурации Grafana
-
Создайте симметричный ключ API либо в консоли управления AWS, либо с помощью API AWS KMS.
Подробные инструкции см. в разделе Создание ключей. -
Получите ID ключа.
В терминах AWS это может быть ID ключа, ARN ключа (Amazon Resource Name), имя псевдонима или ARN псевдонима. Дополнительные сведения о том, как получить ID ключа в AWS, см. в разделе Поиск ID ключа и ARN ключа. -
Создайте программные учётные данные (ID ключа доступа и секретный ключ доступа), имеющие разрешение на просмотр созданного вами ключа.
В AWS доступ к вашим ключам KMS можно контролировать с помощью политик ключей, политик IAM и предоставлений (grants). Вы также можете создавать временные учётные данные, которые должны предоставлять токен сессии вместе с ID ключа доступа и секретным ключом доступа. -
Войдя в Grafana, включите конвертное шифрование.
-
Добавьте сведения о вашем 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 ключа. -
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 -
-
Обновите раздел
[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 -
(Необязательно) Из командной строки и корневого каталога Grafana повторно зашифруйте все секреты в базе данных Grafana новым ключом с помощью следующей команды:
grafana cli admin secrets-migration re-encryptЕсли не перешифровать существующие секреты, они останутся зашифрованными прежним ключом шифрования. Пользователи по-прежнему смогут получить к ним доступ.
> Примечание: Этот процесс может занять несколько минут в зависимости от количества секретов (например, источников данных) в вашей базе данных. Во время выполнения процесса пользователи могут столкнуться с ошибками, а уведомления алертов могут не отправляться.
> Примечание: Если вы обновляете этот ключ шифрования во время первоначальной настройки Grafana, до создания каких-либо источников данных или дашбордов, этот шаг не нужен, поскольку в Grafana нет секретов для переноса.