แอป GitHub คืออะไร

เสร็จสมบูรณ์เมื่อ

ในที่นี้ เราจะพูดถึงว่า GitHub Apps คืออะไร ทํางานอย่างไร และคุณจะใช้แอปเหล่านี้เพื่อปรับปรุงเวิร์กโฟลว์ของคุณได้อย่างไร ไม่ว่าคุณจะใช้โซลูชันที่สร้างขึ้นโดยบุคคลอื่นหรือพัฒนาโซลูชันเพื่อตอบสนองความต้องการที่แน่นอนของคุณ มีพื้นที่เสมอในการปรับปรุงกระบวนการของคุณ

ขยายแพลตฟอร์มผ่าน GitHub API

GitHub มี API ที่แข็งแกร่งซึ่งช่วยให้นักพัฒนาสามารถทําทุกอย่างบนแพลตฟอร์มได้ API ถูกเปิดเผยผ่านปลายทาง REST ดังนั้นจึงง่ายต่อการรวมเข้ากับแพลตฟอร์มหรือภาษาโปรแกรมใดๆ อย่างไรก็ตาม การเข้าถึง API จะไม่ยืนด้วยตัวเอง นักพัฒนาที่ต้องการแชร์ฟีเจอร์ของพวกเขากับผู้อื่นยังจําเป็นต้องจัดแพคเกจเป็นแอป และเผยแพร่ก่อนที่ทุกคนจะสามารถใช้ได้

มีหลายปัจจัยที่ควรพิจารณาเมื่อเลือกระหว่างการรวมแอป OAuth หรือแอป GitHub ลงในเวิร์กโฟลว์ของคุณ ในส่วนนี้ เราจะแนะนําคุณให้รู้จักกับ GitHub Apps และ OAuth Apps ความแตกต่างของการใช้งานและสิทธิ์ และการสมัครใช้งานกิจกรรม

รูปภาพของไอคอนการติดตั้ง และไอคอนการอนุมัติสําหรับแอป GitHub และ OAuth Apps

เมื่อปรับแต่งเวิร์กโฟลว์ GitHub คุณมีฟีเจอร์หลายอย่างที่พร้อมใช้งาน เช่น การเขียนสคริปต์แบบกําหนดเอง การสร้างและอนุญาตแอป OAuth ของคุณเอง หรือการติดตั้งแอป GitHub ที่มีให้จากตลาด GitHub โดยทั่วไป คุณสามารถใช้สคริปต์สําหรับงานเพียงครั้งเดียวได้ดีที่สุด สําหรับการดําเนินการที่ทํางานบ่อยขึ้น ระบบอัตโนมัติของ OAuth และ GitHub Apps สามารถช่วยให้คุณและทีมประหยัดเวลา ในขณะที่ยังคงรักษาระดับความปลอดภัยที่เหมาะสมที่สุดภายในเวิร์กโฟลว์ของคุณ มีความแตกต่างมากมายที่มีผลต่อวิธีที่คุณตัดสินใจระหว่างการใช้แอป GitHub หรือแอป OAuth การทําความเข้าใจเกี่ยวกับความแตกต่างเหล่านี้ล่วงหน้าสามารถลดอาการปวดหัวและปรับปรุงถนนและช่วยให้คุณค้นหาแอปพลิเคชันที่ดีที่สุดสําหรับกรณีการใช้งานเฉพาะของคุณภายในเวิร์กโฟลว์ของคุณ

ในตอนท้ายของส่วนนี้ คุณควรมีความเข้าใจที่ดีเกี่ยวกับความแตกต่างระหว่างแอป GitHub และแอป OAuth และรู้วิธีเลือกแอปที่ดีที่สุดสําหรับสถานการณ์ที่เหมาะสม

ให้สิทธิ์การเข้าถึงและสิทธิ์

หนึ่งในข้อควรพิจารณาที่สําคัญที่สุดสําหรับการอนุญาตให้แอปเข้าถึงที่เก็บ GitHub คือสิทธิ์ที่ต้องการในการใช้งาน บางแอปน่าเชื่อถือได้ง่าย แต่บางแอปอาจน่าสงสัย โปรดแน่ใจว่าคุณเข้าใจเกี่ยวกับสิทธิ์ที่คุณมอบให้กับแอป

สกรีนช็อตของการตรวจทานสิทธิ์ที่ร้องขอและการเข้าถึงที่เก็บ

โน้ต

