Блокировка версии объекта (object lock)
Механизм блокировки версии объекта (object lock) в версионируемых бакетах позволяет запретить удаление или перезапись версии объекта. Блокировка обеспечивает хранение версии по принципу WORM (write once read many), но при этом не запрещает загружать новые версии объекта.
Чтобы на версии объектов в бакете можно было устанавливать блокировки, включите соответствующую опцию в настройках бакета по инструкции.
Включение механизма блокировок не устанавливает блокировки на уже загруженные версии объектов, а только позволяет их устанавливать. Выключение блокировок также не снимает установленные блокировки: они продолжают работать, их нельзя снять или изменить.
Блокировки делятся на типы в зависимости от сроков и строгости.
Устанавливать блокировки можно для конкретных версий объектов (при загрузке или после нее) и по умолчанию для всех новых версий, загружаемых в бакет.
Типы блокировок
Два типа блокировок устанавливаются временно — до определенной даты и времени:
- Временная управляемая блокировка (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
.
Даже если для бакета настроены блокировки по умолчанию, при загрузке или после загрузки конкретной версии объекта можно указать другие настройки временной блокировки — они будут иметь приоритет. При этом загрузить версию без временной блокировки или снять ее после загрузки нельзя.
Версии объектов, уже загруженные в бакет, не затрагиваются изменениями настроек блокировок по умолчанию.
Как настроить блокировки
См. инструкции:
- Настройка блокировок версий объектов в бакете: включение возможности устанавливать блокировки, настройка блокировок по умолчанию.
- Загрузка версии объекта с блокировкой.
- Настройка блокировок версии объекта: установка, изменение и снятие блокировок.
- Удаление версии объекта с блокировкой.