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

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 — для региона Казахстан.

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