ทุกแอปใช้คีย์ API ที่ไม่ซ้ํากันเพื่อร้องขอข้อมูลในที่เก็บของคุณ เมื่อคุณอนุญาตการเข้าถึง จะเป็นกุญแจสําคัญที่คุณอนุญาต คุณสามารถเพิกถอนสิทธิ์เข้าถึงคีย์ของแอปได้ตลอดเวลาจากการตั้งค่าที่เก็บ

แอป OAuth

OAuth Apps ให้วิธีการเข้าถึงข้อมูล GitHub ในนามของผู้ใช้ เนื่องจากดําเนินการในนามของผู้ใช้ จึงควรทราบว่าใช้ใบอนุญาต GitHub คุณสามารถสร้างและลงทะเบียนแอป OAuth ในบัญชีส่วนบุคคลของคุณ หรือที่ระดับองค์กรหากคุณมีสิทธิ์เข้าถึงการดูแลระบบ แอป OAuth ที่ผสานรวมกับ GitHub จะเปิดเผยประเภทการเข้าถึงองค์กรหรือที่เก็บที่ต้องการ ผู้ใช้ อนุญาต OAuth Apps ซึ่งช่วยให้แอปสามารถทําหน้าที่เป็นผู้ใช้ที่ได้รับการรับรองความถูกต้อง เช่น การอ่านหรือปรับเปลี่ยนข้อมูล วิธีการนี้เป็นวิธีอัตโนมัติในการอ่าน เขียน หรือแก้ไขข้อมูล GitHub ในฐานะผู้ใช้ สิ่งสําคัญคือต้องทราบว่าการให้สิทธิ์จะจํากัดเฉพาะทรัพยากรที่ผู้ใช้สามารถเข้าถึงได้ อย่างไรก็ตาม แอป OAuth ยังสามารถเข้าถึงทรัพยากร ทั้งหมดที่ ผู้ใช้มีให้ใช้งานได้อีกด้วย

โน้ต

ระดับการเข้าถึงถูกจํากัดโดยขอบเขตของโทเค็น (ผู้ใช้ องค์กร ที่เก็บ)

สําหรับองค์กรที่มีข้อจํากัดการเข้าถึงแอป OAuth ผู้ดูแลระบบสามารถให้การอนุมัติเพื่อใช้แอปพลิเคชันได้ ด้วยการสมัครรับข้อมูลกิจกรรม OAuth Apps จะตอบสนองต่อกิจกรรมเมื่อเกิดขึ้น

แอป GitHub

ในทางตรงกันข้าม GitHub Apps จะติดตั้ง ในบัญชีส่วนบุคคลองค์กรที่คุณเป็นเจ้าของหรือพื้นที่เก็บเฉพาะที่คุณมีสิทธิ์เข้าถึงของผู้ดูแลระบบ GitHub Apps ได้รับการติดตั้งและโต้ตอบกับ GitHub ในฐานะบริการ ไม่ใช่ผู้ใช้รายบุคคลเช่นเดียวกับแอป OAuth ข้อดีอย่างหนึ่งของ GitHub Apps คือ GitHub Apps ไม่ใช้ใบอนุญาต GitHub ซึ่งแตกต่างจากแอป OAuth

GitHub Apps เข้าถึงข้อมูลในนามของแอปพลิเคชันเองผ่านคีย์ส่วนตัวที่ใช้ในการลงนามโทเค็นเว็บ JSON ผู้ใช้สามารถเลือกที่เก็บที่แอปสามารถเข้าถึงได้ ซึ่งจะจํากัดปริมาณข้อมูลที่แอปสามารถเข้าถึงได้ สิทธิ์กําหนดทรัพยากรที่แอป GitHub สามารถเข้าถึงผ่าน API GitHub Apps มีสิทธิ์ที่สามารถปรับแต่งได้สําหรับข้อมูลที่เก็บ ปัญหา และคําขอดึงข้อมูล ต่างจาก OAuth Apps การปรับแต่งช่วยให้คุณสามารถให้สิทธิ์ที่ละเอียดยิ่งขึ้น โดยจํากัดแอปให้อ่านและเขียนเฉพาะในที่เก็บที่คุณอนุญาตให้เข้าถึงได้ เฉพาะเจ้าขององค์กรเท่านั้นที่สามารถจัดการการตั้งค่าของ GitHub Apps ในองค์กรได้

