1. บทนำ
ส่วนขยายความปลอดภัยของ Gemini CLI เป็นส่วนขยาย Gemini CLI แบบโอเพนซอร์สที่ Google สร้างขึ้น ซึ่งจะวิเคราะห์โค้ดเพื่อหาความเสี่ยงและช่องโหว่ด้านความปลอดภัย คุณสามารถใช้ส่วนขยายความปลอดภัยกับ Gemini CLI เพื่อระบุปัญหาด้านความปลอดภัยในเครื่องได้เช่นเดียวกับส่วนขยาย Gemini CLI อื่นๆ นอกจากนี้ คุณยังเรียกใช้เพื่อตรวจสอบคำขอ Pull ใน GitHub ได้ด้วย ใน Codelab นี้ เราจะอธิบายวิธีใช้ส่วนขยายความปลอดภัยในที่เก็บ GitHub
สิ่งที่คุณต้องทำ
- กำหนดค่าการตรวจสอบสิทธิ์ที่ปลอดภัยจาก GitHub ไปยัง Google Cloud
- สร้างเวิร์กโฟลว์ GitHub Actions ที่เรียกใช้ส่วนขยายความปลอดภัยของ Gemini CLI
- เรียกใช้การตรวจสอบความปลอดภัยใน PR ใหม่หรือที่มีอยู่โดยใช้ GitHub Actions
สิ่งที่คุณจะได้เรียนรู้
- วิธีใช้ Workload Identity Federation สำหรับการตรวจสอบสิทธิ์ที่ปลอดภัยจาก GitHub Actions ไปยัง Google Cloud
- ดูประโยชน์ของการใช้ Workload Identity Pool และผู้ให้บริการ Workload Identity แทนคีย์ Gemini API สำหรับการตรวจสอบสิทธิ์
- วิธีทำการตรวจสอบความปลอดภัยด้วยคำขอให้รวมการเปลี่ยนแปลง
- วิธีตีความการตรวจสอบความปลอดภัยที่ส่วนขยายความปลอดภัยส่งคืน
สิ่งที่คุณต้องมี
- เว็บเบราว์เซอร์
- บัญชีและที่เก็บ GitHub
- โปรเจ็กต์ Google Cloud
Codelab นี้ออกแบบมาสำหรับนักพัฒนาที่คุ้นเคยกับเวิร์กโฟลว์ CI/CD ใน GitHub คุณไม่จำเป็นต้องมีความคุ้นเคยกับ Gemini CLI หรือส่วนขยาย Gemini CLI หากต้องการดูวิธีการทำงานของส่วนขยาย โปรดดู Codelab เริ่มต้นใช้งานส่วนขยาย Gemini CLI
ใน Codelab นี้ คุณจะได้เรียนรู้วิธีตั้งค่าส่วนขยายความปลอดภัยของ Gemini CLI ในที่เก็บ GitHub เราจะไม่แนะนำโค้ดให้คุณเปิดคำขอส่งต่อที่เทียบกับที่เก็บเพื่อทริกเกอร์การค้นหาช่องโหว่ด้านความปลอดภัย
2. ก่อนเริ่มต้น
สร้างหรือเลือกโปรเจ็กต์
- ใน คอนโซล Google Cloud ในหน้าตัวเลือกโปรเจ็กต์ ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud
- ตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Cloud แล้ว ดูวิธียืนยันการเรียกเก็บเงิน
- เปิด Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานใน Google Cloud คลิกเปิดใช้งาน Cloud Shell ที่ด้านบนของคอนโซล Google Cloud

- เมื่อเชื่อมต่อกับ Cloud Shell แล้ว ให้ตรวจสอบว่าคุณได้รับการตรวจสอบสิทธิ์และตั้งค่าโปรเจ็กต์เป็นรหัสโปรเจ็กต์ของคุณโดยใช้คำสั่งต่อไปนี้
gcloud auth list
- เรียกใช้คำสั่งต่อไปนี้เพื่อยืนยันว่าได้กำหนดค่าคำสั่ง
gcloudให้ใช้โปรเจ็กต์ของคุณแล้ว
gcloud config list project
- หากไม่ได้ตั้งค่าโปรเจ็กต์ ให้ใช้คำสั่งต่อไปนี้เพื่อตั้งค่า
gcloud config set project ${GOOGLE_CLOUD_PROJECT}
3. ตั้งค่าการตรวจสอบสิทธิ์จาก GitHub ไปยัง Google Cloud
วิธีการทำงาน

