Резервное копирование LitArbi Server в Amazon S3 — пошагово

Около 20 минут, один раз. Затем сервер каждую ночь записывает зашифрованную точку восстановления в бакет, который никто не может досрочно очистить — ни злоумышленник на сервере, ни администратор, ни Amazon.

Обновлено

Прежде чем начать

Понадобятся три вещи: аккаунт Amazon Web Services, в который вы входите как администратор, учётная запись администратора на вашем LitArbi Server и надёжное место для комплекта ключа (backup kit) — менеджер паролей фирмы либо принтер и сейф. Отведите 20 минут; первая копия потом создаётся сама.

Консоль AWS не переведена на русский, поэтому ниже приведены надписи её английской версии. Вы создадите пять вещей, в таком порядке:

ЧтоЗачем
Бакет с Object LockМесто, где хранятся точки восстановления. Object Lock делает каждый файл неудаляемым на 30 дней.
Правило очисткиЧерез 30 дней окончательно убирает файлы, удалённые сервером, — чтобы счёт не рос бесконечно.
Политика (policy)Пять действий, которые сервер может выполнять в этом бакете, — и ничего больше.
Пользователь с ключом доступаСобственный вход сервера в бакет. Открыть консоль AWS он не может.
Страница BackupsВ LitArbi Server: ключ резервного копирования, данные бакета и срок хранения точек восстановления.

Всё, что отправляет сервер, шифруется ещё до того, как покинет сервер, — ключом, который есть только у вашей фирмы. Amazon хранит данные, которые не может прочитать; LitArbi — тоже.

Стоимость. Amazon берёт несколько центов за гигабайт в месяц за хранение во Франкфурте и мизерные суммы за запросы. Сервер с 20 ГБ документов обходится заметно дешевле одного евро в месяц.

Шаг 1 — Создайте бакет

  1. Войдите в AWS Management Console. В меню регионов справа вверху выберите Europe (Frankfurt) eu-central-1 — или другой регион ЕС; запомните, какой.
  2. Откройте S3 (введите «S3» в поиск) и нажмите Create bucket.
  3. Bucket type: General purpose. Bucket name: уникальное имя, например litarbi-backup-vashafirma — строчные латинские буквы, цифры и дефисы; имя не должно быть занято нигде в AWS.
  4. Оставьте настройки по умолчанию: ACLs disabled, отмечено Block all public access, шифрование SSE-S3.
  5. Откройте Advanced settings. В разделе Object Lock выберите Enable и отметьте подтверждение, что объекты могут блокироваться навсегда. Вместе с этим включается версионирование.
  6. Нажмите Create bucket.

Object Lock включается только сейчас, при создании бакета, — и больше никогда не выключается. Затем AWS предложит задать «default retention»: пропустите. LitArbi сам блокирует каждый файл на столько дней, сколько вы укажете на шаге 5.

Шаг 2 — Правило очистки

Object Lock требует версионирования, а при нём удаление лишь скрывает файл. Когда LitArbi убирает старую точку восстановления, правило окончательно удаляет скрытую копию через 30 дней.

  1. Откройте новый бакет, вкладку Management, и нажмите Create lifecycle rule.
  2. Lifecycle rule name: litarbi-cleanup. Choose a rule scope: Apply to all objects in the bucket, и отметьте подтверждение.
  3. В разделе Lifecycle rule actions отметьте Permanently delete noncurrent versions of objects и Delete expired object delete markers or incomplete multipart uploads.
  4. Days after objects become noncurrent: 30. Поле «Number of newer versions to retain» оставьте пустым.
  5. Отметьте Delete expired object delete markers и Delete incomplete multipart uploads, Number of days: 7.
  6. Нажмите Create rule.

Не отмечайте «Expire current versions of objects» — это удалило бы сами резервные копии.

Шаг 3 — Политика: что разрешено серверу

  1. Откройте IAM (введите «IAM» в поиск), затем Policies и Create policy.
  2. Переключите редактор с Visual на JSON, выделите всё и замените политикой ниже. Впишите имя своего бакета в обоих местах, где стоит litarbi-backup-yourfirm.
  3. Нажмите Next. Policy name: LitArbiServerBackup. Нажмите Create policy.
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ListTheBackupBucket",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::litarbi-backup-yourfirm"
    },
    {
      "Sid": "ReadWriteBackupFiles",
      "Effect": "Allow",
      "Action": ["s3:GetObject", "s3:PutObject", "s3:PutObjectRetention", "s3:DeleteObject"],
      "Resource": "arn:aws:s3:::litarbi-backup-yourfirm/*"
    }
  ]
}

С этой политикой сервер может просматривать, читать, записывать и удалять текущие файлы только в этом бакете. Удалять старые версии он не может — s3:DeleteObjectVersion отсутствует намеренно. Тот, кто захватит сервер, сможет лишь скрыть файлы, но не уничтожить их; скрытые копии можно восстановить в течение 30 дней.

Если редактор при наборе удваивает скобки или кавычки, вставьте политику, а не набирайте её.

Шаг 4 — Пользователь сервера и его ключ доступа

  1. В IAM откройте Users и нажмите Create user. User name: litarbi-server-backup. Доступ к консоли не включайте. Next.
  2. Permissions options: Attach policies directly. Найдите LitArbiServerBackup, отметьте, Next, затем Create user.
  3. Откройте нового пользователя, вкладку Security credentials, и в разделе Access keys нажмите Create access key.
  4. Сценарий: Application running outside AWS. Next, по желанию описание «LitArbi Server», затем Create access key.
  5. AWS покажет Access key (начинается с AKIA) и Secret access key — секрет только один раз. Не закрывайте страницу до шага 5.