คุณสามารถค้นหาและติดตั้งแอป GitHub ได้จาก GitHub Marketplace เมื่อคุณกําลังค้นหาแอป GitHub โปรดทราบว่าแอปบางแอปมีป้ายยืนยัน ป้ายยืนยันจะระบุสิ่งต่อไปนี้เกี่ยวกับแอปและองค์กรที่เป็นเจ้าของแอป

  • การเป็นเจ้าของโดเมนขององค์กรได้รับการยืนยันแล้ว
  • ฝ่ายสนับสนุนของ GitHub ยืนยันที่อยู่อีเมลสําหรับองค์กร
  • องค์กรต้องการการรับรองความถูกต้องด้วยสองปัจจัย

รูปภาพของป้ายที่ได้รับการตรวจสอบแล้วสําหรับแอป GitHub

  • ผู้ดูแลระบบสามารถให้สิทธิ์เกี่ยวกับการดูแลที่เก็บข้อมูล การตรวจสอบ เนื้อหาของที่เก็บ การปรับใช้ และปัญหา (การเปลี่ยนแปลงของผู้ดูแลระบบจําเป็นต้องยอมรับผู้ใช้ )
  • ผู้ดูแลระบบสามารถให้สิทธิ์ผู้ใช้แอปเพื่อบล็อกผู้ใช้อื่น อีเมล ผู้ติดตาม คีย์ GPG GPG Git SSH Keys การติดดาว ดู (การเปลี่ยนแปลงของผู้ดูแลระบบจําเป็นต้องมีการยอมรับ)
  • การสมัครสมาชิกเหตุการณ์: คําแนะนําด้านความปลอดภัย ชุดการตรวจสอบ สร้าง ปรับใช้ แยก ป้ายชื่อ สมาชิก เช็คอิน ยืนยันข้อคิดเห็น ลบ ปรับใช้ หลักเป้าหมาย การเป็นสมาชิก องค์กร (ผู้ดูแลระบบกําหนดค่าใน GH Apps UI และสามารถเปลี่ยนแปลงได้)

เลือกระหว่างแอป GitHub และแอป OAuth

แม้ว่าแอป GitHub จะเป็นวิธีที่เหมาะสําหรับการรวมเข้ากับเวิร์กโฟลว์ของคุณในบางสถานการณ์ แต่องค์กรขนาดใหญ่อาจพบว่าการเปลี่ยนจากการใช้แอป OAuth แบบเดิมสําหรับระบบอัตโนมัติเป็นเรื่องยาก ตัวอย่างเช่น ข้อจํากัดนโยบายความปลอดภัยอาจจํากัดตัวเลือกของผู้ดูแลระบบในการเลือกใช้เครื่องมือเหล่านี้

โน้ต

ในฐานะผู้ดูแลระบบ คุณควรทํางานร่วมกับนักพัฒนาของคุณเพื่อค้นหาตัวเลือกที่เหมาะสมที่สุดสําหรับระบบอัตโนมัติโดยใช้แอปพลิเคชันเหล่านี้ในขณะที่ยังคงปฏิบัติตามนโยบายความปลอดภัยของคุณ

เมื่อต้องการตรวจสอบว่าแอปใดเป็นโซลูชันที่เหมาะสมสําหรับสถานการณ์ของคุณ นี่คือคําถามสําคัญที่ควรพิจารณา:

  • ฉันต้องการให้แอปทําหน้าที่เป็นผู้ใช้หรือไม่
  • ขีดจํากัดอัตราต้องเป็นอย่างไร?
  • ฉันต้องการให้แอปมีการเข้าถึงใดในองค์กรและที่เก็บข้อมูล
  • แอปนี้สอดคล้องกับนโยบายการรักษาความปลอดภัยของเราหรือไม่

นี่คือคุณลักษณะและความแตกต่างที่สําคัญบางประการที่ควรพิจารณาเมื่อเลือกระหว่างแอป GitHub หรือแอป OAuth

