Перейти к основному содержимому

Object Lock

Последнее изменение:

Object Lock работает по принципу WORM (Write Once Read Many) и позволяет заблокировать объекты, чтобы предотвратить их перезапись или удаление.

Для использования Object Lock в бакете должно быть включено версионирование. Блокировка объектов применяется только к версиям объектов. Если вы включили Object Lock, его нельзя отключить и нельзя приостановить версионирование.

Блокировка может быть разных типов и режимов. В зависимости от типа блокировки ее можно установить на отдельные объекты или на бакет по умолчанию — блокировка будет применяться к новым объектам.

Возможность управления блокировкой также зависит от роли пользователя и правил политики доступа, подробнее в инструкции Управлять доступом в S3. Работать с Object Lock можно только через S3 API и инструменты, которые его используют.

Чтобы управлять блокировкой объектов после настройки Object Lock, используйте инструкцию Управлять блокировкой объекта.

Если вы удалите проект, в котором есть заблокированные объекты, они не будут удалены, пока блокировка активна. При этом они не будут отображаться в панели управления и через API. Чтобы восстановить заблокированные объекты после удаления проекта, создайте тикет.

Типы и режимы блокировки

Блокировка может быть временной и бессрочной. У временной блокировки есть два режима — Governance и Compliance.

Если у объекта одновременно включены временная и бессрочная блокировки, приоритет имеет бессрочная блокировка.

БессрочнаяВременная
Режим GovernanceРежим Compliance
На что можно назначитьНа объекты
  • на объекты;
  • на бакет по умолчанию — блокировка будет применяться ко всем новым объектам
  • на объекты;
  • на бакет по умолчанию — блокировка будет применяться ко всем новым объектам
Возможные действия с блокировкойОтключение блокировки
  • сокращение срока блокировки*;
  • продление срока блокировки;
  • изменение режима блокировки на Compliance
Продление срока блокировки
Возможность удаления объектовНельзя никому, пока блокировка включенаМожно*Нельзя никому до истечения срока блокировки

* Доступно только пользователям:

Настроить Object Lock в бакете

Настраивать Object Lock может:

После настройки Object Lock в бакете вы сможете блокировать объекты вручную или загружать объекты сразу с активной блокировкой.

  1. Включите версионирование.
  2. Включите Object Lock в бакете.
  3. Опционально: включите временную блокировку по умолчанию в бакете.

1. Включить версионирование

Используйте подраздел Включить версионирование инструкции Версионирование.

2. Включить Object Lock

Включение Object Lock не блокирует объекты автоматически, но позволяет управлять блокировкой объектов.

  1. Если вы не использовали AWS CLI, настройте его.

  2. Откройте CLI.

  3. Включите Object Lock:

    aws s3api put-object-lock-configuration \
    --bucket "<bucket_name>" \
    --object-lock-configuration '{
    "ObjectLockEnabled": "Enabled"}'

    Укажите <bucket_name> — имя бакета.

  4. Убедитесь, что Object Lock включен:

    aws s3api get-object-lock-configuration --bucket "<bucket_name>"

    Укажите <bucket_name> — имя бакета.

    При включенном Object Lock вернется ответ:

    {
    "ObjectLockConfiguration": {
    "ObjectLockEnabled": "Enabled"
    }
    }

3. Опционально: включить временную блокировку по умолчанию в бакете

Временная блокировка будет применяться ко всем новым объектам в бакете.

  1. Откройте CLI.

  2. Включите временную блокировку в бакете по умолчанию:

    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 лет или 36 500 дней.
  3. Убедитесь, что временная блокировка в бакете включена:

    aws s3api get-object-lock-configuration --bucket "<bucket_name>"

    Укажите <bucket_name> — имя бакета.

    Пример ответа при включенной временной блокировке:

    {
    "ObjectLockConfiguration": {
    "ObjectLockEnabled": "Enabled",
    "Rule": {
    "DefaultRetention": {
    "Mode": "GOVERNANCE",
    "Days": 30
    }
    }
    }
    }