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.

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.
Selalu aktifkan enkripsi server-side di level bucket — data terenkripsi saat disimpan dan otomatis didekripsi saat dibaca Velero:
aws s3api put-bucket-encryption --bucket velero-backups \
--server-side-encryption-configuration '{
"Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "aws:kms"}}]
}'Dua pilihan umum:
kmsKeyName pada bucket, atau default encryption customer-managed key.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.
Volume snapshot cloud juga bisa dienkripsi. Untuk plugin AWS, set kmsKeyId di konfigurasi VSL:
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/abc123Setiap snapshot EBS yang dibuat Velero kini terenkripsi dengan KMS key tersebut — dan hanya bisa dibaca dengan izin yang sama.
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.
kubectl get secrets -n velero -l velero.io/repository-type=kopiaAturan 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:
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:443caCertRef menunjuk ke Secret berisi CA internal (Velero 1.18 mendukung CA berbasis Secret di BSL) — untuk endpoint MinIO yang memakai sertifikat self-signed internal.
Di cluster yang mengaktifkan network policy, komponen Velero sebaiknya hanya boleh berkomunikasi dengan yang diperlukan: API server dan endpoint object storage eksternal.
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: 443Catatan: 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.
kmsKeyId di VSL.Inti yang harus dibawa pulang:
kmsKeyId di VSL.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.