[Документация Yandex Cloud](../../index.md) > [Yandex Object Storage](../index.md) > [Концепции](index.md) > Блокировка версии объекта (object lock)

# Блокировка версии объекта (object lock)

_Блокировка версии объекта_ (object lock) в [версионируемых](versioning.md) бакетах защищает данные от случайного или намеренного удаления и изменения. Заблокированную версию объекта нельзя изменить, удалить вручную и с помощью [жизненного цикла](lifecycles.md), но можно читать сколько угодно раз или [восстановить](../operations/objects/restore-object-version.md).

Блокировка запрещает действия только с конкретной версией объекта, действия с самим объектом при блокировке не запрещены. Можно удалить его или загрузить повторно с тем же ключом – при этом будет создана новая версия объекта. Незаблокированные версии также можно удалять в обычном порядке, если больше нет необходимости к ним возвращаться.

{% note info %}

Блокировка версий объектов невозможна в бакетах с выключенным или приостановленным версионированием.

При включенной блокировке версионирование нельзя приостановить.

{% endnote %}

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

Чтобы на версии объектов в бакете можно было устанавливать блокировки, включите соответствующую опцию в настройках бакета по [инструкции](../operations/buckets/configure-object-lock.md#enable).

## Типы блокировок {#types}

Блокировки делятся на типы в зависимости от сроков и строгости.

Два типа блокировок устанавливаются временно — до определенной даты и времени:

Временная управляемая блокировка (governance-mode retention)

: Пользователь с правами на загрузку объектов ([роль `storage.uploader`](../security/index.md#storage-uploader)) может установить блокировку. 
: Пользователь, управляющий Object Storage ([роль `storage.admin`](../security/index.md#storage-admin)), может обойти блокировку (удалить или перезаписать версию объекта), изменить срок блокировки или снять ее. Эти действия пользователь должен явно подтверждать: например, при запросе через [REST API](../../glossary/rest-api.md), совместимый с Amazon S3, — с помощью заголовка `X-Amz-Bypass-Governance-Retention: true`.

Временная строгая блокировка (compliance-mode retention)

: Пользователь с правами на загрузку объектов (роль `storage.uploader`) может установить блокировку. 
: Пользователь, управляющий Object Storage (роль `storage.admin`), может только продлить блокировку. 
: Обойти, сократить или снять блокировку до ее окончания нельзя.

Еще один тип блокировки устанавливается бессрочно:

Бессрочная блокировка (legal hold)

: Пользователь с правами на загрузку объектов (роль `storage.uploader`) может установить и снять блокировку.
: Обойти блокировку нельзя.

Временные и бессрочная блокировка управляются независимо друг от друга. На версию объекта одновременно могут быть установлены одна временная и одна бессрочная блокировка. Пока они установлены вместе, бессрочная блокировка имеет приоритет: удалить или перезаписать версию нельзя, даже если временная блокировка разрешает это некоторым пользователям.

### Таблица действий и ролей {#types-overview}

В таблице указаны действия и минимально необходимые роли для их выполнения при разных типах блокировок. Если ячейка в таблице пуста, значит, действие недоступно — ни одна роль не обладает правами для его выполнения.

| Действие | Управляемая<br>(governance) | Строгая<br>(compliance) | Бессрочная<br>(legal hold) |
| --- | --- | --- | --- |
| Установить блокировку | `storage.uploader` | `storage.uploader` | `storage.uploader` |
| Удалить или перезаписать версию заблокированного объекта | `storage.admin` | — | — |
| Сократить блокировку | `storage.admin` | — | — |
| Продлить блокировку | `storage.admin` | `storage.admin` | — |
| Заменить одну временную блокировку на другую | `storage.admin` | — | — |
| Снять блокировку | `storage.admin` | — | `storage.uploader` |

## Блокировки по умолчанию {#default}

Устанавливать блокировки можно не только для конкретных версий, но и по умолчанию для всех новых версий объектов, загружаемых в бакет.

Для блокировок по умолчанию нужно указать:

* [тип](#types): временный управляемый или временный строгий;
* срок в днях или годах с момента загрузки версии объекта. Дата и время окончания блокировки рассчитываются для каждой версии автоматически.

Если для бакета настроены блокировки по умолчанию, для каждой загружаемой версии объекта нужно вычислить [MD5-хеш](https://ru.wikipedia.org/wiki/MD5), закодировать его по схеме [Base64](https://ru.wikipedia.org/wiki/Base64) и указать получившееся значение в запросе: например, при запросе через REST API — в заголовке `Content-MD5`.

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

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


## Как настроить блокировки {#instructions}

1. [Включите версионирование бакета](../operations/buckets/versioning.md).
1. [Включите возможность блокировок](../operations/buckets/configure-object-lock.md#enable) в бакете.
1. [Заблокируйте существующую версию объекта](../operations/objects/edit-object-lock.md) или [загрузите версию объекта с блокировкой](../operations/objects/upload.md#w-object-lock).

Смотрите также:
* [Настройка блокировок по умолчанию](../operations/buckets/configure-object-lock.md).
* [Установка, изменение и снятие блокировок](../operations/objects/edit-object-lock.md).
* [Удаление версии объекта с блокировкой](../operations/objects/delete.md#w-object-lock).
* [Восстановление версии объекта в версионируемом бакете](../operations/objects/restore-object-version.md).


## Примеры использования {#examples}

* [Резервное копирование в Object Storage с помощью Veeam Backup](../tutorials/backup-with-veeam.md)