Открыть сервис

AWS Key Management Service

AWS Key Management Service (AWS KMS) — это управляемый облачный сервис, предоставляемый компанией Amazon Web Services (AWS), предназначенный для создания, хранения, управления и использования криптографических ключей. Сервис позволяет централизованно контролировать доступ к ключам шифрования, которые используются для защиты данных в других сервисах AWS и в приложениях пользователей. AWS KMS интегрирован с большинством сервисов AWS, что упрощает шифрование данных без необходимости развёртывания собственной инфраструктуры управления ключами.

История

AWS KMS был запущен в 2014 году в регионе AWS US East (Северная Виргиния). Первоначально сервис предоставлял базовые возможности по созданию и управлению симметричными ключами шифрования. В последующие годы функциональность была значительно расширена:

  • 2015–2016: Добавлена поддержка асимметричных ключей (пары открытого и закрытого ключей) для цифровых подписей и асимметричного шифрования. Внедрена интеграция с AWS CloudTrail для аудита использования ключей.
  • 2017–2018: Появились пользовательские хранилища ключей (Custom Key Stores) на базе AWS CloudHSM, позволяющие хранить ключи в аппаратных модулях безопасности (HSM), сертифицированных по стандарту FIPS 140-2 Level 3. Внедрена поддержка многорегиональных ключей (multi-Region keys).
  • 2019–2020: Добавлена возможность импорта собственных ключей (imported key material) и управления ключами в нескольких регионах. Расширена интеграция с сервисами AWS, включая Amazon S3, Amazon EBS, Amazon RDS, Amazon DynamoDB и другими.
  • 2021–2023: Внедрена поддержка ключей с автоматической ротацией (automatic key rotation) с настраиваемым периодом. Добавлена возможность создания ключей без доступа к интернету (AWS KMS in AWS Outposts). Появились политики ключей (key policies) с поддержкой условий на основе тегов и IP-адресов.

Ключевые концепции и терминология

Ключи KMS (KMS keys)

Основной единицей управления в AWS KMS является ключ KMS (KMS key). Это логическое представление криптографического ключа, которое содержит метаданные (дату создания, статус, политику доступа) и ссылку на сам ключевой материал. Ключи KMS бывают двух типов:

  • Симметричные ключи: Используются для шифрования и расшифрования данных. Один и тот же ключ применяется для обеих операций. Это наиболее распространённый тип ключей в AWS KMS.
  • Асимметричные ключи: Состоят из пары ключей (открытого и закрытого). Открытый ключ может быть распространён публично, закрытый хранится в безопасности. Используются для цифровых подписей и асимметричного шифрования (например, при шифровании данных для нескольких получателей).

Ключевой материал (Key Material)

Ключевой материал — это фактическая криптографическая последовательность битов, используемая для шифрования и расшифрования. AWS KMS предоставляет три способа получения ключевого материала:

  • Генерация в AWS KMS: Сервис создаёт ключевой материал с использованием криптографически стойкого генератора случайных чисел (CSPRNG), сертифицированного по стандарту FIPS 140-2.
  • Импорт извне (imported key material): Пользователь может импортировать собственный ключевой материал, созданный в сторонней системе. Этот материал не может быть экспортирован обратно из AWS KMS.
  • Использование пользовательского хранилища ключей (Custom Key Store): Ключевой материал хранится в аппаратном модуле безопасности (HSM), управляемом пользователем через AWS CloudHSM.

Политики ключей (Key Policies)

Политика ключа — это документ в формате JSON, определяющий, кто (какие пользователи, роли, сервисы) и какие операции может выполнять с данным ключом. Политики могут быть:

  • Политики по умолчанию: Создаются автоматически при создании ключа. Предоставляют полный доступ владельцу ключа (учётной записи AWS) и позволяют делегировать доступ другим пользователям.
  • Пользовательские политики: Позволяют детально настроить доступ, используя условия (например, ограничение по IP-адресу, времени, тегам ресурса).

Гранты (Grants)

Гранты — это альтернативный механизм предоставления доступа к ключу. В отличие от политик, гранты не изменяют политику ключа, а добавляют временные разрешения для конкретных пользователей или сервисов. Гранты автоматически отзываются при удалении ключа или по истечении срока действия.

Алиасы (Aliases)

Алиасы — это удобные псевдонимы для ключей KMS. Они позволяют ссылаться на ключ по понятному имени (например, alias/my-app-key) вместо использования его уникального идентификатора (ARN). Алиасы можно изменять, не меняя сам ключ, что упрощает управление средами (например, переключение между ключами для разработки и продакшена).

Функциональность

Шифрование и расшифрование данных

Основная функция AWS KMS — это шифрование и расшифрование данных с использованием симметричных ключей. Сервис поддерживает два основных режима:

  • Шифрование на стороне сервера (SSE): Используется сервисами AWS (например, Amazon S3, Amazon EBS, Amazon RDS) для автоматического шифрования данных при записи и расшифрования при чтении. AWS KMS управляет ключами, а сервис выполняет криптографические операции.
  • Шифрование на стороне клиента (CSE): Приложение пользователя использует AWS KMS SDK для получения ключа шифрования и выполняет шифрование локально. Это обеспечивает полный контроль над процессом шифрования.

