Belajar Velero - Backup Encryption & Object Storage Security
Episode 14 of 23

Belajar Velero - Backup Encryption & Object Storage Security

Secret di cluster sering kali ikut terbawa ke dalam backup. Episode ini membahas enkripsi data di object storage dengan SSE/KMS, enkripsi snapshot volume, TLS ke endpoint S3, serta NetworkPolicy untuk membatasi komunikasi komponen Velero di dalam cluster.

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

Pendahuluan

Di episode 13 kalian mengamankan kunci brankas (credential). Episode 14 mengamankan isi brankas itu sendiri. Poin yang sering mengejutkan: backup Velero berisi Secret Kubernetes secara mentah — password database, token API, hingga kunci TLS. Siapa pun yang berhasil membaca bucket kalian, atau mencuri snapshot disk, mendapatkan semua rahasia itu.

Karena itu, enkripsi bukan opsional — ia adalah jaring pengaman terakhir. Bayangkan arsip rahasia yang disimpan dalam map biasa vs map berkunci. Velero + object storage yang tidak terenkripsi adalah map biasa: aman selama tidak ada yang menyentuhnya, dan terbuka begitu ada yang membukanya.

Enkripsi di Object Storage

Server-Side Encryption (SSE)

Selalu aktifkan enkripsi server-side di level bucket — data terenkripsi saat disimpan dan otomatis didekripsi saat dibaca Velero:

Aktifkan SSE di bucket S3
aws s3api put-bucket-encryption --bucket velero-backups \
  --server-side-encryption-configuration '{
    "Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "aws:kms"}}]
  }'

Dua pilihan umum:

  • SSE-S3 (AES256): enkripsi oleh S3, tanpa biaya KMS, tanpa kontrol kunci.
  • SSE-KMS: kunci dikelola KMS — kalian bisa membatasi, mengaudit, dan menonaktifkan kunci bila dicuri.

Enkripsi di GCS dan Azure

  • GCS: aktifkan kmsKeyName pada bucket, atau default encryption customer-managed key.
  • Azure Blob: enkripsi diaktifkan secara default (storage service encryption); untuk kontrol penuh gunakan Customer-managed key di Key Vault.

Note

Enkripsi SSE bekerja transparan untuk Velero — tidak ada konfigurasi tambahan di BSL. Yang perlu kalian perhatikan justru izin KMS: pastikan IAM role Velero boleh memakai kunci enkripsi, atau backup/restore akan gagal dengan error AccessDenied dari KMS.

Enkripsi Snapshot Volume

Snapshot EBS dengan KMS

Volume snapshot cloud juga bisa dienkripsi. Untuk plugin AWS, set kmsKeyId di konfigurasi VSL:

VSL dengan KMS key untuk EBS
apiVersion: velero.io/v1
kind: VolumeSnapshotLocation
metadata:
  name: default
  namespace: velero
spec:
  provider: aws
  config:
    region: us-east-1
    kmsKeyId: arn:aws:kms:us-east-1:123456789012:key/abc123

Setiap snapshot EBS yang dibuat Velero kini terenkripsi dengan KMS key tersebut — dan hanya bisa dibaca dengan izin yang sama.

Enkripsi Repositori Kopia/Restic

Backup file-level (kopia) selalu terenkripsi oleh repositorinya — kunci dibuat otomatis saat repositori pertama dibuat dan disimpan sebagai Secret kopia-repo-* di namespace velero. Jangan pernah menghapus Secret repositori ini; tanpa kuncinya, data tidak bisa didekripsi.

KubernetesLihat Secret repositori kopia
kubectl get secrets -n velero -l velero.io/repository-type=kopia

TLS ke Endpoint S3

HTTPS untuk Semua Endpoint

Aturan mutlak: object storage harus diakses lewat HTTPS di environment apa pun kecuali lab. MinIO di lab boleh http://, tapi produksi (termasuk MinIO internal) harus TLS:

BSL dengan TLS dan CA internal
apiVersion: velero.io/v1
kind: BackupStorageLocation
metadata:
  name: minio-prod
  namespace: velero
spec:
  provider: aws
  objectStorage:
    bucket: velero
    prefix: backups
    caCertRef:
      name: minio-ca
      key: ca.crt
  config:
    region: minio
    s3ForcePathStyle: "true"
    s3Url: https://minio.internal:443

caCertRef menunjuk ke Secret berisi CA internal (Velero 1.18 mendukung CA berbasis Secret di BSL) — untuk endpoint MinIO yang memakai sertifikat self-signed internal.

NetworkPolicy untuk Velero

Membatasi Komunikasi

Di cluster yang mengaktifkan network policy, komponen Velero sebaiknya hanya boleh berkomunikasi dengan yang diperlukan: API server dan endpoint object storage eksternal.

KubernetesNetworkPolicy egress untuk velero-server
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: velero-egress
  namespace: velero
spec:
  podSelector:
    matchLabels:
      app.kubernetes.io/name: velero
  policyTypes:
    - Egress
  egress:
    - to:
        - namespaceSelector: {}
      ports:
        - protocol: TCP
          port: 443
        - protocol: TCP
          port: 6443
    - to:
        - ipBlock:
            cidr: 10.0.0.0/16
      ports:
        - protocol: TCP
          port: 443

Catatan: blok ipBlock adalah placeholder untuk CIDR object storage — sesuaikan dengan jaringan kalian. Policy di atas membatasi traffic keluar Velero hanya ke API server dan object storage.

Warning

Sebelum menerapkan NetworkPolicy yang ketat, uji di staging: node-agent juga butuh egress ke BSL, dan seluruh pod di namespace velero butuh akses ke API server. Policy yang salah bisa membuat backup gagal dalam mode yang sulit didiagnosis.

Checklist Keamanan Backup

  • Bucket S3/GCS dengan SSE aktif (ideal SSE-KMS).
  • Snapshot EBS memakai kmsKeyId di VSL.
  • Semua endpoint object storage HTTPS (kecuali lab).
  • Secret repositori kopia tidak pernah dihapus.
  • NetworkPolicy membatasi egress komponen Velero.
  • Rotasi kunci dan audit akses bucket berkala.

Penutup

Inti yang harus dibawa pulang:

  • Backup berisi Secret mentah — enkripsi storage adalah jaring pengaman terakhir.
  • SSE-S3/AES256 atau SSE-KMS di level bucket; pastikan IAM boleh memakai kunci KMS.
  • Snapshot EBS dienkripsi via kmsKeyId di VSL.
  • Repositori kopia/restic selalu terenkripsi; jangan hapus Secret repositori.
  • Gunakan HTTPS (dengan caCertRef untuk CA internal) dan NetworkPolicy untuk membatasi komunikasi.

Di episode 15 selanjutnya kita membangun Backup Policies & Compliance — immutability dengan object lock, retention compliance per policy, serta audit lewat log server dan event backup/restore.

Belajar Velero - Backup Encryption & Object Storage Security | Belajar Velero