Kebijakan yang hidup di wiki dan deteksi di dashboard vendor tidak bisa direview, ditest, atau diaudit; di episode ini kalian menyusun security repo terpusat — policy OPA, rule Falco, konfigurasi scanner — lengkap dengan CI untuk test dan rilis bertahap, sehingga seluruh postur keamanan dikelola persis seperti software

Di episode 14 kita menemukan masalah desain sebelum jadi kode. Episode ini tentang prinsip yang menyatukan semua tool yang sudah kalian pakai sejauh ini: security as code. Setiap artefak keamanan — policy OPA, rule Falco, ruleset Semgrep, konfigurasi Kyverno, exception list — diperlakukan persis seperti aplikasi: disimpan di Git, direview lewat PR, ditest otomatis, dan dirilis secara terkendali.
Mengapa prinsip ini menentukan? Karena alternatifnya adalah security as tribal knowledge: policy hidup di kepala dua orang senior, deteksi di dashboard vendor yang tak ada version control-nya, dan saat orang-orang itu resign, organisasi kembali ke nol tanpa jejak audit.
Inventaris artefak yang idealnya versioned:
| Artefak | Contoh | Dibahas |
|---|---|---|
| Policy IaC | Rego conftest, Checkov custom checks | Episode 7 |
| Policy cluster | Kyverno ClusterPolicy | Episode 8 & 13 |
| Detection rules | Falco rules, Sigma rules | Episode 11 & 24 |
| Ruleset scanner | Semgrep config custom, gitleaks rules | Episode 4-5 |
| Exception/waiver | Daftar pengecualian ber-expiry + justifikasi | Episode 10 |
Struktur repo tipikal:
security/
├── policy/
│ ├── terraform/ # rego untuk conftest
│ └── k8s/ # kyverno policies
├── detection/
│ ├── falco/custom-rules.yaml
│ └── sigma/ # rules lintas SIEM
├── scanning/
│ ├── semgrep/org-rules.yaml
│ └── trivy/.trivyignore # ignore berjustifikasi + expiry
└── exceptions/
└── waivers.yaml # semua exception organisasiPola penting: exceptions/ terpusat. Pengecualian yang tersebar di banyak repo adalah lubang hitam audit — mengumpulkannya di satu file membuat review berkala (dan penghapusan expired waiver) menjadi tugas 30 menit, bukan proyek.
Perubahan policy = perubahan kode = lewat PR dengan proses yang sama ketatnya:
Setiap tahap punya alasan:
policy/k8s/ wajib approval tim platform; mencegah "sekadar tweak" yang melonggarkan kontrol.OPA punya framework test bawaan — manfaatkan penuh:
package terraform.s3
test_bucket_with_encryption_allowed {
plan := mock_plan_with_encrypted_bucket
count(deny) == 0 with input as plan
}
test_bucket_without_encryption_denied {
plan := mock_plan_unencrypted_bucket
count(deny) == 1 with input as plan
}Jalankan sebagai bagian CI:
opa test policy/ -v
conftest verify --policy policy/terraform/Prinsip yang sama berlaku lintas tool: Falco punya falco-rule-test harness, Semgrep punya mode test dengan expected findings (semgrep --test). Aturan praktisnya sederhana: setiap rule yang bisa gagal-kan pipeline wajib punya minimal dua test — positif dan negatif.
Repo selesai ditulis belum berarti diterapkan. Pola distribusi umum:
Yang penting dari ketiganya: ada satu sumber kebenaran, dan konsumen tahu persis versi mana yang mereka pakai.
Important
Hindari pola "push langsung ke produksi" untuk perubahan enforcement. Satu typo di regex policy bisa memblokir semua deploy organisasi pagi Senin. Rilis bertahap + rollback cepat bukan formalitas — itu yang membuat tim percaya sistem.
Dengan security as code, organisasi mendapat:
Inti yang harus dibawa pulang:
Di episode 16 selanjutnya kita membahas Compliance as Code — bagaimana benchmark CIS dicek otomatis, evidence audit dikumpulkan mesin tanpa screenshot manual, dan audit tahunan berubah dari kepanikan dua minggu menjadi query dashboard. Sampai jumpa!