จัดการ API key ให้ปลอดภัย: เก็บ หมุนเวียน และจำกัดการใช้งาน
อ่าน 1 นาที
ไม่มีรูปภาพ
API key คือกุญแจที่ให้ระบบของคุณคุยกับบริการอื่น เช่น สร้างรายการรับชำระกับ PPay ถ้ากุญแจรั่ว คนอื่นอาจใช้แทนคุณได้ บทความนี้เป็นแนวทางเชิงป้องกันที่ทำได้จริงสำหรับร้านเล็กถึงทีมนักพัฒนา
เข้าใจก่อนว่าคีย์คือความลับ
ให้ปฏิบัติกับ API key เหมือนรหัสผ่าน ไม่ใช่ข้อมูลทั่วไป คีย์ที่ใช้เรียก API ฝั่งเซิร์ฟเวอร์ต้องอยู่ฝั่งเซิร์ฟเวอร์เท่านั้น ต้องไม่ถูกฝังในหน้าเว็บ ในแอปมือถือที่แจกให้ผู้ใช้ หรือในไฟล์ JavaScript ที่เบราว์เซอร์ดาวน์โหลดได้ เพราะทุกคนเปิดดูได้
เก็บคีย์อย่างไร
ควรทำ
- เก็บในตัวแปรสภาพแวดล้อม (environment variable) หรือที่เก็บความลับของโฮสต์
- จำกัดสิทธิ์ไฟล์ตั้งค่า ให้เฉพาะบัญชีที่รันแอปอ่านได้
- ถ้าใช้ปลั๊กอินบน WordPress, WHMCS หรือ Magento ให้ใส่ในหน้าตั้งค่าของปลั๊กอินเท่านั้น และจำกัดคนที่เข้าหลังบ้านได้
- เปิดการยืนยันตัวตนสองชั้น (2FA) ให้บัญชีผู้ดูแลระบบของร้านและของ PPay
ไม่ควรทำ
- commit คีย์ลงที่เก็บโค้ดที่เป็นสาธารณะ หรือแม้แต่ที่เก็บส่วนตัวที่มีคนจำนวนมากเข้าถึง
- ส่งคีย์ทางแชต อีเมล หรือภาพหน้าจอที่แชร์ต่อได้ง่าย
- เขียนคีย์ลงใน log หรือข้อความแจ้งข้อผิดพลาดที่แสดงให้ผู้ใช้เห็น
- ใช้คีย์เดียวกันกับหลายระบบจนไม่รู้ว่ารั่วจากที่ไหน
แยกคีย์ตามการใช้งาน
หลักการคือ "หนึ่งงาน หนึ่งคีย์" เมื่อแยกคีย์ตามเว็บไซต์หรือสภาพแวดล้อม (ทดสอบกับใช้งานจริง) หากต้องเพิกถอนคีย์หนึ่ง ระบบอื่นจะไม่หยุดตามไปด้วย และเมื่อพบการใช้งานผิดปกติจะย้อนหาต้นทางได้ง่ายขึ้น หากแพลตฟอร์มที่คุณใช้รองรับการสร้างคีย์หลายตัว ควรใช้ประโยชน์จากข้อนี้ ตรวจรายละเอียดตัวเลือกจริงในหน้าตั้งค่าบัญชีและ เอกสาร API ของ PPay
หมุนเวียนคีย์เป็นประจำ
การเปลี่ยนคีย์เป็นระยะช่วยลดความเสียหายหากมีคีย์เก่าหลุดไปโดยไม่รู้ตัว ขั้นตอนที่ปลอดภัยคือ
- สร้างคีย์ใหม่
- นำไปตั้งค่าในระบบทุกจุดที่ใช้ แล้วทดสอบว่าทำงานปกติ
- เพิกถอนคีย์เก่า
- ตรวจว่าไม่มีระบบใดยังใช้คีย์เก่าอยู่ เช่น งานตรวจตามรอบหรือสคริปต์ที่ลืมไว้
ควรหมุนเวียนทันทีเมื่อมีพนักงานหรือผู้รับจ้างที่เคยเข้าถึงคีย์ลาออกหรือเลิกงาน
เมื่อสงสัยว่าคีย์รั่ว
- เพิกถอนหรือเปลี่ยนคีย์ทันที ไม่ต้องรอพิสูจน์ก่อน
- ตรวจรายการรับชำระและการเรียกใช้งานที่ผิดปกติย้อนหลัง
- หากเคยลงที่เก็บโค้ด ให้ถือว่ารั่วแล้ว แม้ลบไฟล์ออกภายหลัง เพราะประวัติยังอยู่
- เปลี่ยนรหัสผ่านและ Webhook Secret ที่เกี่ยวข้องด้วย
- ตรวจหาจุดที่รั่ว เช่น log ภาพหน้าจอ หรือไฟล์สำรอง แล้วอุดช่องนั้น
อย่าลืมความลับของ webhook
นอกจาก API key แล้ว Webhook Secret ที่ใช้ตรวจลายเซ็นก็เป็นความลับระดับเดียวกัน อ่านเพิ่มเรื่องหลักการได้ที่ บทความเรื่อง webhook และอย่าให้ฝั่งรับเชื่อเพียงลายเซ็น ควรอ่านสถานะจากต้นทางซ้ำก่อนปล่อยของเสมอ
เช็กลิสต์สรุป
- คีย์อยู่ฝั่งเซิร์ฟเวอร์เท่านั้น ไม่อยู่ในหน้าเว็บหรือที่เก็บโค้ดสาธารณะ
- แยกคีย์ตามเว็บและสภาพแวดล้อม
- มีกำหนดหมุนเวียนและรู้ว่าต้องเปลี่ยนที่ไหนบ้าง
- เปิด 2FA ให้บัญชีผู้ดูแล
- มีขั้นตอนฉุกเฉินที่ทุกคนในทีมรู้
ปิดท้าย
ความปลอดภัยของ API key ไม่ต้องซับซ้อน แค่ทำให้เป็นนิสัย หากคุณกำลังเชื่อมระบบกับ PPay ดูภาพรวมการเริ่มต้นได้ที่ หน้าเริ่มใช้งาน และรายละเอียดการเรียกใช้ที่ เอกสาร API