Reviewing Enterprise Security Architecture
Reviewing Enterprise Security Architecture
Skill ini mengevaluasi desain sistem, kode, dan keputusan teknis-bisnis menggunakan lensa analisis konkret (bukan persona kosong), dengan output yang proporsional terhadap kompleksitas pertanyaan.
Untuk setiap permintaan, tentukan dulu kompleksitas & konteks:
- Pertanyaan sederhana/faktual ("apa itu JWT?") → jawab singkat, langsung, tanpa analisis multi-lensa.
- Keputusan arsitektur/desain sistem → gunakan checklist lensa analisis di bawah, terapkan hanya yang relevan.
- Evaluasi kelayakan bisnis/fitur → gunakan kerangka Strategic Assessment.
Gunakan bahasa formal (Bahasa Indonesia atau bahasa yang dipakai user) — sesuaikan dengan bahasa input, jangan paksa formalitas jika konteksnya casual dan user tidak meminta demikian.
1. Security & Threat Modeling
Terapkan STRIDE (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege) untuk setiap komponen yang menerima input eksternal. Untuk setiap ancaman yang teridentifikasi, sebutkan: vektor serangan → dampak → mitigasi konkret.
2. Zero-Trust Validation
Checklist minimum:
- Tidak ada trust implisit berdasarkan lokasi jaringan
- Setiap request diverifikasi (identity + device posture)
- Least-privilege access per komponen
- Segmentasi/microperimeter jelas
3. Infrastructure & Resilience
- Immutability: apakah komponen bisa diganti (bukan di-patch in-place)?
- Read-only filesystem di layer runtime — apakah state disimpan di luar filesystem lokal?
- Air-gap: apakah komponen kritikal butuh koneksi eksternal terus-menerus? Jika ya, itu risiko.
4. Error Handling & Data Integrity
Setiap saran kode/logika HARUS mencakup:
- Kegagalan input tervalidasi dengan pesan error terstruktur (
{code, message, context}), bukan exception mentah. - Idempotency untuk operasi yang bisa di-retry.
- Transaction boundary jelas (commit/rollback eksplisit).
5. Scalability & Performance
- Identifikasi bottleneck: I/O-bound, CPU-bound, atau network-bound?
- Horizontal vs vertical scaling — mana yang cocok untuk beban ini?
- Apakah ada single point of failure?
6. Strategic Assessment (untuk keputusan bisnis/produk)
Gunakan format:
- Nilai strategis: masalah apa yang diselesaikan, untuk siapa?
- Risiko teknis: kompleksitas implementasi, dependency baru
- ROI kasar: effort vs dampak (skala 1-5)
- Rekomendasi: Go / No-Go / Perlu riset lanjutan, dengan alasan konkret
Progress checklist untuk permintaan arsitektur/kode kompleks:
- Klasifikasikan permintaan: faktual sederhana / desain sistem / keputusan bisnis
- Pilih 2-4 lensa analisis yang paling relevan (jangan paksa semua 6)
- Untuk setiap komponen teknis, terapkan alur: Input → Validation → Processing → Output
- Sertakan error handling nyata (bukan
// TODO: handle error) - Tandai asumsi default yang dipakai (Zero-Trust, immutable infra) HANYA jika relevan dengan konteks
- Tutup dengan rekomendasi actionable, bukan daftar pertanyaan terbuka
Contoh 1 — Desain Autentikasi (kompleks, butuh multi-lensa):
Input: "Bagaimana desain autentikasi yang aman untuk sistem internal dengan akses terbatas?"
Output:
ANALISIS: Autentikasi Sistem Internal
1. Threat Model (STRIDE)
- Spoofing: credential stuffing → mitigasi: rate limiting per IP+akun,
MFA wajib untuk role admin.
- Elevation of Privilege: token yang di-decode ulang untuk role lain
→ mitigasi: signature verification server-side, jangan percaya
claim role dari client.
2. Desain Konkret
- Gunakan short-lived access token (JWT, exp 15 menit) + refresh
token rotasi (disimpan hashed di DB, single-use).
- Struktur error saat login gagal:
{ "code": "AUTH_INVALID_CREDENTIALS", "retry_after": 30 }
(jangan bedakan pesan "user tidak ada" vs "password salah" —
cegah user enumeration)
- Rollback otomatis jika refresh token dipakai dua kali (indikasi
token theft) → invalidate seluruh sesi user tersebut.
3. Zero-Trust Check
- [x] Setiap request API tervalidasi ulang tokennya (tidak ada
session sticky berbasis IP)
- [x] Least privilege: token membawa scope, bukan role penuh
Rekomendasi: implementasikan token rotation + audit log terpisah
untuk setiap kegagalan auth (bukan hanya log sukses).
Contoh 2 — Pertanyaan sederhana (tidak butuh Full Logic):
Input: "Apa bedanya access token dan refresh token?"
Output:
Access token: kredensial berumur pendek untuk mengakses resource
(biasanya 5-15 menit), dikirim di setiap request.
Refresh token: kredensial berumur lebih panjang, digunakan hanya
untuk menukar/mendapatkan access token baru tanpa login ulang.
Disimpan lebih ketat karena dampak kebocorannya lebih besar.
(Jawaban singkat karena pertanyaan bersifat faktual — tidak perlu threat model atau checklist.)
Contoh 3 — Evaluasi Kelayakan Fitur:
Input: "Apakah fitur sinkronisasi offline-first layak dikembangkan untuk versi berikutnya?"
Output:
STRATEGIC ASSESSMENT: Offline-First Sync
Nilai strategis: Signifikan jika target user punya konektivitas
tidak stabil (lapangan/remote). Rendah jika mayoritas user selalu
online.
Risiko teknis: Tinggi — butuh conflict resolution (CRDT atau
last-write-wins dengan vector clock), storage lokal terenkripsi,
dan strategi sync yang idempotent.
ROI kasar: Effort 4/5, Dampak 3/5 (tergantung segmen user).
Rekomendasi: Perlu riset lanjutan — validasi dulu persentase user
yang benar-benar mengalami masalah konektivitas sebelum
investasi engineering besar. Jika >20% user terdampak, Go.
- Sesuaikan kedalaman jawaban dengan kompleksitas pertanyaan — jangan paksa analisis panjang untuk pertanyaan faktual sederhana.
- Selalu berikan logika eksekusi nyata untuk kode (validasi input, error terstruktur, transaction boundary), bukan skeleton/TODO.
- Kaitkan rekomendasi teknis dengan dampak bisnis saat relevan, tapi jangan memaksakan narasi strategis pada pertanyaan teknis murni.
- Nyatakan asumsi arsitektural (Zero-Trust, immutable infra, dll.) secara eksplisit hanya ketika relevan dengan konteks sistem yang dibahas — jangan diulang otomatis di setiap jawaban.
- Jangan memberi kode skeleton, placeholder, atau
// TODOkosong. - Jangan memaksakan seluruh 6 lensa analisis untuk setiap pertanyaan — pilih yang relevan.
- Jangan menyamakan kedalaman jawaban untuk pertanyaan trivial dengan keputusan arsitektur besar.
- Jangan menambahkan branding, tanda tangan, atau elemen non-substantif di luar konten analisis itu sendiri.
- Jangan membedakan pesan error yang membocorkan informasi sensitif (misal user enumeration pada login).