Посмотр рубрик

Передача через S3

4 мин. чтения

Резервное копирование в S3-хранилище #

PgVault умеет сохранять резервные копии в любое S3-совместимое объектное хранилище — протестирована поддержка большинства известных облачных и собственные (self-hosted) хранилищ, поддерживающие тот же протокол(Amazon S3, Cloudflare R2, MinIO, Yandex Object Storage, VK Cloud Storage, Selectel, Backblaze B2).Для Cloudflare R2 в PgVault есть отдельная, специальная оптимизация — достаточно просто указать адрес R2 как обычно, ничего дополнительно настраивать не нужно.

Как подключить #

  1. Перейдите в раздел Хранилища → Новое хранилище.
  2. В поле «Тип хранилища» выберите S3-совместимое хранилище.
  3. Снимок экрана 2026 09 23 095314
  4. Заполните поля: Имя, выберите агента, и тип хранилища «S3-совместимое хранилище»
  5. Далее детальное описание полей
ПолеЧто указывать
Адрес сервераАдрес вашего S3-провайдера, например storage.yandexcloud.net. Если оставить поле пустым тогда PgVault обратится напрямую к AWS.
БакетИмя бакета (контейнера), куда будут складываться резервные копии. Бакет должен быть создан заранее на стороне провайдера.
Путь внутри бакетаНеобязательно. Подпапка внутри бакета, например backups/pgvault — удобно, если один бакет используется для разных целей.
Access Key IDКлюч доступа, выданный вашим S3-провайдером.
РегионУказывается, только если провайдер этого требует (для многих self-hosted и российских провайдеров можно оставить пустым).
Secret Access KeyСекретный ключ доступа. При редактировании уже сохранённого хранилища это поле можно оставить пустым, чтобы не менять сохранённый ранее ключ.
  1. Нажмите Добавить.
  2. Обязательно нажмите кнопку «Проверить доступ» — это быстрая проверка, что PgVault реально может подключиться к указанному бакету с указанными ключами. Результат отображается статусом: «доступно», «недоступно: (текст ошибки)» или «проверка в очереди…», пока задание ещё не выполнено агентом.

Шифрование канала #

Соединение с S3-хранилищем всегда идёт по HTTPS — отключить шифрование канала для этого типа хранилища невозможно.

Защита резервных копий в S3 от удаления #

Резервная копия — последняя линия защиты только пока она сама доступна и цела. При атаках с вымогательством злоумышленники, получив доступ к инфраструктуре, часто сначала находят и удаляют резервные копии, и только потом шифруют рабочие системы — так жертва лишается возможности восстановиться. Обычные права доступа здесь не всегда спасают: если атакующий получил тот же токен доступа, что использует и легитимный процесс резервного копирования, для хранилища его запрос на удаление выглядит совершенно законным. Протокол S3 предлагает дополнительные меры для тех, кто хочет защититься именно от этого сценария.

Вариант 1 — Object Lock (неизменяемое хранение) #

Что это. Object Lock — стандартная возможность протокола S3, а не что-то специфичное для одного облачного провайдера. Она есть у AWS S3, MinIO, VK Cloud и большинства других S3-совместимых хранилищ. Если она включена на бакете — загруженный туда объект физически нельзя удалить или изменить до истечения заданного срока, даже с полностью легитимными, настоящими учётными данными.

Как включить. Object Lock настраивается на стороне самого хранилища, при создании бакета — не в PgVault. Обратитесь к документации вашего провайдера объектного хранилища, чтобы создать бакет с включённым Object Lock и нужным сроком хранения. После этого просто укажите этот бакет как обычное S3-хранилище в PgVault, ничего особенного настраивать в самом PgVault не нужно, резервные копии, загружаемые в такой бакет, автоматически получат защиту.

Важно понимать до включения. Большинство S3-провайдеров не дают позже отключить Object Lock у уже созданного бакета — при необходимости изменить режим защиты придётся создавать новый бакет.

Как это соотносится с ротацией (автоматическим удалением старых копий) в PgVault. Пока копия находится под блокировкой Object Lock, попытка удалить её (в том числе автоматическая, по правилам ротации в задаче резервного копирования) хранилище отклонит. Чтобы ротация продолжала исправно работать, задавайте срок блокировки на хранилище короче, чем то время, через которое PgVault по своим правилам будет пытаться удалить эту копию — тогда к моменту удаления блокировка уже истечёт сама.

Вариант 2 — учётные данные без права удаления #

Независимо от Object Lock, стоит завести для S3-хранилища, указываемого в PgVault, отдельную учётную запись (Access Key ID / Secret Access Key) с правами только на запись и чтение объектов — без права на удаление. Тогда даже если сервер PgVault будет скомпрометирован, а сохранённые учётные данные хранилища — расшифрованы и использованы злоумышленником, удалить уже сохранённые резервные копии этими правами будет невозможно.

Компромисс, о котором нужно знать заранее. Встроенная ротация в PgVault не сможет удалять старые копии такими правами — они будут только накапливаться. Если хотите одновременно и защиту от удаления, и автоматическую очистку старых копий — либо используйте вариант с Object Lock выше (где удаление технически возможно, но только после истечения срока), либо очищайте бакет отдельно, вручную или отдельным скриптом с более широкими правами, не хранимыми в самом PgVault.

Что уже защищено в PgVault и без этого #

Эти меры дополняют, а не заменяют то, что уже есть в продукте:

  • Шифрование резервных копий отдельным паролем (настраивается в самой задаче резервного копирования) — защищает содержимое, даже если кто-то получит доступ к файлам копий.
  • Автоматическая проверка бэкапа — уже встроенная функция, реально восстанавливающая копию во временную базу данных сразу после создания, чтобы подтвердить её целостность, а не просто факт наличия файла.