Блокировка версии объекта (object lock)
Блокировка версии объекта (object lock) в версионируемых бакетах защищает данные от случайного или намеренного удаления и изменения. Заблокированную версию объекта нельзя изменить, удалить вручную и с помощью жизненного цикла, но можно читать сколько угодно раз или восстановить.
Блокировка запрещает действия только с конкретной версией объекта, действия с самим объектом при блокировке не запрещены. Можно удалить его или загрузить повторно с тем же ключом – при этом будет создана новая версия объекта. Незаблокированные версии также можно удалять в обычном порядке, если больше нет необходимости к ним возвращаться.
Примечание
Блокировка версий объектов невозможна в бакетах с выключенным или приостановленным версионированием.
При включенной блокировке версионирование нельзя приостановить.
Включение механизма блокировок не устанавливает блокировки на уже загруженные версии объектов, а только позволяет их устанавливать. Выключение блокировок также не снимает установленные блокировки: они продолжают работать, их нельзя снять или изменить.
Чтобы на версии объектов в бакете можно было устанавливать блокировки, включите соответствующую опцию в настройках бакета по инструкции.
Типы блокировок
Блокировки делятся на типы в зависимости от сроков и строгости.
Два типа блокировок устанавливаются временно — до определенной даты и времени:
- Временная управляемая блокировка (governance-mode retention)
- Пользователь с правами на загрузку объектов (роль
storage.uploader) может установить блокировку. - Пользователь, управляющий Object Storage (роль
storage.admin), может обойти блокировку (удалить или перезаписать версию объекта), изменить срок блокировки или снять ее. Эти действия пользователь должен явно подтверждать: например, при запросе через REST API, совместимый с Amazon S3, — с помощью заголовкаX-Amz-Bypass-Governance-Retention: true. - Временная строгая блокировка (compliance-mode retention)
- Пользователь с правами на загрузку объектов (роль
storage.uploader) может установить блокировку. - Пользователь, управляющий Object Storage (роль
storage.admin), может только продлить блокировку. - Обойти, сократить или снять блокировку до ее окончания нельзя.
Еще один тип блокировки устанавливается бессрочно:
- Бессрочная блокировка (legal hold)
- Пользователь с правами на загрузку объектов (роль
storage.uploader) может установить и снять блокировку. - Обойти блокировку нельзя.
Временные и бессрочная блокировка управляются независимо друг от друга. На версию объекта одновременно могут быть установлены одна временная и одна бессрочная блокировка. Пока они установлены вместе, бессрочная блокировка имеет приоритет: удалить или перезаписать версию нельзя, даже если временная блокировка разрешает это некоторым пользователям.
Таблица действий и ролей
В таблице указаны действия и минимально необходимые роли для их выполнения при разных типах блокировок. Если ячейка в таблице пуста, значит, действие недоступно — ни одна роль не обладает правами для его выполнения.
| Действие | Управляемая (governance) |
Строгая (compliance) |
Бессрочная (legal hold) |
|---|---|---|---|
| Установить блокировку | storage.uploader |
storage.uploader |
storage.uploader |
| Удалить или перезаписать версию заблокированного объекта | storage.admin |
— | — |
| Сократить блокировку | storage.admin |
— | — |
| Продлить блокировку | storage.admin |
storage.admin |
— |
| Заменить одну временную блокировку на другую | storage.admin |
— | — |
| Снять блокировку | storage.admin |
— | storage.uploader |
Блокировки по умолчанию
Устанавливать блокировки можно не только для конкретных версий, но и по умолчанию для всех новых версий объектов, загружаемых в бакет.
Для блокировок по умолчанию нужно указать:
- тип: временный управляемый или временный строгий;
- срок в днях или годах с момента загрузки версии объекта. Дата и время окончания блокировки рассчитываются для каждой версии автоматически.
Если для бакета настроены блокировки по умолчанию, для каждой загружаемой версии объекта нужно вычислить MD5-хешContent-MD5.
Даже если для бакета настроены блокировки по умолчанию, при загрузке или после загрузки конкретной версии объекта можно указать другие настройки временной блокировки — они будут иметь приоритет. При этом загрузить версию без временной блокировки или снять ее после загрузки нельзя.
Версии объектов, уже загруженные в бакет, не затрагиваются изменениями настроек блокировок по умолчанию.
Как настроить блокировки
- Включите версионирование бакета.
- Включите возможность блокировок в бакете.
- Заблокируйте существующую версию объекта или загрузите версию объекта с блокировкой.
См. также:
- Настройка блокировок по умолчанию.
- Установка, изменение и снятие блокировок.
- Удаление версии объекта с блокировкой.
- Восстановление версии объекта в версионируемом бакете.