Настройка блокировок версии объекта (object lock)
Если в бакете включены версионирование и блокировки версий объектов, вы можете настроить блокировку версии, уже загруженной в бакет.
Установить или настроить временную блокировку (governance или compliance)
Минимальные необходимые роли:
- для установки блокировки —
storage.uploader
; - для изменения существующей блокировки —
storage.admin
.
Временную строгую блокировку (compliance-mode retention) можно только продлить. Сократить ее или заменить на управляемую блокировку (governance-mode retention) нельзя.
Чтобы установить или настроить блокировку:
- В консоли управления
в списке сервисов выберите Object Storage и перейдите в бакет, для объектов которого хотите настроить блокировку. - На панели слева выберите
Объекты. - Чтобы видеть все версии объектов в списке, справа от поля поиска объекта в бакете включите опцию Показать версии.
- В списке объектов выберите нужный, нажмите
→ Блокировка. - В открывшемся окне включите опцию Временная блокировка.
- Выберите Тип блокировки по умолчанию:
- Временная управляемая — пользователь с ролью
storage.admin
может обойти блокировку, изменить ее срок или снять ее. - Временная строгая — пользователь с ролью
storage.admin
может только продлить блокировку. Обойти, сократить или снять блокировку до ее окончания нельзя.
- Временная управляемая — пользователь с ролью
- Установите Срок блокировки по умолчанию в днях или годах. Отсчитывается от момента, когда версия объекта загружена в бакет.
- Нажмите Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для настройки временной блокировки версии объекта:
yc storage s3api put-object-retention --help
-
Получите список бакетов в каталоге по умолчанию:
yc storage bucket list
Результат:
+------------------+----------------------+-------------+-----------------------+---------------------+ | NAME | FOLDER ID | MAX SIZE | DEFAULT STORAGE CLASS | CREATED AT | +------------------+----------------------+-------------+-----------------------+---------------------+ | first-bucket | b1gmit33ngp6******** | 53687091200 | STANDARD | 2022-12-16 13:58:18 | +------------------+----------------------+-------------+-----------------------+---------------------+
-
Задайте настройки временной блокировки версии объекта:
yc storage s3api put-object-retention \ --bucket <имя_бакета> \ --key <ключ_объекта> \ --version-id <идентификатор_версии> \ --retention Mode=<тип_блокировки>,RetainUntilDate="<срок_блокировки>" \ --bypass-governance-retention
Где:
-
--bucket
— имя вашего бакета. -
--key
— ключ объекта. -
--version-id
— идентификатор версии объекта. -
--retention
— настройки временной блокировки (оба параметра обязательны):-
Mode
— тип блокировки:GOVERNANCE
— временная управляемая блокировка. Этот тип нельзя указать, если на версию объекта уже установлена строгая блокировка.COMPLIANCE
— временная строгая блокировка.
-
RetainUntilDate
— дата и время окончания блокировки в формате RFC3339 . Например,2025-01-01T00:00:00Z
. Конец блокировки указывается в часовом поясе UTC±00:00 . Чтобы указать другой часовой пояс, добавьте к концу записи+
или-
и смещение от UTC±00:00. Подробнее см. пример. Если на версию объекта уже установлена строгая блокировка, ее можно только продлить, то есть новые дата и время должны быть позже текущих.
-
-
--bypass-governance-retention
— флаг, подтверждающий обход блокировки. Его нужно установить, если на версию объекта уже установлена управляемая блокировка.
Результат:
request_id: c5984d03********
-
-
Убедитесь, что настройки блокировки версии объекта изменились:
yc storage s3api get-object-retention \ --bucket <имя_бакета> \ --key <ключ_объекта> \ --version-id <идентификатор_версии>
Где:
--bucket
— имя вашего бакета.--key
— ключ объекта.--version-id
— идентификатор версии объекта
Результат:
request_id: 077b184e******** retention: mode: GOVERNANCE retain_until_date: "2024-12-01T10:49:08.363Z"
В поле
mode
указан тип блокировки, в полеretain_until_date
— ее срок.
-
Если у вас еще нет AWS CLI, установите и сконфигурируйте его.
-
Выполните команду:
aws --endpoint-url=https://storage.yandexcloud.net/ \ s3api put-object-retention \ --bucket <имя_бакета> \ --key <ключ_объекта> \ --version-id <идентификатор_версии> \ --retention Mode=<тип_блокировки>,RetainUntilDate="<срок_блокировки>" \ --bypass-governance-retention
Где:
-
--bucket
— имя вашего бакета. -
--key
— ключ объекта. -
--version-id
— идентификатор версии объекта. -
--retention
— настройки временной блокировки (оба параметра обязательны):-
Mode
— тип блокировки:GOVERNANCE
— временная управляемая блокировка. Этот тип нельзя указать, если на версию объекта уже установлена строгая блокировка.COMPLIANCE
— временная строгая блокировка.
-
RetainUntilDate
— дата и время окончания блокировки в формате RFC3339 . Например,2025-01-01T00:00:00Z
. Конец блокировки указывается в часовом поясе UTC±00:00 . Чтобы указать другой часовой пояс, добавьте к концу записи+
или-
и смещение от UTC±00:00. Подробнее см. пример. Если на версию объекта уже установлена строгая блокировка, ее можно только продлить, то есть новые дата и время должны быть позже текущих.
-
-
--bypass-governance-retention
— флаг, подтверждающий обход блокировки. Его нужно установить, если на версию объекта уже установлена управляемая блокировка.
-
Воспользуйтесь методом S3 API putObjectRetention.
Снять временную управляемую блокировку (governance)
Минимально необходимая роль — storage.admin
.
Чтобы снять блокировку:
- В консоли управления
в списке сервисов выберите Object Storage и перейдите в нужный бакет. - На панели слева выберите
Объекты. - Чтобы видеть все версии объектов в списке, справа от поля поиска объекта в бакете включите опцию Показать версии.
- В списке объектов выберите нужный, нажмите
→ Блокировка. - В открывшемся окне выключите опцию Временная блокировка.
- Нажмите Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для настройки временной блокировки версии объекта:
yc storage s3api put-object-retention --help
-
Получите список бакетов в каталоге по умолчанию:
yc storage bucket list
Результат:
+------------------+----------------------+-------------+-----------------------+---------------------+ | NAME | FOLDER ID | MAX SIZE | DEFAULT STORAGE CLASS | CREATED AT | +------------------+----------------------+-------------+-----------------------+---------------------+ | first-bucket | b1gmit33ngp6******** | 53687091200 | STANDARD | 2022-12-16 13:58:18 | +------------------+----------------------+-------------+-----------------------+---------------------+
-
Задайте настройки временной блокировки версии объекта:
yc storage s3api put-object-retention \ --bucket <имя_бакета> \ --key <ключ_объекта> \ --version-id <идентификатор_версии> \ --retention "{}" \ --bypass-governance-retention
Где:
--bucket
— имя вашего бакета.--key
— ключ объекта.--version-id
— идентификатор версии объекта.--retention
— настройки временной блокировки. В обоих параметрах указаны пустые строки, чтобы снять блокировку.--bypass-governance-retention
— флаг, подтверждающий обход блокировки.
Результат:
request_id: m6384f81********
-
Убедитесь, что настройки блокировки версии объекта изменились:
yc storage s3api get-object-retention \ --bucket <имя_бакета> \ --key <ключ_объекта> \ --version-id <идентификатор_версии>
Где:
--bucket
— имя вашего бакета.--key
— ключ объекта.--version-id
— идентификатор версии объекта
Выполнение команды завершится ошибкой с информацией о том, что для указанного объекта не задана блокировка:
The specified object does not have a ObjectLock configuration.
-
Если у вас еще нет AWS CLI, установите и сконфигурируйте его.
-
Выполните команду:
aws --endpoint-url=https://storage.yandexcloud.net/ \ s3api put-object-retention \ --bucket <имя_бакета> \ --key <ключ_объекта> \ --version-id <идентификатор_версии> \ --retention "{}" \ --bypass-governance-retention
Где:
--bucket
— имя вашего бакета.--key
— ключ объекта.--version-id
— идентификатор версии объекта.--retention
— настройки временной блокировки. В обоих параметрах указаны пустые строки, чтобы снять блокировку.--bypass-governance-retention
— флаг, подтверждающий обход блокировки.
Воспользуйтесь методом S3 API putObjectRetention с заголовком X-Amz-Bypass-Governance-Retention: true
и пустым элементом Retention
.
Установить или удалить бессрочную блокировку (legal hold)
Минимально необходимая роль — storage.uploader
.
Чтобы установить или удалить блокировку:
- В консоли управления
в списке сервисов выберите Object Storage и перейдите в нужный бакет. - На панели слева выберите
Объекты. - Чтобы видеть все версии объектов в списке, справа от поля поиска объекта в бакете включите опцию Показать версии.
- В списке объектов выберите нужный, нажмите
→ Блокировка. - В открывшемся окне включите или выключите опцию Бессрочная блокировка.
- Нажмите Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для настройки бессрочной блокировки версии объекта:
yc storage s3api put-object-legal-hold --help
-
Получите список бакетов в каталоге по умолчанию:
yc storage bucket list
Результат:
+------------------+----------------------+-------------+-----------------------+---------------------+ | NAME | FOLDER ID | MAX SIZE | DEFAULT STORAGE CLASS | CREATED AT | +------------------+----------------------+-------------+-----------------------+---------------------+ | first-bucket | b1gmit33ngp6******** | 53687091200 | STANDARD | 2022-12-16 13:58:18 | +------------------+----------------------+-------------+-----------------------+---------------------+
-
Задайте настройки бессрочной блокировки версии объекта:
yc storage s3api put-object-legal-hold \ --bucket <имя_бакета> \ --key <ключ_объекта> \ --version-id <идентификатор_версии> \ --legal-hold Status=<статус_блокировки>
Где:
-
--bucket
— имя вашего бакета. -
--key
— ключ объекта. -
--version-id
— идентификатор версии объекта. -
--legal-hold
— настройки бессрочной блокировки:-
Status
— статус блокировки:ON
— блокировка установлена.OFF
— блокировка не установлена.
-
Результат:
request_id: cb262625********
-
-
Убедитесь, что настройки блокировки версии объекта изменились:
yc storage s3api get-object-legal-hold \ --bucket <имя_бакета> \ --key <ключ_объекта> \ --version-id <идентификатор_версии>
Где:
--bucket
— имя вашего бакета.--key
— ключ объекта.--version-id
— идентификатор версии объекта
Результат:
request_id: 0bef4a0b******** legal_hold: status: ON
-
Если у вас еще нет AWS CLI, установите и сконфигурируйте его.
-
Выполните команду:
aws --endpoint-url=https://storage.yandexcloud.net/ \ s3api put-object-legal-hold \ --bucket <имя_бакета> \ --key <ключ_объекта> \ --version-id <идентификатор_версии> \ --legal-hold Status=<статус_блокировки>
Где:
-
--bucket
— имя вашего бакета. -
--key
— ключ объекта. -
--version-id
— идентификатор версии объекта. -
--legal-hold
— настройки бессрочной блокировки:-
Status
— статус блокировки:ON
— блокировка установлена.OFF
— блокировка не установлена.
-
-
Воспользуйтесь методом S3 API putObjectLegalHold.
Примеры
Установка управляемой блокировки со смещением по московскому времени (UTC+3)
yc storage s3api put-object-retention \ --bucket test-bucket \ --key object-key/ \ --version-id 0005FA15******** \ --retention Mode=GOVERNANCE,RetainUntilDate=2025-01-01T00:00:00+03:00 \
aws --endpoint-url=https://storage.yandexcloud.net/ \ s3api put-object-retention \ --bucket test-bucket \ --key object-key/ \ --version-id 0005FA15******** \ --retention Mode=GOVERNANCE,RetainUntilDate="2025-01-01T00:00:00+03:00" \