Menerjemahkan regulasi menjadi kontrol teknis: GDPR dan privacy by design di level aplikasi, PCI-DSS untuk sistem yang menyentuh data kartu, pemetaan requirement ke OWASP ASVS, dan cara membangun evidence otomatis dari pipeline agar audit tidak lagi berburu screenshot manual

Setelah di episode 19 kita membangun arsitektur zero trust, episode ini menyentuh dimensi yang membuat banyak engineer menggeliat: compliance. Reaksinya biasanya dua kutub — dianggap formalitas dokumen yang menghambat, atau dianggap urusan tim legal semata. Keduanya salah: compliance yang benar adalah kodefikasi praktik keamanan yang sudah seharusnya kalian lakukan, plus bukti terukur bahwa itu konsisten.
Sebagai AppSec engineer, kalian adalah jembatan: regulator bicara requirement, developer bicara kode — kalian menerjemahkan antar keduanya. Kita fokus pada tiga hal yang paling sering menyentuh pekerjaan aplikasi: GDPR, PCI-DSS, dan OWASP ASVS sebagai kerangka penghubungnya.
GDPR (dan turunannya seperti UU PDP Indonesia) mengatur pemrosesan data pribadi. Yang perlu dipahami engineer: mayoritas pasalnya bermuara ke properti teknis konkret pada aplikasi:
| Prinsip GDPR | Artinya bagi Kode |
|---|---|
| Data minimization | Kumpulkan field yang benar-benar dibutuhkan fitur; form registrasi tak butuh NIK |
| Purpose limitation | Data yang dikumpulkan untuk checkout tak boleh dipakai training model tanpa basis hukum |
| Right to erasure | Fitur delete account harus menghapus/anonimisasi lintas service + backup policy |
| Data portability | Endpoint export data user dalam format mesin-baca |
| Privacy by default | Setting privasi awal = paling privat; opt-in bukan pre-checked |
| Storage limitation | Retensi eksplisit + job pembersihan; log PII punya TTL |
Dua implementasi yang paling sering gagal saat audit:
1. Right to erasure yang hanya hapus satu tabel. Data user tersebar di orders, logs, cache, search index, analytics events, dan backup. Desain yang benar: identifikasi seluruh datastore via data mapping, tentukan per-store apakah delete atau anonimisasi (data transaksi finansial wajib disimpan demi pajak — tapi bisa di-pseudonymize), dan dokumentasikan keputusannya:
users → hard delete
orders → pseudonymize user_id (retensi wajib pajak)
search index → purge by user_id (job async)
app logs → rotasi 30 hari; field email di-redaksi sejak tulis
analytics → delete events by anonymous_id
backups → TTL alami; restore baru menjalankan erasure ulang2. PII di log dan analytics. logger.info({ email }) hari ini adalah pelanggaran tahun depan. Redaksi di boundary logging (episode 4) adalah kontrol preventif termurah.
Note
Dokumen kunci yang membuat semua ini terarah adalah Record of Processing Activities (RoPA) — daftar data apa, dasar hukum apa, retensi berapa. Sebagai engineer, RoPA adalah sumber truth kalian saat memutuskan desain penyimpanan; jika sebuah field tidak ada di RoPA, itu temuan.
PCI-DSS mengatur penanganan data kartu pembayaran. Insight paling pentingnya bukan daftar kontrol, melainkan strategi scope reduction: semakin sedikit komponen yang "menyentuh" PAN (nomor kartu), semakin ringan beban compliance kalian.
Tiga level integrasi, dari paling berat:
Rekomendasi praktis AppSec: dorong arsitektur level 3 sejak desain. Kontrol teknis yang tetap milik kalian walau tokenized: jangan log token kartu mentah dari request body (redaksi), pastikan endpoint pembayaran pakai TLS ketat, dan validasi webhook signature gateway sebelum memproses status transaksi — spoofed webhook adalah jalur klasik order gratis.
Di sinilah ASVS (Application Security Verification Standard) jadi alat favorit saya. Ia adalah checklist verifiable dengan tiga level:
V2 Authentication (mis. 2.5.5: MFA wajib utk aksi sensitif)
V3 Session Management (mis. 3.3.1: rotate session token on login)
V4 Access Control (mis. 4.2.1: deny by default)
V5 Validation & Encoding (mis. 5.3.3: parameterized query wajib)
V14 Configuration (mis. 14.4.x: header security & CSP)Cara pakainya dalam proyek nyata: saat mulai fitur atau audit aplikasi, pilih level target (L1 standar, L2 untuk data sensitif, L3 untuk financial/critical), lalu petakan tiap item ke bukti implementasi — test case, konfigurasi, atau gap yang masuk backlog. Hasilnya:
Bagian yang mengubah compliance dari ritual tahunan menjadi efek samping engineering: bukti lahir otomatis dari proses yang sudah jalan:
| Requirement | Bukti Otomatis | Sumber |
|---|---|---|
| Dependency bebas CVE kritis | Laporan Trivy per build | CI artifact (episode 9) |
| Secret tak pernah di-commit | Log gitleaks per push | CI (episode 11) |
| Perubahan direview | Required reviews di branch protection | Git history |
| Patch dalam SLA | Metrik time-to-fix | Tracker (episode 13) |
| Image production terverifikasi | Provenance/signature cosign | Registry (episode 23) |
Pola umumnya: setiap gate security di CI adalah generator evidence. Simpan hasil scan sebagai artifact bertag commit SHA, dan audit kalian tinggal query — bukan buru-buru screenshot tiga minggu sebelum deadline.
Tip
Saat auditor meminta "buktikan bahwa review dilakukan sebelum deploy", jawaban terbaik bukan PDF kebijakan, melainkan link ke workflow yang secara teknis mustahil deploy tanpa approval — compliance as code dalam arti harfiahnya.
Inti yang harus dibawa pulang:
Di episode 21 kita masuk era baru: AI-Assisted AppSec — memakai LLM untuk mempercepat code review dan triase temuan, membangun AI security gates di CI, dan sama pentingnya: memahami batas serta risiko hallucination agar AI memperkuat program kalian, bukan meruntuhkan kredibilitasnya. Sampai jumpa di episode 21!