Лучшие практики по работе с ключами
Кратко:
- Лучшие практики работы с ключами шифрования и KMS.
- Аутентификация и авторизация с помощью IAM-токенов.
- Выдача гранулярных доступов на конкретные ключи шифрования пользователям и сервисным аккаунтам.
- Использование AWS Encryption SDK и SDK Yandex Cloud для шифрования данных на уровне приложений.
- Криптозащита секретов с помощью KMS.
- Работа с секретами и ключами в Terraform.
- Ротация ключей KMS для обеспечения информационной безопасности.
- Деление ключей на две группы: для сервисов, обрабатывающих и для сервисов, хранящих чувствительные данные.
Лучшие практики по работе с ключами
На этом уроке вы познакомитесь с лучшими практиками использования ключей шифрования и работы с сервисом KMS.
Аутентификация и авторизация в сервисе KMS
Для доступа к самому сервису используйте IAM-токены. Рекомендуем получать IAM-токен сервисного аккаунта через механизм назначения сервисного аккаунта виртуальной машине. Подробнее см. в документации.
Общий подход к использованию KMS должен заключаться в том, чтобы выдавать пользователям и сервисным аккаунтам гранулярные доступы на конкретные ключи шифрования.
Рекомендуемые криптографические библиотеки
Для шифрования данных на уровне приложений используйте следующие библиотеки:
- AWS Encryption SDK и его интеграцию с KMS — для шифрования большого объема данных сложной структуры;
- SDK Yandex Cloud — в более простых случаях.
Криптозащита секретов с помощью KMS
С помощью KMS можно шифровать и расшифровывать нужные для работы приложения секреты (токены доступа, API-ключи и т. п.). Для этого воспользуйтесь такой схемой:
- Подготовьте файл с секретами и зашифруйте его с помощью ключа KMS от имени какого-либо пользователя.
- Отзовите у пользователя разрешение на проведение операций с этим ключом.
- Создайте для приложения сервисный аккаунт и выдайте ему роль
kms.keys.encrypterDecrypter, то есть разрешение на использование ключа шифрования. - При запуске приложения получите IAM-токен из сервиса метаданных и расшифруйте секреты в KMS.
- Используйте секреты в памяти приложения и сохраните на RAM-диск (tmpfs) или используйте механизм безопасности операционной системы.
Работа с секретами и ключами в Terraform
Когда вы используете KMS вместе с Terraform, то учтите, что секреты хранятся в открытом виде в файлах конфигураций. Кроме того, секреты в открытом виде попадут и в файлы
state (.tfstate), в которых Terraform хранит информацию об управляемых ресурсах. Поэтому для обеспечения безопасности может потребоваться защищать как сами файлы конфигурации, так и state-файлы.При работе с KMS в Terraform рекомендуется использовать блок
lifecycle в файлах конфигурации для предотвращения удаления ключа и возможной потери данных. Подробнее об управлении ключами KMS с Terraform.Ротация ключей KMS
Ротация ключей шифрования - одна из основных практик обеспечения информационной безопасности. Некоторые стандарты безопасности (например PCI DSS) напрямую требуют, чтобы ключи ротировались на регулярной основе.
Ротация ключей важна в силу необходимости ограничивать объём информации, зашифрованной одной и той же версией ключа. Чем больше такой объём, тем выше риск, что криптоанализ зашифрованных данных позволит провести успешную атаку на них. Поэтому чем чаще используется ключ, тем чаще нужно ротировать его версии.
Также для повышения уровня безопасности рекомендуется делить ключи на две группы:
- Ключи для сервисов (например Yandex Message Queue или Yandex Functions), которые обрабатывают, но не хранят чувствительные данные.
- Ключи для сервисов, которые хранят такие данные (например сервисы платформы данных).
Для первой группы ключей нужно настроить автоматическую ротацию ключей с периодом ротации чуть больше, чем срок обработки данных в используемом сервисе. По истечении периода ротации старые версии ключей должны быть удалены.
Для сервисов хранения данных способ ротации ключей зависит от внутренних процедур обработки чувствительных данных. Здесь ключи шифрования можно ротировать и вручную.
Важно! Помните, что при удалении старых версий ключа обработанные ими данные не смогут быть восстановлены и расшифрованы.