Обзор
Для защиты данных в Object Storage используется шифрование на стороне сервера. Все объекты шифруются при загрузке в бакет и расшифровываются при скачивании. Доступны два способа шифрования:
- системным ключом (SSE-S3);
- пользовательским ключом, созданным в сервисе KMS (SSE-KMS).
| Характеристика | SSE-S3 | SSE-KMS |
|---|---|---|
| Выбор ключа | Не требуется | Пользователь создает и выбирает ключ |
| Управление ключами | На стороне MWS Cloud Platform | На стороне пользователя |
| Ротация | Выполняется автоматически | Выполняется вручную или настраивается пользователем |
| Аудит использования | Недоступен | Доступен в сервисе KMS |
| Контроль над ключами | Отсутствует | С помощью ролей и разрешений KMS |
Системный ключ
Системный ключ используется по умолчанию и активируется при создании бакета. Данные шифруются с помощью алгоритма AES-256. Со стороны пользователя не требуется никаких дополнительных действий по настройке.
Пользовательский ключ
Пользовательские ключи создаются в сервисе KMS. Ключ можно выбрать и указать в настройках бакета как при создании, так и в любой момент после создания. Он будет использоваться при загрузке всех новых объектов.
Объекты, загруженные в бакет до выбора пользовательского ключа, останутся зашифрованными системным ключом. Смена пользовательского ключа также не приводит к перешифровке ранее загруженных объектов: они остаются зашифрованы старым ключом.
Пользовательский ключ можно заменить на системный. Объекты, загруженные в бакет до перехода на системный ключ, останутся зашифрованными пользовательским ключом.
При загрузке объекта можно указать для него отдельный ключ, отличный от используемого на уровне бакета.
При шифровании данных с помощью пользовательского ключа используется метод envelope encryption. В случае удаления ключа доступ к данным будет безвозвратно утрачен.
После деактивации ключа доступ к данным будет утрачен. Чтобы его восстановить, потребуется повторно активировать ключ.
Чтобы пользователь или сервисный аккаунт мог работать с бакетом, зашифрованным пользовательским ключом, ему нужно назначить наряду с ролью storage.bucket.editor роль kms.cryptoKey.user или выше.