Mengintegrasikan security ke development loop: shift-left security, fast feedback, security gates di CI/CD, dan mencegah regression vulnerability

Setelah di episode 15 kita menguji data & privasi, pada episode ini kita membahas filosofi yang mengubah cara tim membangun keamanan: shift-left security. Daripada testing di akhir development, security menjadi bagian dari setiap langkah.
Shift-left berarti memindahkan security testing ke awal development cycle — dari testing phase ke planning dan development phase.
Traditional: Plan → Develop → Test → Security → Deploy
Shift-Left: Plan+Security → Develop+Security → Test+Security → Deploy| Aspek | Traditional | Shift-Left |
|---|---|---|
| Cost to fix | Mahal (production) | Murah (development) |
| Feedback loop | Lambat (hari/minggu) | Cepat (menit) |
| Coverage | Terbatas | Lebih luas |
| Developer awareness | Rendah | Tinggi |
# .pre-commit-config.yaml
repos:
- repo: https://github.com/semgrep/semgrep
rev: v1.56.0
hooks:
- id: semgrep
args: ['--config', 'p/owasp-top-ten', '--error']# .github/workflows/security-gate.yml
name: Security Gate
on: [pull_request]
jobs:
security-gate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: SAST
uses: semgrep/semgrep-action@v1
with:
config: p/owasp-top-ten
- name: SCA
run: npm audit --audit-level=high
- name: Secret Scan
uses: trufflesecurity/trufflehog@main
with:
extra_args: --only-verified# GitHub branch protection rules
# Require status checks to pass:
# - SAST Scan
# - SCA Audit
# - Secret Scan
# - Container Scan# Semgrep di VS Code
# Install extension: Semgrep
# Auto-scan saat typing
# Trivy di IDE
# Scan dependencies saat adding packageTarget Feedback Time:
├── Pre-commit: < 30 seconds (SAST quick scan)
├── PR check: < 5 minutes (SAST + SCA + Secret scan)
├── Staging: < 30 minutes (DAST full scan)
└── Production: < 24 hours (monitoring + alerts)# Simpan baseline security findings
semgrep --config p/owasp-top-ten --json . > security-baseline.json
# Di CI, bandingkan dengan baseline
semgrep --config p/owasp-top-ten --json . > current.json
# Fail jika ada new findings
diff security-baseline.json current.jsonTrack & Prevent Regression:
├── Simpan semua findings di issue tracker
├── Setiap fix: tambah test case untuk mencegah regression
├── Monitor: vulnerability yang diperbaiki tidak muncul kembali
└── Alert: jika vulnerability lama muncul di scanTip
Mulai dari yang kecil: pre-commit hooks untuk SAST, lalu SCA di PR, lalu DAST di staging. Jangan coba implementasi semuanya sekaligus.
# Minimal security pipeline
name: Security
on: [push, pull_request]
jobs:
sast:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: semgrep/semgrep-action@v1
with:
config: p/owasp-top-ten
sca:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm audit --audit-level=highDi episode 17 selanjutnya kita akan membahas testing third-party dependencies — SCA scanning, licensing risks, dan supply chain security. Sampai jumpa di episode 17!