Object Lock
Object Lock недоступен для бакетов в пуле ru-1.
Object Lock работает по принципу WORM (Write Once Read Many) и позволяет заблокировать объекты, чтобы предотвратить их перезапись или удаление.
Для использования Object Lock в бакете должно быть включено версионирование. Блокировка объектов применяется только к версиям объектов. Если вы включили Object Lock, его нельзя отключить и нельзя приостановить версионирование.
Блокировка может быть разных типов и режимов. В зависимости от типа блокировки ее можно установить на отдельные объекты или на бакет по умолчанию — блокировка будет применяться к новым объектам.
Возможность управления блокировкой также зависит от роли пользователя и правил политики доступа, подробнее в инструкции Управлять доступом в S3. Работать с Object Lock можно только через S3 API и инструменты, которые его используют.
Чтобы управлять блокировкой объектов после настройки Object Lock, используйте инструкцию Управлять блокировкой объекта.
Если вы удалите проект, в котором есть объекты с активной блокировкой, они не будут удалены, пока блокировка активна. При этом они не будут отображаться в панели управления и через API. Чтобы восстановить заблокированные объекты после удаления проекта, создайте тикет.
Типы и режимы блокировки
Блокировка может быть временной и бессрочной. У временной блокировки есть два режима — Governance и Compliance.
Если у объекта одновременно включена временная и бессрочная блокировка, будет приоритет будет у бессрочной блокировки.
* Доступно только пользователям:
- с ролью
member; - с другими ролями с доступом в S3, если в бакете есть политика доступа, которая разрешает действие
s3:BypassGovernance.
Настроить Object Lock в бакете
Настраивать Object Lock может:
- Владелец аккаунта;
- пользователи с ролями
memberиobject_storage:admin; - пользователи с ролями
object_storage_userиs3.bucket.user, если политика доступа разрешает им действиеs3:PutBucketObjectLockConfiguration.
После настройки Object Lock в бакете вы сможете блокировать объекты вручную или загружать объекты сразу с активной блокировкой.
- Если у вас не включено версионирование, включите его.
- Включите Object Lock в бакете.
- Опционально: включите временную блокировку по умолчанию в бакете.
1. Включить версионирование
Используйте подраздел Включить версионирование инструкции Версионирование.
2. Включить Object Lock
Само включение Object Lock не блокирует объекты автоматически.
AWS CLI
-
Если вы не использовали AWS CLI, настройте его.
-
Откройте CLI.
-
Включите Object Lock:
aws s3api put-object-lock-configuration \
--bucket "<bucket_name>" \
--object-lock-configuration '{
"ObjectLockEnabled": "Enabled" \Укажите
<bucket_name>— имя бакета. -
Убедитесь, что Object Lock включен:
aws s3api get-object-lock-configuration --bucket "<bucket_name>"Укажите
<bucket_name>— имя бакета.При включенном Object Lock вернется ответ:
{
"ObjectLockConfiguration": {
"ObjectLockEnabled": "Enabled"
}
}
3. Опционально: включить временную блокировку по умолчанию в бакете
Временная блокировка будет применяться ко всем новым объектам в бакете.
AWS CLI
-
Откройте CLI.
-
Включите временную блокировку в бакете по умолчанию:
aws s3api put-object-lock-configuration \
--bucket "<bucket_name>" \
--object-lock-configuration '{
"ObjectLockEnabled": "Enabled",
"Rule": { "DefaultRetention": { "Mode": "<lock_mode>", "<time_gap>": <number> } }
}'Укажите:
<bucket_name>— имя бакета;<lock_mode>— режим блокировки. Возможные значения —GOVERNANCEилиCOMPLIANCE;<time_gap>— единица времени, в которой будет измеряться срок блокировки. Возможные значения —DAYSилиYEARS;<number>— срок блокировки в днях или годах. Не может быть больше 100 лет или 36500 дней.
-
Убедитесь, что временная блокировка в бакете включена:
aws s3api get-object-lock-configuration --bucket "<bucket_name>"Укажите
<bucket_name>— имя бакета.Пример ответа при включенной временной блокировке:
{
"ObjectLockConfiguration": {
"ObjectLockEnabled": "Enabled",
"Rule": {
"DefaultRetention": {
"Mode": "GOVERNANCE",
"Days": 30
}
}
}
}