Резервне копіювання 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 — Створіть бакет
- Увійдіть до AWS Management Console. У меню регіонів праворуч угорі оберіть Europe (Frankfurt) eu-central-1 — або інший регіон ЄС; запам’ятайте, який.
- Відкрийте S3 (введіть «S3» у пошук) і натисніть Create bucket.
- Bucket type: General purpose. Bucket name: унікальна назва, наприклад
litarbi-backup-vashafirma— малі латинські літери, цифри та дефіси; назва не повинна бути зайнята ніде в AWS. - Залиште типові налаштування: ACLs disabled, позначено Block all public access, шифрування SSE-S3.
- Відкрийте Advanced settings. У розділі Object Lock оберіть Enable і позначте підтвердження, що об’єкти можуть блокуватися назавжди. Разом із цим вмикається версіонування.
- Натисніть Create bucket.
Object Lock вмикається лише зараз, під час створення бакета, — і більше ніколи не вимикається. Потім AWS запропонує задати «default retention»: пропустіть. LitArbi сам блокує кожен файл на стільки днів, скільки ви вкажете на кроці 5.
Крок 2 — Правило очищення
Object Lock потребує версіонування, а з ним видалення лише приховує файл. Коли LitArbi прибирає стару точку відновлення, правило остаточно видаляє приховану копію через 30 днів.
- Відкрийте новий бакет, вкладку Management, і натисніть Create lifecycle rule.
- Lifecycle rule name:
litarbi-cleanup. Choose a rule scope: Apply to all objects in the bucket, і позначте підтвердження. - У розділі Lifecycle rule actions позначте Permanently delete noncurrent versions of objects і Delete expired object delete markers or incomplete multipart uploads.
- Days after objects become noncurrent:
30. Поле «Number of newer versions to retain» залиште порожнім. - Позначте Delete expired object delete markers і Delete incomplete multipart uploads, Number of days:
7. - Натисніть Create rule.
Не позначайте «Expire current versions of objects» — це видалило б самі резервні копії.
Крок 3 — Політика: що дозволено серверу
- Відкрийте IAM (введіть «IAM» у пошук), потім Policies і Create policy.
- Перемкніть редактор з Visual на JSON, виділіть усе й замініть політикою нижче. Впишіть назву свого бакета в обох місцях, де стоїть
litarbi-backup-yourfirm. - Натисніть 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 — Користувач сервера та його ключ доступу
- В IAM відкрийте Users і натисніть Create user. User name:
litarbi-server-backup. Доступ до консолі не вмикайте. Next. - Permissions options: Attach policies directly. Знайдіть
LitArbiServerBackup, позначте, Next, потім Create user. - Відкрийте нового користувача, вкладку Security credentials, і в розділі Access keys натисніть Create access key.
- Сценарій: Application running outside AWS. Next, за бажанням опис «LitArbi Server», потім Create access key.
- 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 і заповніть:
| Поле | Що ввести |
|---|---|
| Endpoint | https://s3.eu-central-1.amazonaws.com — для іншого регіону https://s3.REGION.amazonaws.com |
| Region | eu-central-1 (регіон бакета) |
| Bucket | назва вашого бакета |
| Access key | Access key з кроку 4 |
| Object Lock: … days | 30 |
| Addressing | automatic |
| Secret key / password | Secret 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 Configuration | Object Lock не ввімкнули під час створення бакета. | Створити новий бакет з Object Lock (крок 1) або вказати Object Lock 0 днів — без захисту. |
Інші S3-провайдери
Будь-яке S3-сумісне сховище працює так само — наприклад Hetzner Object Storage, IONOS S3 Object Storage, Backblaze B2 чи Wasabi. Усюди важливі три речі:
- Увімкнути Object Lock (а з ним версіонування) під час створення бакета, якщо провайдер це пропонує.
- Створити ключ доступу лише до цього бакета, якщо провайдер це дозволяє.
- Узяти endpoint і регіон із документації провайдера та вказати їх на кроці 5.