VK Cloud logo

Защита критических данных

VK Object Storage позволяет защитить объекты, заблокировав их удаление или перезапись (Object Lock). Используйте блокировку объектов для критических данных, например резервных копий или данных, которые необходимо хранить в неизменяемом виде в течение установленных сроков для обеспечения аудита и юридической значимости.

Подготовительные шаги

Убедитесь, что у вас установлен и настроен AWS CLI.

1. Подготовьте бакет

  1. Создайте новый бакет:

    aws s3api create-bucket \    --bucket <ИМЯ_БАКЕТА> \    --endpoint-url <ENDPOINT_URL> \    --region <КОД_РЕГИОНА>

    Здесь:

    • <ИМЯ_БАКЕТА> — имя бакета, соответствующее рекомендуемым правилам.

      После создания бакета изменить его имя будет невозможно.

    • <ENDPOINT_URL> — домен сервиса VK Object Storage, должен соответствовать региону аккаунта:

      • https://hb.vkcloud-storage.ru или https://hb.ru-msk.vkcloud-storage.ru — домен региона Москва;
      • https://hb.kz-ast.vkcloud-storage.ru — домен региона Казахстан.
    • <КОД_РЕГИОНА> — код региона аккаунта, например ru-msk для региона Москва. Доступные значения приведены в описании API сервиса VK Object Storage.

  2. Включите версионирование:

    aws s3api put-bucket-versioning \  --bucket <ИМЯ_БАКЕТА> \  --versioning-configuration Status=Enabled \  --endpoint-url <ENDPOINT_URL>

    Здесь:

    • <ИМЯ_БАКЕТА> — имя бакета.

    • <ENDPOINT_URL> — домен сервиса VK Object Storage, должен соответствовать региону аккаунта:

      • https://hb.vkcloud-storage.ru или https://hb.ru-msk.vkcloud-storage.ru — домен региона Москва;
      • https://hb.kz-ast.vkcloud-storage.ru — домен региона Казахстан.
  3. Включите блокировку объектов:

    aws s3api put-object-lock-configuration \  --bucket <ИМЯ_БАКЕТА> \  --object-lock-configuration '{    "ObjectLockEnabled": "Enabled"    }' \  --endpoint-url <ENDPOINT_URL>

    Здесь:

    • <ИМЯ_БАКЕТА> — имя бакета.

    • <ENDPOINT_URL> — должен соответствовать региону аккаунта:

      • https://hb.vkcloud-storage.ru или https://hb.ru-msk.vkcloud-storage.ru — для региона Москва;
      • https://hb.kz-ast.vkcloud-storage.ru — для региона Казахстан.

2. Загрузите объект и установите на него блокировку

  1. Создайте объект:

    echo "CRITICAL_DATA" > <ИМЯ_ОБЪЕКТА> \gzip <ИМЯ_ОБЪЕКТА>
  2. Загрузите объект с установкой временной блокировки в строгом режиме (COMPLIANCE):

    aws s3api put-object \  --body <ПУТЬ> \  --bucket <ИМЯ_БАКЕТА> \  --key <КЛЮЧ_ОБЪЕКТА> \  --object-lock-mode COMPLIANCE \  --object-lock-retain-until-date "<СРОК_БЛОКИРОВКИ>" \  --endpoint-url <ENDPOINT_URL>

    Здесь:

    • <ПУТЬ> — путь до директории, срок хранения к объектам в которой нужно изменить.

    • <ИМЯ_БАКЕТА> — имя бакета.

    • <КЛЮЧ_ОБЪЕКТА> — полное имя объекта, включая путь до него.

    • <СРОК_БЛОКИРОВКИ> — дата и время окончания блокировки в формате ISO 8601. Пример: 2030-01-01T00:00:00.000Z.

    • <ENDPOINT_URL> — должен соответствовать региону аккаунта:

      • https://hb.vkcloud-storage.ru или https://hb.ru-msk.vkcloud-storage.ru — для региона Москва;
      • https://hb.kz-ast.vkcloud-storage.ru — для региона Казахстан.

3. Убедитесь, что блокировка применена

Чтобы узнать статус временной блокировки объекта, выполните команду:

aws s3api get-object-retention \  --bucket <ИМЯ_БАКЕТА> \  --key <КЛЮЧ_ОБЪЕКТА> \  --endpoint-url <ENDPOINT_URL>

Здесь:

  • <ИМЯ_БАКЕТА> — имя бакета, в котором находится нужный объект.

  • <КЛЮЧ_ОБЪЕКТА> — имя объекта и путь до него, включая директории, если они есть.

  • <ENDPOINT_URL> — должен соответствовать региону аккаунта:

    • https://hb.vkcloud-storage.ru или https://hb.ru-msk.vkcloud-storage.ru — для региона Москва;
    • https://hb.kz-ast.vkcloud-storage.ru — для региона Казахстан.

Ответ должен содержать JSON-структуру, подтверждающую режим и дату окончания блокировки.

4. Убедитесь, что объект нельзя удалить

Попытайтесь удалить объект:

aws s3 rm s3://<ИМЯ_БАКЕТА>/<КЛЮЧ_ОБЪЕКТА> --endpoint-url <ENDPOINT_URL>

Здесь:

  • <ИМЯ_БАКЕТА> — имя бакета, в котором находится нужный объект.

  • <КЛЮЧ_ОБЪЕКТА> — имя объекта и путь до него, включая директории, если они есть.

  • <ENDPOINT_URL> — домен сервиса VK Object Storage, должен соответствовать региону аккаунта:

    • https://hb.vkcloud-storage.ru или https://hb.ru-msk.vkcloud-storage.ru — домен региона Москва;
    • https://hb.kz-ast.vkcloud-storage.ru — домен региона Казахстан.

В ответ должна прийти ошибка Access Denied. Это подтверждает активную WORM-защиту.

5. Проверьте доступ к объекту

Скачайте объект:

aws s3api get-object \  --bucket <ИМЯ_БАКЕТА> \  --key <КЛЮЧ_ОБЪЕКТА> \  <ИМЯ_ФАЙЛА> \  --endpoint-url <ENDPOINT_URL>

Здесь:

  • <ИМЯ_БАКЕТА> — имя бакета, в котором находится нужный объект.

  • <КЛЮЧ_ОБЪЕКТА> — имя объекта и путь до него, включая директории, если они есть.

  • <ИМЯ_ФАЙЛА> — имя, которое будет присвоено скачанному файлу.

  • <ENDPOINT_URL> — должен соответствовать региону аккаунта:

    • https://hb.vkcloud-storage.ru или https://hb.ru-msk.vkcloud-storage.ru — для региона Москва;
    • https://hb.kz-ast.vkcloud-storage.ru — для региона Казахстан.

Объект остается доступным для чтения и скачивания, что позволяет использовать его для восстановления.