Secret management dan konfigurasi per environment — Vibe Coding dan Security: Dari Prompt ke Aplikasi Aman

MATERI 11 DARI 28

Secret management dan konfigurasi per environment

Pisahkan secret dari source, prompt, log, dan client bundle; validasi keberadaan tanpa mencetak nilainya.

Tujuan pembelajaran

  • Menggunakan environment variables dengan benar.
  • Membedakan konfigurasi publik dan secret.
  • Merotasi credential yang terpapar.

Konsep utama

Secret lifecycle

Provision, gunakan, rotasi, revoke, dan audit.

Environment boundary

Secret pada shell SSH belum tentu tersedia pada PHP-FPM, container, atau service lain.

Alur kerja teknis

  1. Tulis tujuan dan acceptance criteria.
  2. Buat perubahan kecil yang dapat ditinjau.
  3. Jalankan test dan baca diff sebelum menerima hasil AI.

Contoh implementasi

Membaca secret tanpa fallback berbahaya

import os

api_key = os.environ.get("APP_API_KEY")
if not api_key:
    raise RuntimeError("APP_API_KEY belum dikonfigurasi")

Validasi konfigurasi Node.js

const required = ["DATABASE_URL", "SESSION_SECRET"];
for (const key of required) {
  if (!process.env[key]) throw new Error(`${key} belum dikonfigurasi`);
}

Cek kehadiran tanpa mencetak secret

test -n "$APP_API_KEY" && echo "APP_API_KEY tersedia" || { echo "APP_API_KEY hilang" >&2; exit 1; }

Aspek keamanan

  • Jangan menaruh secret di contoh `.env` nyata.
  • Jangan mencetak environment penuh pada error/debug endpoint.
  • Anggap secret yang ditempel ke chat sudah terpapar dan harus dirotasi.

Kesalahan umum

  • Menerima kode AI tanpa membaca diff dan memahami alur data.
  • Menguji hanya happy path dan mengabaikan input salah atau batas nilai.
  • Menyimpan secret, token, atau data nyata di prompt dan source code.

Pengujian dan verifikasi

  1. Jalankan contoh dengan input normal.
  2. Ulangi dengan input kosong, tipe salah, dan nilai batas.
  3. Pastikan error tidak membocorkan secret atau detail internal.

Latihan

  1. Modifikasi contoh dengan satu kebutuhan baru dan tulis acceptance criteria-nya.
  2. Tambahkan satu negative test lalu jelaskan risiko yang dicegah.

Checklist

  • Tujuan dan batas pekerjaan jelas.
  • Input divalidasi di server.
  • Secret tidak berada di source/prompt.
  • Test lulus dan diff sudah dibaca.

Rangkuman

Pisahkan secret dari source, prompt, log, dan client bundle; validasi keberadaan tanpa mencetak nilainya.