Object Lock: защита от удаления
S3 Object Lock защищает объекты от удаления и изменения на заданный срок. Механизм работает на уровне хранилища: обойти его нельзя ни ключами доступа, ни правами администратора тенанта.
Зачем это нужно
Защита от программ-вымогателей. Шифровальщики целенаправленно уничтожают резервные копии и архивы. Заблокированный объект удалить невозможно, даже располагая действующими ключами доступа.
Защита от действий изнутри. Ни ошибочное, ни намеренное удаление не пройдёт — ни со стороны ваших администраторов, ни со стороны нашей поддержки.
Соответствие требованиям. Там, где регулятор требует хранить данные неизменными заданный срок, Object Lock даёт технически подтверждаемую неизменность.
Два режима
| Режим | Кто может снять защиту досрочно | Где доступен |
|---|---|---|
| Governance | Пользователь со специальными правами может снять блокировку или сократить срок | Хранилище общего пользования и частные инсталляции |
| Compliance | Никто. Срок нельзя сократить, объект нельзя удалить до его истечения | Только частные инсталляции |
Governance подходит там, где нужна защита от случайностей, но допустима управляемая отмена. Compliance — там, где отмена недопустима принципиально.
В хранилище общего пользования режим Compliance отключён на уровне платформы:
попытка задать его возвращает 400 InvalidArgument — Compliance mode has been disabled by your grid administrator. Это осознанное ограничение общего контура — необратимая
блокировка объектов доступна в частной инсталляции.
Legal Hold
Помимо срока хранения объект можно поставить на бессрочное удержание (Legal Hold). Оно не привязано ко времени: удержание включается и снимается отдельной операцией и действует, пока не будет снято.
aws s3api put-object-legal-hold --bucket BUCKET --key OBJECT \
--legal-hold Status=ON --endpoint-url https://s3-msk.itgstore.io
Пока удержание включено, объект нельзя удалить независимо от того, истёк ли срок retention. Механизм рассчитан на разбирательства и проверки, когда срок хранения заранее неизвестен.
Связь с версионированием
Object Lock работает поверх версионирования бакета: блокировка применяется к конкретной версии объекта. Поэтому версионирование должно быть включено на бакете, и включается оно до начала работы с блокировками.
Что учесть
- Object Lock включается на уровне бакета и настраивается при его создании.
- Срок хранения задаётся в правилах и применяется к версиям объектов.
- Объём под заблокированные данные планируйте с запасом: освобождение места происходит только после истечения срока.
- Проверяйте не только запись, но и чтение: неизменяемость гарантирует сохранность объекта, но не заменяет проверку того, что данные пригодны к использованию.
Документация вендора
Поведение Object Lock в StorageGRID описано в документации NetApp.