Menjawab Insiden Secret: Studi Kasus LastPass
Bocornya data LastPass mengingatkan bahwa secret yang tersimpan di repositori atau pipeline tanpa kontrol dapat menjadi titik lemah utama. Untuk merespons insiden tersebut, tim pengembang harus membangun pipeline CI/CD yang memblokir commit berisi secret, memaksa rotasi otomatis, dan mengintegrasikan Vault sebagai sumber kebenaran untuk credential, sehingga memperkecil risiko eksfiltrasi.
Pada artikel ini dibahas langkah praktis integrasi Vault dalam pipeline CI/CD, hook linting sebelum merge, konfigurasi playbook insiden, audit dan rotasi secret, rollback otomatis, serta monitoring pascapengungkapan.
1. Rangkaian Arsitektur CI/CD dan Vault
Tujuan utama adalah membuat pipeline yang secret-aware: setiap job hanya bekerja dengan credential yang diambil langsung dari Vault dengan akses terbatas, tanpa hard-coded. Arsitektur umumnya terdiri dari:
- CI/CD runner yang menjalankan job di lingkungan terisolasi.
- Vault (misalnya HashiCorp Vault) dengan sekumpulan secret engine dan policy minimal.
- Sidecar atau Agent Vault (Vault Agent atau Injector) untuk pengambilan token dinamis.
- Tooling linting seperti GitLeaks atau Trufflehog dalam job lint untuk mendeteksi secret yang tidak seharusnya.
Pipeline harus memverifikasi otentikasi terhadap Vault via approle atau Kubernetes auth. Token yang digunakan hanya berlaku sepanjang job berjalan, lalu dihancurkan.
Contoh Job CI/CD dengan Vault
Berikut contoh cuplikan GitLab CI yang mengambil secret dan menjalankan linting.
stages:
- lint
- build
lint-secrets:
stage: lint
script:
- vault login -method=approle role_id="$VAULT_ROLE_ID" secret_id="$VAULT_SECRET_ID"
- export DB_PASSWORD=$(vault kv get -field=password secret/app/db)
- gitleaks detect --config=.gitleaks.toml --path=. --exit-code=1
dependencies: []
Job lint hanya lanjut jika Gitleaks tidak menemukan secret; jika ada, pipeline gagal sebelum deployment. Token Vault diambil secara dinamis dan tidak disimpan di repo.
2. Hook Pre-Merge untuk Linting Secret
Linting secret di pipeline terlalu lambat jika menunggu merge, sehingga sebaiknya dijalankan sebelum merge request dibuat. Terapkan hook pre-merge yang dijalankan di lokal developer atau runner otomatis:
- Pre-commit hook: menjalankan GitLeaks atau semirip untuk scan staging area.
- CI pre-merge job: menumpuk MR ke branch sandbox dan memicu job linting yang identik dengan pipeline utama.
Contoh konfigurasi .pre-commit-hooks.yaml:
- id: gitleaks
name: Gitleaks Secret Scan
entry: gitleaks detect --config=.gitleaks.toml --path=.
language: system
Hook ini memblokir commit yang salah sebelum sampai ke rembugan merge.
3. Otomasi Rotasi dan Rollback saat Deteksi
Jika linting pipeline mendeteksi secret tersembunyi—misalnya hasil scan Gitleaks menunjukkan credential baru—pipeline harus otomatis menjalankan playbook respons.
- Pipeline mengirim peringatan ke tim terkait (Slack/Email) dan memicu workflow rotasi.
- Vault memutus token lama dan membuat secret baru dengan API.
- Deployment yang memerlukan credential lama otomatis rollback ke release terakhir yang sudah diperbarui dengan secret baru.
Integrasi dengan tool seperti Argo Rollouts atau Spinnaker memungkinkan rollback terprogram jika lint memberikan sinyal kegagalan validasi secret. Pastikan job rollback mencatat masing-masing langkah ke audit log Vault.
4. Audit, Monitoring, dan Playbook Insiden
Audit Vault harus diaktifkan agar setiap pemanggilan secret tercatat. Gunakan backend audit berupa file atau syslog. Data audit digunakan untuk post-mortem dan pemicu pendeteksian anomali.
Monitoring harus mencakup:
- Metric jumlah permintaan Vault berhasil/gagal.
- Logs pipeline yang gagal karena deteksi secret.
- Event SIEM untuk aktivitas akses Vault diluar jam kerja.
Contoh playbook respons sederhana:
- Deteksi: Pipeline gagal karena lint secret.
- Verifikasi: Mengidentifikasi secret yang bocor dan repositori terkait.
- Rotasi: Generate secret baru di Vault, update env vars di deployment, restart service.
- Rollback: Kembalikan deployment ke versi terakhir jika rotasi tidak selesai sebelum batas waktu.
- Audit: Lampirkan data lint failure, logging Vault, dan langkah mitigasi.
5. Checklist Praktis
- 🔐 Vault policy minimal: hanya read untuk job tertentu.
- 🧹 Linting secret di pre-commit + CI lint job.
- 🌀 Rotasi otomatis via Vault API dan update pipeline.
- 🔄 Rollbacks diaktifkan saat deteksi secret berulang.
- 🧾 Audit trails Vault aktif, dipantau melalui SIEM.
- 📡 Monitoring metric Vault, pipeline failure, dan alerting real-time.
- 🧯 Playbook respons yang terdokumentasi, diuji setidaknya sekali per kuartal.
Kasus LastPass membuktikan bahwa kontrol manual tidak cukup. Dengan menggabungkan linting secret, Vault sebagai sumber kebenaran, automasi rotasi, rollback, dan monitoring, tim pengembang dapat menutup celah kebocoran secara proaktif.
Komentar
0 komentar
Masuk ke akun kamu untuk ikut berkomentar.
Belum ada komentar
Jadilah yang pertama ikut berdiskusi!