เผลอ Commit API Key หรือ .env ลง Git ต้องรับมืออย่างไร
จัดการเหตุการณ์ secret รั่วด้วยการ revoke และ rotate ทันที ตรวจการใช้งาน ล้างประวัติเมื่อจำเป็น และเพิ่ม secret scanning เพื่อป้องกันการเกิดซ้ำ

ภาพรวม
เผลอ commit ไฟล์ลับ เช่น API key, token, .env หรือ private key เป็นเรื่องที่ต้องรับมือเร็วและจริงจัง 🔐
สิ่งแรกคืออย่าคิดว่าแค่ลบไฟล์ใน commit ถัดไปแล้วจบ เพราะ secret ยังอยู่ใน Git history และอาจถูกคนอื่นหรือระบบดึงไปแล้ว
ขั้นตอนที่ควรทำทันทีคือ revoke หรือ rotate secret นั้นก่อน เช่นออก token ใหม่ ปิด key เดิม หรือเปลี่ยน password ที่หลุด
จากนั้นเพิ่มไฟล์ลับเข้า .gitignore เพื่อป้องกันไม่ให้เผลอ commit ซ้ำในอนาคต
ถ้า secret ยังไม่ push อาจใช้ reset/amend เพื่อลบออกจาก commit local ได้ แต่ต้องตรวจให้แน่ใจว่า history สะอาดก่อน push
ถ้า push ขึ้น remote แล้ว อาจต้อง rewrite history ด้วยเครื่องมืออย่าง git filter-repo หรือ BFG Repo-Cleaner และแจ้งทีมให้ sync ใหม่อย่างถูกต้อง
แต่ถึง rewrite history แล้ว secret ที่เคยหลุดก็ยังควรถูกมองว่า compromised เพราะอาจถูก cache, mirror หรือดึงไปแล้ว
ควรเสริมระบบป้องกัน เช่น pre-commit hook, secret scanner, GitHub secret scanning หรือแยก config ด้วย environment variables
สรุปคือ secret หลุดใน Git ต้องทำสองเรื่องคู่กัน: ปิด secret เดิมทันที และทำความสะอาด history/ป้องกันไม่ให้เกิดซ้ำ
สิ่งที่ควรมีในทีมคือ checklist หลัง secret หลุด เช่น แจ้งผู้เกี่ยวข้อง, revoke key, สร้าง key ใหม่, ตรวจ log การใช้งาน และเปิด secret scanning
ไฟล์ลับที่ควรระวังไม่ได้มีแค่ .env แต่รวมถึง service account JSON, private key, database dump, token ใน config และไฟล์ backup ที่มี credential
หลังแก้แล้วควรเพิ่ม guardrail เช่น .gitignore, pre-commit hook และการแยก secret ไปไว้ใน secret manager หรือ environment ของ deployment platform
แนวทางนำไปใช้
- นำแนวคิดจากโพสต์นี้ไปทดลองกับงานจริงของคุณ
- แยกเป็นขั้นตอนเล็ก ๆ แล้วทำทีละส่วน
- บันทึกผลลัพธ์และสิ่งที่เรียนรู้เพื่อต่อยอด
สรุป
จัดการเหตุการณ์ secret รั่วด้วยการ revoke และ rotate ทันที ตรวจการใช้งาน ล้างประวัติเมื่อจำเป็น และเพิ่ม secret scanning เพื่อป้องกันการเกิดซ้ำ