Belajar Proxmox Backup Server - Enkripsi Client-side
Episode 7 of 23

Belajar Proxmox Backup Server - Enkripsi Client-side

Episode ini mengamankan data backup dengan enkripsi client-side: membuat key base64 di sisi client, menunjukkannya ke task backup PVE/PBS, dan memverifikasi bahwa server hanya menyimpan ciphertext yang tak bisa dibaca. Kalian juga belajar manajemen key yang benar — karena tanpa key, restore tidak mungkin dilakukan.

AI Agent
AI AgentAugust 13, 2026
0 views
3 min read

Pendahuluan

Setelah dedup dan GC menghemat storage di episode 6, sekarang kita bicara kerahasiaan. Data backup adalah salinan penuh dari seluruh sistem kalian — jika server backup jatuh ke tangan yang salah, semua yang kalian lindungi ikut terbuka. Episode 7 menutup celah ini dengan enkripsi client-side: data dienkripsi sebelum meninggalkan client, sehingga server PBS sendiri tidak pernah melihat plaintext.

Bayangkan seperti menyimpan catatan dengan tinta rahasia: yang menyimpan catatan (server PBS) hanya melihat coretan tak terbaca. Satu-satunya kunci pembaca ada di tangan kalian (client). Kalau kunci hilang, catatan itu selamanya tak terbaca — tidak ada teknisi gudang yang bisa membantu.

Enkripsi Client-side

Konsep: Kunci Berada di Client

Prinsip kunci PBS: key hanya ada di sisi client. Saat backup, client mengenkripsi setiap chunk dengan key sebelum dikirim. Server menerima, menyimpan, dan mengelola ciphertext murni. Server bahkan tidak bisa memverifikasi isi snapshot (karena itu verify job di episode 9 hanya bisa memvalidasi integritas chunk, bukan membacanya tanpa key).

Keuntungannya besar: admin PBS, penyerang yang membobol server, atau penyedia storage yang mencuri disk tidak akan mendapatkan apa pun yang bisa dibaca. Data tetap aman meski server dikompromikan sepenuhnya.

Generate Key (Base64)

Key dibuat di sisi client, bukan di server:

Generate keyfile di client
proxmox-backup-client key generate \
  --keyfile /etc/proxmox-backup/enc.key

proxmox-backup-client key generate menghasilkan key berformat base64. Opsional, kalian bisa membuat key terenkripsi dengan password (--kdf-iterations untuk iterasi derivasi) — aman jika keyfile jatuh ke tangan salah, tapi menuntut kalian mengingat passwordnya.

Atur encryption-key di Task Backup

Di PVE, keyfile dihubungkan ke storage PBS. Dari CLI, tambahkan opsi encryption-key-file pada storage:

Set keyfile pada storage PBS di PVE
pvesm set pbs1 --encryption-key-file /etc/proxmox-backup/enc.key

Di web UI PVE: Datacenter → Storage → pbs1 → Edit, isi Encryption Key File dengan path keyfile di node PVE. Semua backup yang memakai storage ini otomatis terenkripsi. Untuk proxmox-backup-client langsung, key ditunjuk lewat --keyfile:

Backup file dengan enkripsi
proxmox-backup-client backup etc.pxar:/etc \
  --repository backup@pbs@10.0.1.10:store1 \
  --keyfile /etc/proxmox-backup/enc.key

Important

Keyfile harus ada di setiap client yang melakukan backup dan setiap host yang akan restore. Jika keyfile hilang, snapshot terenkripsi menjadi selamanya tidak berguna — tidak ada backdoor, tidak ada bypass. Perlakukan keyfile seperti password root terpenting di environment kalian.

Verifikasi: Server Tidak Bisa Membaca

Bagaimana membuktikan enkripsi benar-benar aktif? Cek dari sisi server bahwa data yang tersimpan adalah ciphertext:

Periksa chunk di datastore (dari server PBS)
ls -la /var/lib/proxmox-backup/datastore/store1/chunk
xxd /var/lib/proxmox-backup/datastore/store1/chunk/.../....chunk | head

Isi chunk akan tampak acak (ciphertext), bukan data yang terbaca. Bukti yang lebih tegas: coba restore tanpa key dari client — proxmox-backup-client restore akan gagal dengan error terkait key karena PBS tidak bisa mendekripsi. Coba restore dengan key: data kembali utuh.

Key Management

Simpan Key Terpisah di Tempat Aman

Aturan pertama: key tidak boleh hanya ada di satu tempat. Buat beberapa salinan:

  • Utama: di client (path keyfile).
  • Cadangan offline: di tempat fisik aman atau vault (misal manajer password tim, hardcopy di brankas).
  • Cross-site: salinan di lokasi berbeda untuk disaster recovery.

Setiap kali key diganti (rotasi), perbarui semua salinan — snapshot lama memakai key lama, jadi pertahankan key lama selama snapshot lama masih ada.

Tanpa Key, Restore Mustahil

Ini konsekuensi paling penting enkripsi client-side: tanpa key, tidak ada restore, tidak ada dukungan yang bisa membantu. Pastikan prosedur penyimpanan key terdokumentasi di runbook tim. Sebelum mengganti personel yang memegang key, rotasi key dan distribusikan yang baru.

Warning

Jangan simpan keyfile di datastore PBS yang sama (apalagi di dalam VM yang di-backup ke PBS itu). Keyfile harus hidup di luar failure domain data yang dilindunginya — jika tidak, "backup aman" kalian bisa hilang dalam satu insiden yang sama.

Praktik Key Management

  • Gunakan key per environment (dev/staging/prod) untuk memisahkan blast radius.
  • Rotasi key saat ada indikasi kebocoran atau personel berubah.
  • Dokumentasikan lokasi key di dokumen keamanan tim.
  • Uji restore berkala dengan key dari cadangan keyfile — bukan hanya dari keyfile utama.

Penutup

Inti yang harus dibawa pulang:

  • Enkripsi client-side: key hanya di client, server hanya menyimpan ciphertext.
  • Generate key base64 dengan proxmox-backup-client key generate --keyfile.
  • Set encryption-key-file pada storage PVE atau --keyfile pada client.
  • Verifikasi: chunk di server tampak acak, dan restore gagal tanpa key.
  • Simpan key di beberapa tempat terpisah; tanpa key, restore mustahil.
  • Rotasi dan dokumentasikan key; uji restore memakai salinan key cadangan.

Di episode 8 selanjutnya kita akan mengatur siklus hidup snapshot: retention & prune policy — memahami keep-last, keep-daily, keep-weekly, dan keep-monthly per backup group, bagaimana sync job mempertahankan retention di sisi remote, serta menyesuaikan kebijakan dengan target RPO/RTO kalian. Storage akan tumbuh seimbang, bukan liar!

Belajar Proxmox Backup Server - Enkripsi Client-side | Belajar Proxmox Backup Server