แอป GitHub แอป OAuth
การติดตั้งแอป GitHub จะมอบสิทธิ์การเข้าถึงแอปให้กับที่เก็บที่เลือกของผู้ใช้หรือบัญชีองค์กร การอนุญาตแอป OAuth จะอนุญาตให้แอปเข้าถึงแหล่งข้อมูลที่สามารถเข้าถึงได้ของผู้ใช้ ตัวอย่างเช่น พื้นที่เก็บข้อมูลที่พวกเขาสามารถเข้าถึงได้
โทเค็นการเข้าถึงการติดตั้งจะถูกจํากัดเฉพาะที่เก็บที่ระบุด้วยสิทธิ์ที่เลือกโดยผู้สร้างแอป โทเค็นการเข้าถึง OAuth ถูกจํากัดผ่านขอบเขต
โทเค็นการติดตั้งจะระบุแอปว่าเป็นบอท GitHub Apps โทเค็นการเข้าถึงจะระบุแอปในฐานะผู้ใช้ที่มอบโทเค็นให้กับแอป
GitHub Apps ใช้สิทธิ์เป้าหมายที่อนุญาตให้พวกเขาร้องขอการเข้าถึงเฉพาะสิ่งที่ต้องการเท่านั้น OAuth Apps ไม่สามารถใช้สิทธิ์ที่แยกย่อยได้
แอป GitHub ไม่อยู่ภายใต้นโยบายแอปพลิเคชันขององค์กร แอป GitHub มีสิทธิ์เข้าถึงที่เก็บที่เจ้าขององค์กรให้สิทธิ์เท่านั้น ถ้านโยบายแอปพลิเคชันขององค์กรมีการใช้งานอยู่ เฉพาะเจ้าขององค์กรเท่านั้นที่สามารถอนุญาตการติดตั้งแอป OAuth ได้ ถ้าติดตั้งแล้ว แอป OAuth จะสามารถเข้าถึงสิ่งใดก็ตามที่เจ้าขององค์กรสามารถมองเห็นได้ภายในองค์กรที่ได้รับการอนุมัติ
ขีดจํากัดอัตราสามารถเพิ่มได้ทั้งในระดับ GitHub Apps (ส่งผลต่อการติดตั้งทั้งหมด) และในระดับการติดตั้งแต่ละครั้ง การเพิ่มขึ้นของขีดจํากัดอัตราจะได้รับอนุญาตต่อแอป OAuth โทเค็นทั้งหมดที่มอบให้กับแอป OAuth นั้นจะได้รับขีดจํากัดที่เพิ่มขึ้น
GitHub Apps สามารถรับรองความถูกต้องในนามของผู้ใช้ ซึ่งเรียกว่าคําขอจากผู้ใช้ไปยังเซิร์ฟเวอร์ โฟลว์ที่จะอนุญาตจะเหมือนกับโฟลว์การให้สิทธิ์แอป OAuth โทเค็นที่ผู้ใช้ต่อเซิร์ฟเวอร์สามารถหมดอายุและต่ออายุด้วยโทเค็นการรีเฟรชได้ โฟลว์ OAuth ที่ใช้โดย OAuth Apps อนุญาตแอป OAuth ในนามของผู้ใช้ โฟลว์นี้เป็นโฟลว์เดียวกับที่ใช้ในการอนุญาตผู้ใช้กับเซิร์ฟเวอร์ของแอป GitHub
GitHub Apps ขอสิทธิ์เนื้อหาที่เก็บข้อมูล และใช้โทเค็นการติดตั้งของคุณเพื่อรับรองความถูกต้องผ่าน GitGit ที่ใช้ HTTP OAuth Apps ขอขอบเขต write:public_key และ สร้าง ปรับใช้คีย์ผ่านทาง API จากนั้นคุณสามารถใช้คีย์นั้นเพื่อดําเนินการคําสั่ง Git ได้

การเข้าถึงและสิทธิ์ของแอปพลิเคชัน

หนึ่งในข้อควรพิจารณาที่สําคัญที่สุดสําหรับการอนุญาตให้แอปเข้าถึงที่เก็บ GitHub คือสิทธิ์ที่ต้องการในการใช้งาน บางแอปน่าเชื่อถือได้ง่าย แต่บางแอปอาจน่าสงสัย โปรดแน่ใจว่าคุณเข้าใจเกี่ยวกับสิทธิ์ที่คุณมอบให้กับแอป

การตัดสินใจใช้แอป GitHub หรือแอป OAuth อาจขึ้นอยู่กับระดับการเข้าถึงที่คุณต้องการให้แอปเข้าถึง โดยทั่วไป คุณควรกระตุ้นให้ทีมของคุณใช้เครื่องมือที่มีขอบเขตที่เล็กที่สุดเพื่อทํางานให้สําเร็จ แอป OAuth มีสิทธิ์เข้าถึงแหล่งข้อมูลของผู้ใช้หรือเจ้าขององค์กรทั้งหมด

  • แอป OAuth สามารถ อ่าน หรือ เขียน เข้าถึงข้อมูล GitHub ของคุณได้
  • คุณสามารถให้สิทธิ์การเข้าถึงแอป GitHub ไปยังบัญชีหนึ่งโดยไม่ต้องได้รับสิทธิ์การเข้าถึงอีกบัญชี