Workload Identity Federationเป็นวิธีที่แนะนำในการตรวจสอบสิทธิ์จาก GitHub Actions ไปยัง Google Cloud
- สำหรับเวิร์กโฟลว์ รัน งานของ GitHub Actions ทุกรายการ GitHub ในฐานะผู้ให้บริการข้อมูลประจำตัวภายนอกจะออก JWT (JSON Web Token) ที่ลงชื่อแล้ว โทเค็นนี้มี "การอ้างสิทธิ์" เช่น
repository,workflowและjob_workflow_refซึ่งทำหน้าที่เป็นบัตรประจำตัวดิจิทัลสำหรับนักวิ่งคนนั้นๆ ในแล็บนี้ คุณจะได้สร้างเวิร์กโฟลว์ GitHub Actions ที่มีงานซึ่งใช้การดำเนินการgoogle-github-actions/run-gemini-cliซึ่งจะขอ JWT จาก GitHub และส่งโทเค็นนี้ไปยัง Security Token Service (STS) ใน Google Cloud - คุณจะกำหนดค่า Workload Identity Pool และผู้ให้บริการใน Google Cloud ได้โดยการตั้งค่า URL ผู้ออกเป็น URL ของบริการโทเค็น GitHub อย่างเป็นทางการ
https://token.actions.githubusercontent.comและกำหนด "การแมปแอตทริบิวต์" ซึ่งโดยปกติจะรวมถึงชื่อที่เก็บและชื่อสาขา STS ของ Google Cloud จะตรวจสอบ JWT กับกฎของพูล Workload Identity หากทุกอย่างเป็นไปตามที่คาดไว้ รวมถึงการแมปแอตทริบิวต์ STS จะแลกเปลี่ยนโทเค็น GitHub เป็น Google Cloud Federated Access Token ที่มีอายุสั้น - ตอนนี้การดำเนินการ
google-github-actions/run-gemini-cliในเวิร์กโฟลว์ GitHub Actions สามารถใช้ Google Cloud Federated Access Token ที่มีอายุสั้นเพื่อ "แอบอ้างเป็นบุคคลอื่น" บัญชีบริการที่เชื่อมต่อกับ Workload Identity Pool ได้แล้ว บัญชีบริการที่เชื่อมต่อต้องมีบทบาทและสิทธิ์ IAM ที่จำเป็นในการเข้าถึงทรัพยากรและบริการของ Google Cloud
ประโยชน์ของการใช้ Workload Identity Federation ผ่าน Gemini API Key
คุณสามารถตรวจสอบสิทธิ์การเรียกใช้ Gemini CLI ที่มาจาก GitHub Actions ได้โดยใช้คีย์ Gemini API ซึ่งเกี่ยวข้องกับการสร้างความลับของ GitHub Actions ใหม่ชื่อ GEMINI_API_KEY ที่มีค่าคีย์ที่เหมาะสม แต่เราไม่แนะนำให้ทำด้วยเหตุผลด้านความปลอดภัยต่อไปนี้
- คีย์ API ของ Gemini อาจมีสิทธิ์แบบกว้างจากการเชื่อมโยงบทบาท IAM ที่เกี่ยวข้อง เมื่อถูกบุกรุกแล้ว ก็จะเปิดสิทธิ์เข้าถึงทรัพยากรและบริการของ Google Cloud ได้อย่างกว้างขวาง การรวมศูนย์ของ Workload Identity ใช้บัญชีบริการและโทเค็นเพื่อการเข้าถึงที่มีอายุสั้น ซึ่งจะช่วยเพิ่มความปลอดภัยในการตรวจสอบสิทธิ์ได้อย่างมาก
- นอกจากนี้ การจัดการคีย์ API ของ Gemini ในวงกว้างยังเป็นเรื่องท้าทายด้วย การระบุว่าเวิร์กโฟลว์ใดใช้คีย์ที่เปิดเผยต้องใช้เวลา การหมุนเวียนคีย์ด้วยตนเองก็ใช้เวลาเช่นกัน ในทางกลับกัน คุณสามารถค้นหา แก้ไข และลบพูลและผู้ให้บริการ Workload Identity ที่เชื่อมโยงกับที่เก็บได้อย่างง่ายดายจาก Cloud Console
- เมื่อใช้คีย์ Gemini API คุณต้องตรวจสอบอีกครั้งเสมอว่าไม่ได้เปิดเผยคีย์โดยไม่ตั้งใจในบันทึกการเข้าถึงหรือบันทึกการแก้ไขข้อบกพร่อง เมื่อใช้ Workload Identity Federation คุณจะไม่ต้องจัดเก็บข้อมูลลับของเวิร์กโฟลว์ GitHub Actions แต่จะจัดเก็บตัวแปรแทน ซึ่งมีความละเอียดอ่อนน้อยกว่าโดยธรรมชาติ
กำหนดค่า GitHub Actions และ Google Cloud
- ใน Cloud Shell ให้เข้าสู่ระบบบัญชี GitHub
gh auth login
- สร้างไฟล์ใหม่
setup_workload_identity.shแล้วคัดลอกและวางสคริปต์การตั้งค่าจากที่เก็บgoogle-github-actions/run-gemini-cli - ทำให้สคริปต์เป็นไฟล์ที่เรียกใช้งานได้
chmod +x setup_workload_identity.sh
- เรียกใช้สคริปต์
./setup_workload_identity.sh --repo {OWNER/REPO} --project {GOOGLE_CLOUD_PROJECT}
4. สร้างเวิร์กโฟลว์ GitHub Actions
- ตรวจสอบที่เก็บ GitHub ที่คุณเป็นเจ้าของ
git clone {YOUR_REPO}
cd {YOUR REPO}
- สร้างเวิร์กโฟลว์ GitHub Actions ที่เรียกใช้คำสั่งเครื่องหมายทับ
/security:analyze-github-prโดยคัดลอกสคริปต์เวิร์กโฟลว์ตัวอย่างymlจากที่เก็บ/gemini-cli-extensions/security
git checkout -b workflow
mkdir .github/ && cd .github/
mkdir workflows/ && cd workflows/
curl -L https://raw.githubusercontent.com/gemini-cli-extensions/security/refs/heads/main/.github/workflows/gemini-review.yml -o gemini-review.yml
- พุชเวิร์กโฟลว์ GitHub Actions ไปยังต้นทางระยะไกลใน GitHub
git add .github/workflows/gemini-review.yml
git commit -m "add new gha workflow"
git push --set-upstream origin workflow
5. เรียกใช้เวิร์กโฟลว์การวิเคราะห์ความปลอดภัยในคำขอ Pull ใหม่และที่มีอยู่
เริ่ม PR ใหม่ในที่เก็บ GitHub หรือโพสต์ความคิดเห็นใหม่ "@gemini-cli /review" ในฐานะเจ้าของหรือผู้มีส่วนร่วมในที่เก็บ ซึ่งจะเริ่มการตรวจสอบความปลอดภัยในคำขอให้ผสานรวม ส่วนขยายความปลอดภัยของ Gemini CLI จากเวิร์กโฟลว์ GitHub Actions ที่คุณคอมมิตไปยังรีโปจะติดแท็กปัญหาด้านความปลอดภัยที่พบตามหมวดหมู่ความรุนแรงตั้งแต่ "ร้ายแรง" "สูง" "ปานกลาง" ไปจนถึง "ต่ำ"
ต่อไปนี้คือตัวอย่างการตรวจสอบความปลอดภัยใน PR ใหม่ และตัวอย่างการตรวจสอบความปลอดภัยใน PR ที่มีอยู่
6. สำรวจเพิ่มเติม
เราขอแนะนำให้คุณสำรวจรายการคำสั่งที่กำหนดเองที่เพิ่มขึ้นเรื่อยๆ ซึ่งมีฟีเจอร์ความปลอดภัยใหม่ๆ ในส่วนขยายความปลอดภัยของ Gemini CLI และเริ่มใช้ในเวิร์กโฟลว์ของคุณ เช่น
/security:scan-depsอ้างอิงโยงการขึ้นต่อกันของโปรเจ็กต์กับ OSV.dev
ดูฟีเจอร์ล่าสุดและการแก้ไขข้อบกพร่องได้ในบันทึกประจำรุ่น
7. ขอแสดงความยินดี
ขอแสดงความยินดี คุณกำหนดค่าที่เก็บ GitHub ให้ใช้ส่วนขยายความปลอดภัยของ Gemini CLI เพื่อวิเคราะห์ PR สำหรับความเสี่ยงและช่องโหว่ด้านความปลอดภัยได้สำเร็จแล้ว