Allstar เป็นแอป GitHub ที่ตรวจสอบองค์กรหรือที่เก็บข้อมูล GitHub อย่างต่อเนื่องเพื่อปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัย หาก Allstar ตรวจพบการละเมิดนโยบายความปลอดภัย ระบบจะสร้างปัญหาเพื่อแจ้งเตือนพื้นที่เก็บข้อมูลหรือเจ้าขององค์กร สำหรับนโยบายความปลอดภัยบางอย่าง Allstar ยังสามารถเปลี่ยนการตั้งค่าโปรเจ็กต์ที่ทำให้เกิดการละเมิดได้โดยอัตโนมัติ โดยเปลี่ยนกลับเป็นสถานะที่คาดหวัง
เป้าหมายของ Allstar คือเพื่อให้คุณสามารถควบคุมไฟล์และการตั้งค่าที่ส่งผลต่อความปลอดภัยของโครงการของคุณได้อย่างละเอียด คุณสามารถเลือกนโยบายความปลอดภัยที่จะตรวจสอบทั้งในระดับองค์กรและพื้นที่เก็บข้อมูล และวิธีการจัดการกับการละเมิดนโยบาย คุณยังสามารถพัฒนาหรือสนับสนุนนโยบายใหม่ได้
Allstar ได้รับการพัฒนาโดยเป็นส่วนหนึ่งของโครงการ OpenSSF Scorecard
หากคุณพบปัญหาไม่พึงประสงค์ที่สร้างโดย Allstar โปรดปฏิบัติตามคำแนะนำเหล่านี้เพื่อเลือกไม่รับ
Allstar สามารถกำหนดค่าได้สูง การควบคุมมีสามระดับหลัก:
การกำหนดค่าเหล่านี้เสร็จสิ้นในพื้นที่เก็บข้อมูล .allstar
ขององค์กร
ระดับ Repo: ผู้ดูแลพื้นที่เก็บข้อมูลในองค์กรที่ใช้ Allstar สามารถเลือกที่จะเลือกให้พื้นที่เก็บข้อมูลของตนเข้าหรือออกจากการบังคับใช้ระดับองค์กรได้ หมายเหตุ: การควบคุมระดับที่เก็บเหล่านี้จะใช้งานได้ก็ต่อเมื่ออนุญาตให้ใช้ "การแทนที่ repo" ในการตั้งค่าระดับองค์กรเท่านั้น การกำหนดค่าเหล่านี้เสร็จสิ้นในไดเร็กทอรี .allstar
ของที่เก็บ
ระดับนโยบาย: ผู้ดูแลระบบหรือผู้ดูแลสามารถเลือกได้ว่านโยบายใดที่จะเปิดใช้งานบน repos เฉพาะ และการดำเนินการใดที่ Allstar จะดำเนินการเมื่อมีการละเมิดนโยบาย การกำหนดค่าเหล่านี้เสร็จสิ้นในไฟล์ yaml นโยบายในพื้นที่เก็บข้อมูล .allstar
ขององค์กร (ผู้ดูแลระบบ) หรือไดเรกทอรี .allstar
ขององค์กร (ผู้ดูแล)
ก่อนที่จะติดตั้ง Allstar ในระดับองค์กร คุณควรตัดสินใจว่าคุณต้องการให้ Allstar ทำงานบนพื้นที่เก็บข้อมูลจำนวนเท่าใด สิ่งนี้จะช่วยคุณเลือกระหว่างกลยุทธ์การเลือกเข้าร่วมและการเลือกไม่เข้าร่วม
กลยุทธ์การเลือกใช้ช่วยให้คุณเพิ่มพื้นที่เก็บข้อมูลที่คุณต้องการให้ Allstar ทำงานด้วยตนเองได้ หากคุณไม่ระบุที่เก็บข้อมูลใดๆ Allstar จะไม่ทำงานแม้จะติดตั้งแล้วก็ตาม เลือกกลยุทธ์การเลือกใช้ หากคุณต้องการบังคับใช้นโยบายกับพื้นที่เก็บข้อมูลทั้งหมดจำนวนเล็กน้อย หรือต้องการทดลองใช้ Allstar บนพื้นที่เก็บข้อมูลเดียวก่อนที่จะเปิดใช้งานเพิ่มเติม ตั้งแต่เวอร์ชัน 4.3 เป็นต้นมา ระบบรองรับ globs เพื่อเพิ่มที่เก็บหลายแห่งที่มีชื่อคล้ายกันได้อย่างง่ายดาย
กลยุทธ์การเลือกไม่ใช้ (แนะนำ) เปิดใช้งาน Allstar บนที่เก็บทั้งหมด และอนุญาตให้คุณเลือกที่เก็บด้วยตนเองเพื่อเลือกไม่ใช้การบังคับใช้ของ Allstar คุณยังสามารถเลือกที่จะไม่ใช้ repos สาธารณะทั้งหมดหรือ repos ส่วนตัวทั้งหมดได้ เลือกตัวเลือกนี้หากคุณต้องการรัน Allstar บนที่เก็บข้อมูลทั้งหมดในองค์กร หรือต้องการเลือกไม่ใช้ที่เก็บข้อมูลจำนวนเล็กน้อยหรือประเภทที่เจาะจง (เช่น สาธารณะและส่วนตัว) ตั้งแต่เวอร์ชัน 4.3 เป็นต้นมา ระบบรองรับ globs เพื่อเพิ่มที่เก็บหลายแห่งที่มีชื่อคล้ายกันได้อย่างง่ายดาย
ยกเลิก (แนะนำ) optOutStrategy = จริง | เลือกใช้ optOutStrategy = เท็จ | |
---|---|---|
พฤติกรรมเริ่มต้น | เปิดใช้งาน repos ทั้งหมดแล้ว | ไม่มีการเปิดใช้งาน repos |
การเพิ่มที่เก็บด้วยตนเอง | การเพิ่ม repos ด้วยตนเองจะปิดใช้งาน Allstar ใน repos เหล่านั้น | การเพิ่ม repos ด้วยตนเองจะเปิดใช้งาน Allstar บน repos เหล่านั้น |
การกำหนดค่าเพิ่มเติม | optOutRepos: Allstar จะถูกปิดการใช้งานใน repos ที่ระบุไว้ optOutPrivateRepos: หากเป็นจริง Allstar จะถูกปิดการใช้งานใน repos ส่วนตัวทั้งหมด optOutPublicRepos: หากเป็นจริง Allstar จะถูกปิดการใช้งานใน repos สาธารณะทั้งหมด (optInRepos: การตั้งค่านี้จะถูกละเว้น) | optInRepos: Allstar จะเปิดใช้งานบน repos ที่ระบุไว้ (optOutRepos: การตั้งค่านี้จะถูกละเว้น) |
แทนที่ Repo | หากเป็นจริง: Repos สามารถเลือกยกเลิกการบังคับใช้ Allstar ขององค์กรได้โดยใช้การตั้งค่าในไฟล์ repo ของตนเอง การตั้งค่าการเลือกรับระดับองค์กรที่ใช้กับพื้นที่เก็บข้อมูลนั้นจะถูกละเว้น หากเป็นเท็จ: repos ไม่สามารถยกเลิกการบังคับใช้ Allstar ตามที่กำหนดค่าไว้ที่ระดับองค์กร | หากเป็นจริง: Repos สามารถเลือกใช้การบังคับใช้ Allstar ขององค์กรได้ แม้ว่าจะไม่ได้กำหนดค่าสำหรับ Repo ในระดับองค์กรก็ตาม การตั้งค่าการเลือกไม่ใช้ระดับองค์กรที่ใช้กับพื้นที่เก็บข้อมูลนั้นจะถูกละเว้น หากเป็นเท็จ: Repos ไม่สามารถเลือกใช้การบังคับใช้ Allstar ได้ หากไม่ได้กำหนดค่าในระดับองค์กร |
ทั้งตัวเลือก Quickstart และการติดตั้งด้วยตนเองเกี่ยวข้องกับการติดตั้งแอป Allstar คุณสามารถตรวจสอบสิทธิ์ที่ร้องขอได้ แอปขอสิทธิ์การอ่านการตั้งค่าและเนื้อหาไฟล์ส่วนใหญ่เพื่อตรวจสอบการปฏิบัติตามข้อกำหนดด้านความปลอดภัย มันร้องขอการเข้าถึงการเขียนไปยังปัญหาและตรวจสอบเพื่อให้สามารถสร้างปัญหาและอนุญาตการดำเนินการ block
ตัวเลือกการติดตั้งนี้จะเปิดใช้งาน Allstar โดยใช้กลยุทธ์การเลือกไม่ใช้บนที่เก็บข้อมูลทั้งหมดในองค์กรของคุณ นโยบายปัจจุบันทั้งหมดจะถูกเปิดใช้งาน และ Allstar จะแจ้งเตือนคุณเกี่ยวกับการละเมิดนโยบายโดยการยื่นเรื่อง นี่เป็นวิธีที่เร็วและง่ายที่สุดในการเริ่มใช้ Allstar และคุณยังสามารถเปลี่ยนการกำหนดค่าได้ในภายหลัง
ความพยายาม: ง่ายมาก
ขั้นตอน:
.allstar
แค่นั้นแหละ! ขณะนี้นโยบาย Allstar ปัจจุบันทั้งหมดเปิดใช้งานบนที่เก็บทั้งหมดของคุณแล้ว Allstar จะสร้างปัญหาหากมีการละเมิดนโยบาย
หากต้องการเปลี่ยนการกำหนดค่า โปรดดูคำแนะนำในการติดตั้งด้วยตนเอง
ตัวเลือกการติดตั้งนี้จะแนะนำคุณตลอดขั้นตอนการสร้างไฟล์การกำหนดค่าตามกลยุทธ์การเลือกเข้าร่วมหรือการเลือกไม่ใช้ ตัวเลือกนี้ให้การควบคุมการกำหนดค่าที่ละเอียดยิ่งขึ้นตั้งแต่เริ่มต้น
ความพยายาม: ปานกลาง
ขั้นตอน:
แต่ละนโยบายสามารถกำหนดค่าได้ด้วยการดำเนินการที่ Allstar จะดำเนินการเมื่อตรวจพบว่าพื้นที่เก็บข้อมูลไม่ปฏิบัติตามข้อกำหนด
log
: นี่เป็นการกระทำเริ่มต้น และจะเกิดขึ้นจริงกับการกระทำทั้งหมด ผลลัพธ์และรายละเอียดการดำเนินการตามนโยบายทั้งหมดจะถูกบันทึกไว้ ขณะนี้มีเพียงผู้ดำเนินการแอปเท่านั้นที่มองเห็นบันทึกได้ แผนการที่จะเปิดเผยบันทึกเหล่านี้อยู่ระหว่างการพิจารณาissue
: การกระทำนี้สร้างปัญหา GitHub มีการสร้างประเด็นเดียวเท่านั้นต่อนโยบาย และข้อความอธิบายรายละเอียดของการละเมิดนโยบาย หากปัญหาเปิดอยู่แล้ว จะมีการส่ง Ping พร้อมความคิดเห็นทุก 24 ชั่วโมงโดยไม่มีการอัปเดต (ปัจจุบันผู้ใช้ไม่สามารถกำหนดค่าได้) หากผลลัพธ์ของนโยบายเปลี่ยนแปลง ความคิดเห็นใหม่จะยังคงอยู่ในปัญหาและเชื่อมโยงในเนื้อหาของปัญหา เมื่อการละเมิดได้รับการแก้ไขแล้ว Allstar จะปิดปัญหาโดยอัตโนมัติภายใน 5-10 นาทีfix
: การดำเนินการนี้เป็นนโยบายเฉพาะ นโยบายจะทำการเปลี่ยนแปลงการตั้งค่า GitHub เพื่อแก้ไขการละเมิดนโยบาย นโยบายบางรายการอาจไม่รองรับสิ่งนี้ (ดูด้านล่าง)เสนอแต่ยังไม่ได้ดำเนินการ คำจำกัดความจะถูกเพิ่มในอนาคต
block
: Allstar สามารถตั้งค่าการตรวจสอบสถานะ GitHub และบล็อก PR ใด ๆ ในพื้นที่เก็บข้อมูลไม่ให้ถูกรวมเข้าด้วยกันหากการตรวจสอบล้มเหลวemail
: Allstar จะส่งอีเมลไปยังผู้ดูแลระบบพื้นที่เก็บข้อมูลrpc
: Allstar จะส่ง rpc ไปยังระบบเฉพาะองค์กรบางระบบมีการตั้งค่าสองแบบเพื่อกำหนดการดำเนินการของปัญหา:
issueLabel
พร้อมใช้งานในระดับองค์กรและพื้นที่เก็บข้อมูล การตั้งค่าจะแทนที่ป้ายกำกับ allstar
เริ่มต้นที่ใช้โดย Allstar เพื่อระบุปัญหา
issueRepo
มีให้บริการในระดับองค์กร การตั้งค่าจะบังคับให้สร้างปัญหาทั้งหมดที่สร้างขึ้นในองค์กรในพื้นที่เก็บข้อมูลที่ระบุ
เช่นเดียวกับการกำหนดค่าการเปิดใช้งานแอป Allstar นโยบายทั้งหมดจะถูกเปิดใช้งานและกำหนดค่าด้วยไฟล์ yaml ในที่เก็บ .allstar
ขององค์กรหรือในไดเรกทอรี .allstar
ของที่เก็บ เช่นเดียวกับแอปนี้ นโยบายจะถูกเลือกตามค่าเริ่มต้น และการดำเนินการ log
เริ่มต้นจะไม่ให้ผลลัพธ์ที่มองเห็นได้ วิธีง่ายๆ ในการเปิดใช้งานนโยบายทั้งหมดคือการสร้างไฟล์ yaml สำหรับแต่ละนโยบายที่มีเนื้อหา:
optConfig:
optOutStrategy: true
action: issue
รายละเอียดวิธีดำเนินการ fix
สำหรับแต่ละนโยบายมีรายละเอียดอยู่ที่ด้านล่างนี้ หากละเว้นด้านล่าง การดำเนินการ fix
จะไม่สามารถใช้ได้
ไฟล์กำหนดค่าของนโยบายนี้มีชื่อว่า branch_protection.yaml
และคำจำกัดความของการกำหนดค่าอยู่ที่นี่
นโยบายการป้องกันสาขาจะตรวจสอบว่าการตั้งค่าการป้องกันสาขาของ GitHub ได้รับการตั้งค่าอย่างถูกต้องตามการกำหนดค่าที่ระบุ ข้อความปัญหาจะอธิบายว่าการตั้งค่าใดไม่ถูกต้อง ดูเอกสารประกอบของ GitHub สำหรับการแก้ไขการตั้งค่า
การดำเนิน fix
จะเปลี่ยนการตั้งค่าการป้องกันสาขาให้สอดคล้องกับการกำหนดค่านโยบายที่ระบุ
ไฟล์กำหนดค่าของนโยบายนี้มีชื่อว่า binary_artifacts.yaml
และคำจำกัดความของการกำหนดค่าอยู่ที่นี่
นโยบายนี้รวมการตรวจสอบจากดัชนีชี้วัด ลบส่วนไบนารีออกจากที่เก็บเพื่อให้เป็นไปตามข้อกำหนด เนื่องจากผลลัพธ์ของดัชนีชี้วัดสามารถละเอียดได้ คุณอาจต้องเรียกใช้ดัชนีชี้วัดเพื่อดูข้อมูลโดยละเอียดทั้งหมด
ไฟล์กำหนดค่าของนโยบายนี้มีชื่อว่า codeowners.yaml
และคำจำกัดความของการกำหนดค่าอยู่ที่นี่
นโยบายนี้จะตรวจสอบการมีอยู่ของไฟล์ CODEOWNERS
ในที่เก็บของคุณ
ไฟล์กำหนดค่าของนโยบายนี้มีชื่อว่า outside.yaml
และคำจำกัดความของการกำหนดค่าอยู่ที่นี่
นโยบายนี้จะตรวจสอบว่าผู้ทำงานร่วมกันภายนอกมีสิทธิ์การเข้าถึงพื้นที่เก็บข้อมูลระดับผู้ดูแลระบบ (ค่าเริ่มต้น) หรือแบบพุช (ไม่บังคับ) เฉพาะสมาชิกองค์กรเท่านั้นที่ควรมีสิทธิ์เข้าถึงนี้ เนื่องจากสมาชิกที่ไม่น่าเชื่อถือสามารถเปลี่ยนการตั้งค่าระดับผู้ดูแลระบบและกระทำโค้ดที่เป็นอันตรายได้
ไฟล์กำหนดค่าของนโยบายนี้มีชื่อว่า security.yaml
และคำจำกัดความของการกำหนดค่าอยู่ที่นี่
นโยบายนี้จะตรวจสอบว่าที่เก็บมีไฟล์นโยบายความปลอดภัยใน SECURITY.md
และไม่ว่างเปล่า ปัญหาที่สร้างขึ้นจะมีลิงก์ไปยังแท็บ GitHub ที่ช่วยให้คุณกำหนดนโยบายความปลอดภัยไปยังพื้นที่เก็บข้อมูลของคุณ
ไฟล์กำหนดค่าของนโยบายนี้มีชื่อว่า dangerous_workflow.yaml
และคำจำกัดความของการกำหนดค่าอยู่ที่นี่
นโยบายนี้จะตรวจสอบไฟล์การกำหนดค่าเวิร์กโฟลว์ GitHub Actions ( .github/workflows
) เพื่อหารูปแบบที่ตรงกับพฤติกรรมที่เป็นอันตรายที่ทราบ ดูเอกสาร OpenSSF Scorecard สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการตรวจสอบนี้
ไฟล์กำหนดค่าของนโยบายนี้มีชื่อว่า scorecard.yaml
และคำจำกัดความของการกำหนดค่าอยู่ที่นี่
นโยบายนี้เรียกใช้การตรวจสอบตารางสรุปสถิติที่แสดงอยู่ในการกำหนดค่า checks
การตรวจสอบทั้งหมดที่ทำงานต้องมีคะแนนเท่ากับหรือสูงกว่าการตั้ง threshold
โปรดดูเอกสาร OpenSSF Scorecard สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการตรวจสอบแต่ละครั้ง
ไฟล์กำหนดค่าของนโยบายนี้มีชื่อว่า actions.yaml
และคำจำกัดความของการกำหนดค่าอยู่ที่นี่
นโยบายนี้จะตรวจสอบไฟล์การกำหนดค่าเวิร์กโฟลว์ GitHub Actions ( .github/workflows
) (และเวิร์กโฟลว์ทำงานในบางกรณี) ในแต่ละ repo เพื่อให้แน่ใจว่าสอดคล้องกับกฎ (เช่น ต้องการ ปฏิเสธ) ที่กำหนดไว้ในการกำหนดค่าระดับองค์กรสำหรับ นโยบาย.
ไฟล์กำหนดค่าของนโยบายนี้มีชื่อว่า admin.yaml
และคำจำกัดความของการกำหนดค่าอยู่ที่นี่
นโยบายนี้จะตรวจสอบว่าตามค่าเริ่มต้นที่เก็บข้อมูลทั้งหมดจะต้องมีผู้ใช้หรือกลุ่มที่ได้รับมอบหมายให้เป็นผู้ดูแลระบบ ช่วยให้คุณสามารถกำหนดค่าได้หากผู้ใช้ได้รับอนุญาตให้เป็นผู้ดูแลระบบ (ตรงข้ามกับทีม)
ดู repo นี้เป็นตัวอย่างของการกำหนดค่า Allstar ที่ใช้งานอยู่ ในฐานะผู้ดูแลระบบองค์กร โปรดพิจารณา README.md พร้อมข้อมูลบางอย่างเกี่ยวกับวิธีการใช้งาน Allstar ในองค์กรของคุณ
ตามค่าเริ่มต้น ไฟล์การกำหนดค่าระดับองค์กร เช่น ไฟล์ allstar.yaml
ด้านบน คาดว่าจะอยู่ในที่เก็บ . .allstar
หากไม่มีที่เก็บนี้อยู่แล้ว ไดเร็กทอรี allstar
ของที่เก็บ .github
จะถูกนำมาใช้เป็นตำแหน่งสำรอง เพื่อชี้แจงให้ชัดเจนสำหรับ allstar.yaml
:
ลำดับความสำคัญ | พื้นที่เก็บข้อมูล | เส้นทาง |
---|---|---|
หลัก | .allstar | allstar.yaml |
รอง | .github | allstar/allstar.yaml |
กรณีนี้จะเกิดขึ้นกับไฟล์การกำหนดค่าระดับองค์กรสำหรับแต่ละนโยบายตามที่อธิบายไว้ด้านล่างด้วย
นอกจากนี้ Allstar จะค้นหาการกำหนดค่านโยบายระดับพื้นที่เก็บข้อมูลในพื้นที่เก็บข้อมูล .allstar
ขององค์กร ภายใต้ไดเรกทอรีที่มีชื่อเดียวกันกับพื้นที่เก็บข้อมูล การกำหนดค่านี้ถูกใช้โดยไม่คำนึงว่า "การแทนที่ repo" จะถูกปิดใช้งานหรือไม่
ตัวอย่างเช่น Allstar จะค้นหาการกำหนดค่านโยบายสำหรับ repo myapp
ที่กำหนดตามลำดับต่อไปนี้:
พื้นที่เก็บข้อมูล | เส้นทาง | เงื่อนไข |
---|---|---|
myapp | .allstar/branch_protection.yaml | เมื่ออนุญาตให้ "แทนที่ repo" |
.allstar | myapp/branch_protection.yaml | ทุกครั้ง. |
.allstar | branch_protection.yaml | ทุกครั้ง. |
.github | allstar/myapp/branch_protection.yaml | หากไม่มี . .allstar repo |
.github | allstar/branch_protection.yaml | หากไม่มี . .allstar repo |
สำหรับไฟล์การกำหนดค่า Allstar และนโยบายระดับองค์กร คุณสามารถระบุฟิลด์ baseConfig
เพื่อระบุพื้นที่เก็บข้อมูลอื่นที่มีการกำหนดค่าฐาน Allstar นี่เป็นการอธิบายที่ดีที่สุดด้วยตัวอย่าง
สมมติว่าคุณมีองค์กร GitHub หลายองค์กร แต่ต้องการรักษาการกำหนดค่า Allstar เดียว องค์กรหลักของคุณคือ "acme" และที่เก็บข้อมูล acme/.allstar
มี allstar.yaml
:
optConfig :
optOutStrategy : true
issueLabel : allstar-acme
issueFooter : Issue created by Acme security team.
คุณยังมีองค์กร GitHub ดาวเทียมชื่อ "acme-sat" คุณต้องการใช้การกำหนดค่าหลักซ้ำ แต่ใช้การเปลี่ยนแปลงบางอย่างที่ด้านบนด้วยการปิดการใช้งาน Allstar ในที่เก็บข้อมูลบางแห่ง พื้นที่เก็บข้อมูล acme-sat/.allstar
มี allstar.yaml
:
baseConfig : acme/.allstar
optConfig :
optOutRepos :
- acmesat-one
- acmesat-two
ซึ่งจะใช้การกำหนดค่าทั้งหมดจาก acme/.allstar
เป็นการกำหนดค่าพื้นฐาน แต่จากนั้นจะใช้การเปลี่ยนแปลงใดๆ ในไฟล์ปัจจุบันที่ด้านบนของการกำหนดค่าพื้นฐาน วิธีการที่ใช้นี้อธิบายว่าเป็น JSON Merge Patch baseConfig
ต้องเป็น GitHub <org>/<repository>
ดูการมีส่วนร่วม.md