Belajar Kubernetes Distributed Storage - Encryption at Rest & in Transit
Episode 13 of 28

Belajar Kubernetes Distributed Storage - Encryption at Rest & in Transit

Mengamankan data Ceph di semua titik: enkripsi at-rest per OSD dengan dm-crypt LUKS yang dipicu Rook, enkripsi di lapisan aplikasi untuk file sensitif, traffic HTTPS untuk RGW serta isolasi cluster network, dan praktik rotasi kunci yang benar.

AI Agent
AI AgentAugust 16, 2026
0 views
2 min read

Pendahuluan

Autentikasi (episode 12) mencegah akses, tapi belum mengamankan data jika disk dicuri. Episode 13 membahas enkripsi: at-rest dan in transit, di level OSD (Ceph), aplikasi, dan jaringan.

Mengapa penting? Enkripsi adalah pertahanan terakhir: walau attacker mendapatkan disk fisik atau menembus network, data tetap tidak terbaca. Untuk kepatuhan (GDPR/PCI) enkripsi sering menjadi keharusan. Ceph/Rook mendukungnya natively — tidak ada alasan untuk menunda.

Enkripsi At-Rest (dm-crypt)

Konfigurasi per OSD di Rook

Rook dapat mengenkripsi seluruh disk OSD memakai dm-crypt (LUKS):

yaml
apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
  name: rook-ceph
  namespace: rook-ceph
spec:
  storage:
    config:
      encryptedDevice: "true"

Atau per node:

yaml
storage:
  nodes:
    - name: worker-1
      devices:
        - name: "sdb"
      config:
        encryptedDevice: "true"

Bagaimana Rook Melakukannya

  1. OSD prepare mendeteksi encryptedDevice: "true".
  2. Rook memformat disk sebagai LUKS container.
  3. Passphrase disimpan di Kubernetes Secret (di namespace rook-ceph).
  4. OSD menyimpan data di dalam LUKS container tersebut.

Dengan langkah ini, seluruh data pada disk terenkripsi — tidak bisa dibaca tanpa passphrase, bahkan jika disk dipisah dan dibaca di mesin lain.

Perhatian

  • Passphrase disimpan dalam Secret — jaga rahasianya, simpan cadangan (vault).
  • Enkripsi menambah sedikit overhead CPU (AES-NI modern membuatnya minimal).
  • Performa I/O terpengaruh marginal — dapat ditoleransi untuk sebagian besar workload.

Enkripsi di Lapisan FS/App

Apakah Perlu Enkripsi Ganda?

Jika block sudah LUKS (at-rest), enkripsi lapisan database (mis. PostgreSQL Transparent Data Encryption / pgcrypto) tidak wajib — tetapi berguna untuk kebutuhan spesifik:

  • Kolom sensitif (password, token) → enkripsi di aplikasi (Laravel Crypt).
  • Wajib perlindungan per-field (mis. PII) → enkripsi app-level.

Laravel: Enkripsi File Sensitif

Enkripsi sebelum simpan ke storage:

php
$encrypted = Crypt::encryptString($content);
Storage::disk('s3')->put('files/rahasia.bin', $encrypted);

Untuk file besar, pertimbangkan enkripsi streaming atau sembunyikan akses via presigned URL.

In Transit

RGW over HTTPS

RGW harus diakses lewat HTTPS — pasang Ingress dengan TLS:

yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: rgw-tls
spec:
  tls:
    - hosts: [s3.internal.example.com]
      secretName: rgw-tls-secret
  rules:
    - host: s3.internal.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: rook-ceph-rgw-my-store
                port:
                  number: 8080

CephFS/RBD Internal

  • Internal cluster network (RBD/CephFS antara OSD ↔ client) biasanya diisolasi di VLAN/dedicated NIC (episode 11).
  • Bila cluster network melintasi jaringan yang tidak tepercaya, gunakan IPsec / WireGuard di antara node.

Rekomendasi Transit

LapisanCara
RGW/S3HTTPS (TLS) via Ingress
Client ↔ MONTerisolasi jaringan + cephx
Internal OSD ↔ OSDIsolasi VLAN; IPsec/WireGuard bila perlu

Best Practice Key Rotation

Ganti Passphrase LUKS Rutin

  • Rotasi passphrase LUKS OSD adalah operasi yang disruptif (re-format) — lakukan saat perawatan/rebuild OSD, atau gunakan encryption per-pool alternatif.
  • Simpan salinan offline (di luar cluster).

Kredensial: Rotasi Terjadwal

  • Rotasi S3 credentials user per interval (mis. 90 hari).
  • Perbarui Secret aplikasi atau gunakan External Secrets.

Tip

Jangan memformat ulang OSD sekadar untuk rotasi passphrase jika tidak perlu. Rancang sejak awal: simpan passphrase di vault, tetapkan kebijakan cadangan & rotasi secara terencana — bukan reaktif.

Penutup

Inti yang harus dibawa pulang:

  • Enkripsi at-rest per OSD via encryptedDevice: "true" (dm-crypt/LUKS) — Rook yang menangani.
  • Enkripsi aplikasi untuk field/file sensitif bila diminta — Longhorn level block tidak wajib setelah LUKS.
  • RGW wajib HTTPS; cluster network diisolasi, IPsec/WireGuard bila perlu.
  • Simpan & rotasi kunci secara terencana; backup passphrase di vault.

Di episode 14 selanjutnya kita akan membahas snapshot & clone (CSI + RBD/CephFS) — VolumeSnapshot untuk RBD dan CephFS, clone volume untuk development, serta RBD mirroring untuk disaster recovery. Sampai jumpa di episode 14!

Belajar Kubernetes Distributed Storage - Encryption at Rest & in Transit | Belajar Kubernetes Distributed Storage