ข้ามไปยังเนื้อหาหลัก

สแกน secret ตอน push

เมื่อเปิดการสแกน secret ตอน push ให้ workspace แล้ว Loha จะสแกนทุก commit ที่คุณ push ไปยัง repository ที่เชื่อมต่อไว้ เพื่อหา secret เช่น access key ของคลาวด์ token และ private key Loha อ่านไฟล์ทั้งหมดของ commit ที่ push และไม่รันโค้ดของคุณ

สิ่งที่คุณจะเห็น​

ที่ไหนเกิดอะไรขึ้น
commit และ merge requestเช็ก loha/secret-scan: รอระหว่างสแกน เป็นสีเขียวเมื่อไม่พบ secret ที่เปิดอยู่ เป็นสีแดงพร้อมจำนวน secret ที่พบ
ปัญหาความปลอดภัยเมื่อ push ไปยัง default branch หรือ ref ที่ป้องกันไว้: หนึ่ง issue ต่อหนึ่ง secret ประเภท Secret
อีเมลและ Teamsเมื่อ push ไปยัง default branch หรือ ref ที่ป้องกันไว้: หนึ่งข้อความต่อหนึ่ง push ทุกระดับความรุนแรง
build ในโหมด Enforcebuild ของ commit ที่มี issue ประเภท secret เปิดอยู่จะถูกปฏิเสธก่อนเริ่มทำงาน พร้อมลิงก์ไปยัง issue

push ไปยัง branch อื่นยังได้เช็กเหมือนเดิม แต่ไม่เปิด issue และไม่ส่งข้อความ ซึ่งเป็นกฎเดียวกับ ปัญหาความปลอดภัยอื่น ๆ เพื่อไม่ให้ feature branch ทำให้ issue สลับไปมาระหว่างแก้แล้วกับเปิดใหม่

ทำงานเมื่อไร​

  • เปิดทั้งการสแกน secret ตอน push และปัญหาความปลอดภัยให้ workspace แล้ว
  • Build Security อยู่ในโหมด Observe หรือ Enforce ถ้าเป็น Off จะไม่มีการสแกน
  • repository มี webhook trigger หรือเชื่อมต่อผ่าน GitHub App ตัวกรอง branch และ path ของ trigger ไม่มีผล ทุก push ไปยัง branch จะถูกสแกน แม้จะไม่เริ่ม build
  • push commit เดิมไปยัง branch เดิมซ้ำจะไม่สแกนซ้ำ แต่ push ไปยัง branch อื่นจะสแกนใหม่

แก้ไข secret​

  1. เปลี่ยน secret ใหม่ก่อน การลบออกจากโค้ดไม่ได้ทำให้ secret ที่รั่วไปแล้วปลอดภัย เพราะยังอยู่ใน ประวัติ Git และทุก clone
  2. ลบออกจากโค้ดแล้ว push เช็กจะเป็นสีเขียว และบน default branch issue จะปิดเป็น Fixed
  3. ถ้าสิ่งที่พบไม่ใช่ secret จริง ให้ผู้ดูแลระบบทำเครื่องหมาย issue เป็น False positive สำหรับ secret ต้องมีผู้ดูแลระบบอีกคนอนุมัติ (ดู Triage) หลังจากนั้น push ถัดไปจะเป็นสีเขียว และ build จะไม่ถูกปฏิเสธอีก

โหมด Enforce​

ในโหมด Enforce Loha จะปฏิเสธ build เมื่อพบ issue ประเภท secret ที่ยังเปิดอยู่ของ repository ใน commit เดียวกับที่ build build จะล้มเหลวทันทีด้วย SECRET_DETECTED_AT_REVISION พร้อมลิงก์ไปยัง issue ทั้งในหน้า build และใน loha build get การปฏิเสธมีผลเฉพาะ branch ที่ policy ป้องกันไว้ (ทุก branch ถ้า policy ไม่ได้ระบุ) และเป็นไปตามสถานะ issue เมื่อ issue ถูกแก้หรือ triage แล้ว build ของ commit นั้นจะรันได้อีกครั้ง การเปลี่ยน secret ใหม่คือสิ่งที่ปกป้องคุณจริง ๆ

การสแกนของแต่ละ push จะเสร็จหลังจากที่ build ที่ push เดียวกันนั้นเริ่มและถูกวางแผนไปแล้ว ดังนั้น build แรกนั้นจะไม่ถูกปฏิเสธโดยการตรวจนี้ (เกณฑ์ secret ใน policy ของคุณเอง ถ้ามี ยังมีผลกับ build นั้นตามปกติ) ส่วน build ครั้งถัดไปของ commit เดียวกัน เช่น การรันซ้ำ การ retry หรือ build สำหรับ deploy จะถูกปฏิเสธตราบใดที่ issue ยังเปิดอยู่

สิ่งที่ฟีเจอร์นี้ไม่ได้ทำ​

  • สแกนเฉพาะ commit ล่าสุดของแต่ละ push secret ที่เพิ่มแล้วลบออกภายใน push เดียวกันจะไม่ถูกพบ
  • ไม่ได้ปฏิเสธการ push สำหรับ Loha Repos มีแผนจะเพิ่มการตรวจแบบ pre-receive
  • ไม่ได้เปลี่ยนหรือเพิกถอน secret ให้คุณ
  • ถ้าการสแกนทำไม่สำเร็จ เช็กจะเป็นสีแดงว่า "could not finish" ให้ push commit ใหม่เพื่อสแกนอีกครั้ง