ความปลอดภัยของแอปพลิเคชัน

เมื่อคุณพบช่องโหว่ในแอปพลิเคชันของคุณ ควรมีลําดับความสําคัญและภายในนโยบายความปลอดภัยของคุณเพื่อบอกผู้ใช้โครงการของคุณ การสื่อสารปัญหาด้านความปลอดภัยอย่างรวดเร็วอาจหมายถึงความแตกต่างระหว่างผู้ใช้ของคุณสามารถเพิกถอนโทเค็นที่ถูกบุกรุกหรือเปิดเผยข้อมูลที่สําคัญได้ แม้ว่าโทเค็นจะมีความปลอดภัยมากกว่ารหัสผ่าน แต่ความปลอดภัยยังคงถูกบุกรุกได้ และสิ่งสําคัญคือต้องเตรียมพร้อมสําหรับองค์กรของคุณ

นอกเหนือจากไฟล์ README.md เราขอแนะนําให้เพิ่มไฟล์ SECURITY.md ลงในที่เก็บของคุณ ไฟล์ SECURITY.md เน้นข้อมูลที่เกี่ยวข้องกับความปลอดภัยสําหรับที่เก็บ ไฟล์ควรมีผู้ติดต่อด้านความปลอดภัย นโยบายองค์กรของคุณ และให้รายละเอียดการตอบสนองที่คุณวางแผนจะทําเมื่อพบช่องโหว่

ตอบสนองต่อเหตุการณ์

แอป GitHub ถูกออกแบบมาให้เป็นแบบพาสซีฟ พวกเขารอให้สิ่งใดเกิดขึ้นและจากนั้นทําปฏิกิริยาโดยปกติผ่าน GitHub API เมื่อรอให้เหตุการณ์เกิดขึ้นบน GitHub มีสองวิธี: webhooks และการโพลล์

โน้ต

แอป GitHub ไม่ได้จํากัดการทํางานกับข้อมูล GitHub คุณสามารถรอเหตุการณ์ที่เกิดขึ้นจากแหล่งอื่นหรือดําเนินการที่อัปเดตบริการอื่นได้อย่างง่ายดาย

ใช้เว็บฮุก GitHub

Webhooks เป็นวิธีที่ต้องการสําหรับการจัดการเหตุการณ์ เมื่อมีสิ่งใดเกิดขึ้นบน GitHub ภายในขอบเขตของเว็บฮุค จะมีเหตุการณ์เกิดขึ้นทันที Webhooks ส่งการแจ้งเตือนว่าแอปของคุณสามารถฟัง และประมวลผลในแบบเรียลไทม์ คุณสามารถกําหนดค่า webhooks ในการตั้งค่าที่เก็บของคุณ รวมถึงชนิดของเหตุการณ์ การรับรองความถูกต้อง และวิธีการจัดส่งการแจ้งเตือน HTTP

การโพลล์

บางครั้ง webhooks ไม่ใช่ตัวเลือก แอปของคุณอาจจําเป็นต้องอยู่หลังไฟร์วอลล์ขององค์กรซึ่ง GitHub ไม่สามารถเข้าถึงได้โดยตรง ในกรณีดังกล่าว ทางเลือกคือการสํารวจข้อมูลที่คุณกําลังติดตามโดยใช้ GitHub API

เว็บฮุกรีเลย์

ทางเลือกในการโพลล์สําหรับแอปที่อยู่เบื้องหลังไฟร์วอลล์คือการใช้บริการการส่งต่อ webhook เช่น smee.io ด้วยวิธีนี้ บริการสาธารณะจะสมัครรับข้อมูล Webhook ของที่เก็บ จากนั้นถ่ายทอดข้อมูลขาเข้าไปยังบริการไคลเอ็นต์ที่ทํางานอยู่หลังไฟร์วอลล์ บริการไคลเอ็นต์จะส่งการแจ้งเตือนไปยังแอปที่ทํางานอยู่ของคุณราวกับว่ามาจากแหล่งข้อมูลต้นฉบับ