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 ในหน้าตัวเลือกโปรเจ็กต์ ให้เลือกหรือสร้างโปรเจ็กต์ที่อยู่ในระบบคลาวด์
- ตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ 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 Pool หากทุกอย่างเป็นไปตามที่คาดไว้ รวมถึงการแมปแอตทริบิวต์ 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
ประโยชน์ของการใช้การเชื่อมโยงข้อมูลประจำตัวของเวิร์กโหลดผ่านคีย์ Gemini API
คุณสามารถตรวจสอบสิทธิ์การเรียกใช้ Gemini CLI ที่มาจาก GitHub Actions ได้โดยใช้คีย์ Gemini API ซึ่งเกี่ยวข้องกับการสร้างความลับของ GitHub Actions ใหม่ชื่อ GEMINI_API_KEY ที่มีค่าคีย์ที่เหมาะสม อย่างไรก็ตาม เราไม่แนะนำให้ทำด้วยเหตุผลด้านความปลอดภัยต่อไปนี้
- คีย์ API ของ Gemini อาจมีสิทธิ์แบบกว้างจากการเชื่อมโยงบทบาท IAM ที่เกี่ยวข้อง เมื่อถูกบุกรุกแล้ว จะเปิดสิทธิ์เข้าถึงทรัพยากรและบริการของ Google Cloud ได้อย่างกว้างขวาง การรวมศูนย์ของ Workload Identity ใช้บัญชีบริการและโทเค็นเพื่อการเข้าถึงที่มีอายุสั้น ซึ่งจะช่วยเพิ่มความปลอดภัยในการตรวจสอบสิทธิ์ได้อย่างมาก
- นอกจากนี้ การจัดการคีย์ API ของ Gemini ในวงกว้างก็เป็นเรื่องที่ท้าทายเช่นกัน การระบุว่าเวิร์กโฟลว์ใดใช้คีย์ที่เปิดเผยต้องใช้เวลา การหมุนเวียนคีย์ด้วยตนเองก็ใช้เวลาเช่นกัน ในทางกลับกัน คุณสามารถค้นหา แก้ไข และลบพูลและผู้ให้บริการ Workload Identity ที่เชื่อมโยงกับที่เก็บได้อย่างง่ายดายจาก Cloud Console
- เมื่อใช้คีย์ API ของ Gemini คุณต้องตรวจสอบอีกครั้งเสมอว่าไม่ได้เปิดเผยคีย์โดยไม่ตั้งใจในบันทึกการเข้าถึงหรือบันทึกการแก้ไขข้อบกพร่อง เมื่อใช้ 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 สำหรับความเสี่ยงและช่องโหว่ด้านความปลอดภัยได้สำเร็จแล้ว