Секрет потерян? Удалите ключ доступа, создайте новый и внесите новую пару в LitArbi. Больше ничего не меняется.

Шаг 5 — Страница Backups в LitArbi Server

В LitArbi Web откройте Administration ▸ Backups. На странице три пронумерованные части; надписи на английском.

1 · Backup key

Нажмите Create the backup key. Страница один раз покажет комплект ключа: ключ LABK-… и его отпечаток. Распечатайте его или сохраните в менеджере паролей фирмы отдельно от сервера и позаботьтесь, чтобы ещё один человек знал, где он. Сервер хранит только открытую половину: он может записывать копии, но не читать их. Без комплекта их не откроет никто — ни вы, ни хостинг, ни Amazon, ни LitArbi.

2 · Backup place

Выберите S3-compatible storage и заполните:

ПолеЧто ввести
Endpointhttps://s3.eu-central-1.amazonaws.com — для другого региона https://s3.REGION.amazonaws.com
Regioneu-central-1 (регион бакета)
Bucketимя вашего бакета
Access keyAccess key из шага 4
Object Lock: … days30
Addressingautomatic
Secret key / passwordSecret access key из шага 4
Sub-folder (optional)оставить пустым

Подтвердите своим паролем LitArbi и нажмите Test and save. Сервер сначала записывает, читает и удаляет тестовый файл, так что ошибка видна сразу (см. «Если что-то не так» ниже). Данные доступа хранятся на сервере в зашифрованном виде.

3 · Keep restore points for

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

В конце нажмите Back up now. Первая копия отправляет всё и может занять время — она продолжается в фоне. Следующие отправляют только новое.

Шаг 6 — Проверьте, что всё работает

  • На странице Backups в Last backup стоит сегодняшняя дата, а в At the backup place — ваш бакет с «Object Lock 30 days».
  • Обзор больше не сообщает, что резервное копирование не настроено.
  • Введите ключ из комплекта в Check the kit. Он один раз открывает самую свежую точку восстановления и не сохраняется — доказательство, что комплект работает, ещё до того, как он понадобится.
  • Check the backups сравнивает самую свежую точку восстановления с отправленным; сервер повторяет это сам каждую неделю.

Копирование идёт в фоне короткими частями, пока LitArbi используется. Если хостинг поддерживает задания cron, надёжнее запускать его каждую ночь в определённое время — строка приведена в руководстве по установке из пакета сервера.

Если что-то не так

Если Test and save не удаётся, страница показывает причину, которую назвал Amazon. Обычные случаи:

В сообщении естьПричинаЧто делать
AccessDeniedПолитика называет другой бакет или не прикреплена к пользователю.Проверить имя бакета в обоих местах политики и что у пользователя есть LitArbiServerBackup.
InvalidAccessKeyId или SignatureDoesNotMatchКлюч доступа или секрет введены с ошибкой — часто пробел в конце.Вставить оба заново или создать новый ключ доступа.
NoSuchBucket или PermanentRedirectНе совпадает имя бакета или регион.Регион и endpoint должны быть те, что у бакета.
Bucket is missing Object Lock ConfigurationObject Lock не включили при создании бакета.Создать новый бакет с Object Lock (шаг 1) или указать Object Lock 0 дней — без защиты.

Другие S3-провайдеры

Любое S3-совместимое хранилище работает так же — например Hetzner Object Storage, IONOS S3 Object Storage, Backblaze B2 или Wasabi. Везде важны три вещи:

  • Включить Object Lock (а с ним версионирование) при создании бакета, если провайдер это предлагает.
  • Создать ключ доступа только к этому бакету, если провайдер это позволяет.
  • Взять endpoint и регион из документации провайдера и указать их на шаге 5.

Частые вопросы

Могут ли LitArbi или Amazon прочитать наши копии?
Нет. Сервер шифрует всё ключом резервного копирования фирмы до отправки. Точку восстановления открывает только комплект ключа, а он есть только у вас.
Что, если мы потеряем комплект ключа?
Тогда существующие точки восстановления не откроет никто. Создайте новый ключ в «Replace the backup key» и сохраните новый комплект; дальнейшие точки восстановления используют его. Поэтому страница просит проверить комплект сейчас, а не в тот день, когда он понадобится.
Что будет, если кто-то захватит сервер?
Удалить то, что под Object Lock, он не сможет, а ключ доступа сервера не позволяет удалять старые версии. В худшем случае он скроет файлы — а правило очистки убирает скрытые копии лишь через 30 дней, этого хватит, чтобы заметить и восстановить.
Почему 30 дней?
Месяца достаточно, чтобы заметить атаку или ошибку, а хранение остаётся дешёвым. Дольше — надёжнее и чуть дороже; 14 дней — минимум, который мы рекомендуем.
Можно ли потом удалить бакет?
Только когда истечёт последняя блокировка — через 30 дней после последней копии. Блокировки в режиме compliance не может сократить никто, даже Amazon.

Источники

Станьте одним из первых юристов, работающих с LitArbi.

Число мест в бета-тестировании ограничено. Зарезервируйте своё — мы сообщим, как только приглашение будет готово.

Без банковской карты · Бесплатно на время бета-тестирования · macOS и Windows