Selectel Object Storage с Object Lock: мигрируем клиентские бэкапы с AWS S3 и тестируем immutable под 187-ФЗ
Мигрируем клиентские бэкапы с AWS S3 на Selectel Object Storage: совместимость rclone, Veeam v12 и Restic. Object Lock появился - проверяем на сценарий 187-ФЗ.
Selectel расширяет S3-совместимое хранилище - корпоративные тарифы и поддержка Object Lock для immutable-сценариев
Ещё в феврале, когда мы сравнивали Yandex Cloud, VK Cloud и Selectel по задачам реального клиента, Selectel S3 выглядел как крепкий и дешёвый вариант для хранилища - без сюрпризов, зато и без Object Lock. Теперь Object Lock появился, Selectel анонсировал корпоративные тарифы, и это сразу дало нам повод закрыть два открытых вопроса: посмотреть, как идёт практическая миграция с AWS S3, и проверить, работает ли immutable-сценарий под требования 187-ФЗ.
Контекст: зачем вообще двигаться с AWS S3
Несколько клиентов у нас до сих пор использовали AWS S3 как endpoint для бэкапов - исторически, ещё до 2022 года. Юридически это серая зона: данные уходят за рубеж, для части клиентов это сначала было неудобством, потом превратилось в требование к миграции. Selectel - очевидный кандидат: уже знаком нам по прошлым проектам, данные в РФ, тарифы заметно ниже AWS при сопоставимых объёмах.
Стек у клиентов разный, поэтому смотрели на три инструмента: rclone для файловых бэкапов, Veeam Backup & Replication v12 (тут у нас уже был опыт direct-to-S3) и Restic для application-level бэкапов.
rclone: просто поменять endpoint
Это была самая предсказуемая часть. rclone работает с любым S3-совместимым хранилищем через s3 provider или через совместимый endpoint с --s3-provider Other. Selectel предоставляет стандартный S3 endpoint с подписями v4 - для rclone это означает что конфиг меняется буквально в двух строках:
[selectel]
type = s3
provider = Other
access_key_id = ...
secret_access_key = ...
endpoint = s3.storage.selcloud.ru
rclone sync прошёл без переписывания скриптов. Скорость записи - нормальная для облачного S3, скорость чтения при восстановлении - аналогично. Ничего захватывающего, что и хорошо.
Одна деталь: rclone при работе с объектами больше 5 GB использует multipart upload. На AWS это давно работает без вопросов, на Selectel мы проверили явно - тоже работает. Маленький чеклист, который стоит прогнать при любой такой миграции.
Veeam v12: direct-to-S3 плюс Object Lock
Здесь интереснее. Когда в феврале вышел Veeam v12 GA, у Selectel ещё не было Object Lock - и Governance, и Compliance режимы отсутствовали. Сейчас поддержка появилась, и мы добавили Selectel в тест.
Настройка object storage repository в VBR v12 на Selectel выглядит так же, как на любом S3-совместимом провайдере: добавляешь endpoint, указываешь bucket, включаешь Object Lock галочкой в wizard-е. Veeam при этом сам проверяет, что bucket создан с включённым Object Lock на уровне конфигурации bucket (это обязательное условие - Object Lock нельзя включить на уже существующем bucket, только при создании).
Результат: Governance-режим заработал. Задание создаёт объекты с retention lock на заданный период, попытка удалить объект из консоли Selectel возвращает ошибку пока lock активен. Expire policy в Veeam отрабатывает правильно: задание не трогает объект до истечения lock-периода, просто убирает из своей базы как устаревший.
Compliance-режим мы тоже поставили в тест - и тут небольшой нюанс: на момент нашего тестирования Selectel поддерживает Compliance, но документация по нему скуднее чем по Governance. На практике поведение правильное, но при настройке enterprise-сценария стоит уточнить у Selectel поддержки текущие ограничения - не потому что что-то сломано, а потому что продукт свежий.
Restic: репозиторий на S3
Restic умеет работать с S3 через встроенный backend - достаточно передать переменные окружения:
export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...
export RESTIC_REPOSITORY=s3:s3.storage.selcloud.ru/bucket-name
restic init и restic backup прошли без изменений в скриптах. Restic не использует S3 Object Lock напрямую - он строит свою структуру репозитория с pack-файлами и индексами, и immutability на уровне S3 здесь не даёт того же эффекта что в Veeam: Restic сам же управляет жизненным циклом объектов при restic forget --prune. Это не баг, это архитектурное решение Restic, просто надо понимать разницу.
Проверка под 187-ФЗ: immutable-сценарий
Один из клиентов попадает под 187-ФЗ (объекты КИИ), и там есть требование обеспечить целостность резервных копий в течение определённого срока - конкретику в публичный пост не пишем, но диапазон типовой: от 7 до 30 суток хранения с защитой от удаления.
Схема, которую мы отдали на согласование регулятору: Veeam v12 + Selectel Object Storage + Object Lock Compliance, retention на bucket = 30 дней. Логика простая: даже если учётные данные Veeam-сервера скомпрометированы, объекты с активным lock удалить нельзя без обращения к Selectel на уровне самого аккаунта. Это не абсолютная защита (компрометация самого аккаунта Selectel - отдельная история), но для требований 187-ФЗ в части защиты резервных копий от несанкционированного удаления - достаточный аргумент.
Регулятор документы принял - это важнее любой технической оценки.
Что не без вопросов
Трафик. Исходящий трафик из Selectel S3 за пределы их сети тарифицируется отдельно. При восстановлении данных в on-premise инфраструктуру это уже не копейки - считать надо. Внутри Selectel (например, восстановление в их же облачные VM) - бесплатно.
Мультирегион. Geo-репликация у Selectel есть в планах, но текущий Object Lock работает в рамках одного датацентра. Для клиентов, которым нужна копия бэкапа в другом регионе РФ с аналогичными гарантиями immutability, - пока надо строить двойную запись руками через rclone или аналог.
SLA по Object Lock. Продукт новый, публичного SLA специфично на Object Lock как фичу мы в документации не нашли. Для некритичных задач это нормально, для КИИ-клиентов - вопрос, который стоит поднять напрямую с их enterprise-командой.
В целом переход с AWS S3 на Selectel оказался технически менее болезненным, чем мы ожидали. Работающий Object Lock Compliance - это закрывает сценарий, который раньше требовал либо AWS, либо собственного MinIO. Для клиентов, у которых уже есть managed-инфраструктура в нашем сопровождении, миграция endpoint-а это полдня работы - остальное настройка и документация.