Генерация и управление ключами

AWS KMS позволяет создавать, удалять, отключать, включать и ротировать ключи. Ключи могут быть:

  • Управляемые AWS (AWS managed keys): Создаются и управляются автоматически при включении шифрования в сервисах AWS. Пользователь не может изменять их политики или удалять их.
  • Управляемые клиентом (Customer managed keys): Создаются пользователем. Пользователь имеет полный контроль над политиками, ротацией и удалением.

Ротация ключей (Key Rotation)

AWS KMS поддерживает автоматическую ротацию ключей. При включении автоматической ротации сервис ежегодно создаёт новый ключевой материал для существующего ключа KMS. Старый материал сохраняется для расшифрования ранее зашифрованных данных. Пользователь также может выполнять ручную ротацию, создавая новый ключ и обновляя алиас.

Аудит и мониторинг

Все операции с ключами KMS (создание, использование, удаление) записываются в AWS CloudTrail. Это позволяет отслеживать, кто, когда и какой ключ использовал. Также доступны метрики в Amazon CloudWatch (например, количество вызовов API, задержки).

Интеграция с сервисами AWS

AWS KMS интегрирован с более чем 50 сервисами AWS. Наиболее распространённые интеграции:

  • Amazon S3: Шифрование объектов на стороне сервера с помощью ключей KMS (SSE-KMS).
  • Amazon EBS: Шифрование томов EBS (Elastic Block Store) с помощью ключей KMS.
  • Amazon RDS: Шифрование баз данных RDS (Relational Database Service) с помощью ключей KMS.
  • Amazon DynamoDB: Шифрование таблиц DynamoDB на стороне сервера.
  • AWS Lambda: Шифрование переменных окружения функций Lambda.
  • Amazon SQS и Amazon SNS: Шифрование сообщений в очередях и уведомлениях.

Безопасность и соответствие стандартам

AWS KMS сертифицирован по ряду стандартов безопасности:

  • FIPS 140-2 Level 2 и Level 3: Сертификация криптографических модулей. Уровень 3 достигается при использовании пользовательских хранилищ ключей на базе AWS CloudHSM.
  • SOC 1, SOC 2, SOC 3: Сертификация по стандартам аудита.
  • PCI DSS: Соответствие требованиям безопасности для платежных карт.
  • HIPAA: Соответствие требованиям для защиты медицинских данных (при заключении соглашения BAA).

Ограничения и критика

  • Региональность: Ключи KMS привязаны к конкретному региону AWS. Для использования в нескольких регионах необходимо создавать отдельные ключи или использовать многорегиональные ключи.
  • Стоимость: AWS KMS взимает плату за каждый созданный ключ (ежемесячная плата) и за каждую криптографическую операцию (вызов API). Для крупных систем с высокой нагрузкой затраты могут быть значительными.
  • Зависимость от AWS: Сервис является проприетарным и полностью зависит от инфраструктуры AWS. Перенос ключей и данных в другую облачную платформу или локальную инфраструктуру может быть затруднён.
  • Задержки: Криптографические операции выполняются на стороне сервера, что добавляет сетевую задержку по сравнению с локальным шифрованием.

Сравнение с альтернативами

ХарактеристикаAWS KMSAzure Key VaultGoogle Cloud KMSHashiCorp Vault
ТипУправляемый облачный сервисУправляемый облачный сервисУправляемый облачный сервисПрограммное обеспечение (self-hosted или облачное)
Аппаратная защитаHSM (FIPS 140-2 Level 3)HSM (FIPS 140-2 Level 2/3)HSM (FIPS 140-2 Level 3)Программная (опционально HSM)
Интеграция с облакомГлубокая интеграция с AWSГлубокая интеграция с AzureГлубокая интеграция с GCPАгностик (интеграция через API)
СтоимостьПлата за ключи и операцииПлата за ключи и операцииПлата за ключи и операцииБесплатно (Community Edition) + платная поддержка
Управление секретамиТолько ключиКлючи и секретыТолько ключиКлючи, секреты, сертификаты

Интересные факты

  • AWS KMS использует криптографические алгоритмы AES-256 для симметричного шифрования и RSA-2048/3072/4096 или ECC (NIST P-256, P-384, P-521) для асимметричного шифрования.
  • Сервис поддерживает шифрование данных размером до 1 МБ напрямую. Для больших объёмов данных используется схема envelope encryption (шифрование конвертом), где KMS шифрует ключ данных, а сам ключ данных шифрует данные.
  • AWS KMS является ключевым компонентом для реализации принципа «нулевого доверия» (Zero Trust) в архитектуре AWS.

Источники

  1. AWS KMS Documentation. Amazon Web Services.
  2. "AWS Key Management Service (KMS) – A Comprehensive Guide". AWS Whitepapers.
  3. "Cryptographic Key Management in AWS". AWS Security Blog.
  4. "FIPS 140-2 Non-Proprietary Security Policy for AWS KMS". National Institute of Standards and Technology (NIST).
  5. "AWS KMS Pricing". Amazon Web Services.
  6. "Comparison of Cloud Key Management Services". Gartner, 2023.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →