GitHub PR की समीक्षाओं के लिए, Gemini CLI Security Extension का इस्तेमाल करना

1. परिचय

Gemini CLI Security Extension, Google का बनाया हुआ ओपन सोर्स Gemini CLI एक्सटेंशन है. यह सुरक्षा से जुड़े जोखिमों और कमज़ोरियों के लिए कोड का विश्लेषण करता है. Gemini CLI के साथ Security एक्सटेंशन का इस्तेमाल करके, स्थानीय तौर पर सुरक्षा से जुड़ी समस्याओं का पता लगाया जा सकता है. ठीक उसी तरह जैसे Gemini CLI के किसी अन्य एक्सटेंशन का इस्तेमाल किया जाता है. इसका इस्तेमाल, GitHub पर पुल के अनुरोधों की समीक्षा करने के लिए भी किया जा सकता है. इस कोडलैब में, हम GitHub रिपॉज़िटरी में Security एक्सटेंशन इस्तेमाल करने का तरीका जानेंगे.

आपको क्या करना होगा

  • GitHub से Google Cloud में सुरक्षित तरीके से पुष्टि करने की सुविधा कॉन्फ़िगर करना
  • GitHub Actions का ऐसा वर्कफ़्लो बनाएं जो Gemini CLI के Security Extension को कॉल करे
  • GitHub Actions का इस्तेमाल करके, नए या मौजूदा पीआर की सुरक्षा से जुड़ी समीक्षा करना

आपको क्या सीखने को मिलेगा

  • GitHub Actions से Google Cloud में सुरक्षित तरीके से पुष्टि करने के लिए, Workload Identity Federation का इस्तेमाल कैसे करें
  • पुष्टि करने के लिए, Gemini API पासकोड के बजाय Workload Identity Pool और Workload Identity Provider का इस्तेमाल करने के फ़ायदे जानें
  • पीआर की मदद से सुरक्षा से जुड़ी समीक्षा करने का तरीका
  • सुरक्षा एक्सटेंशन से मिली सुरक्षा समीक्षाओं को समझने का तरीका

आपको इन चीज़ों की ज़रूरत होगी

  • वेब ब्राउज़र
  • GitHub खाता और रिपॉज़िटरी
  • Google Cloud प्रोजेक्ट

यह कोडलैब, उन डेवलपर के लिए बनाया गया है जिन्हें GitHub पर सीआई/सीडी वर्कफ़्लो के बारे में जानकारी है. यह ज़रूरी नहीं है कि आपको Gemini CLI या Gemini CLI एक्सटेंशन के बारे में जानकारी हो. अगर आपको एक्सटेंशन के काम करने के तरीके के बारे में जानना है, तो यह कोडलैब देखें: Gemini CLI एक्सटेंशन का इस्तेमाल शुरू करना.

इस कोडलैब में, आपको अपनी GitHub रिपॉज़िटरी में Gemini CLI Security Extension को सेट अप करने का तरीका बताया जाएगा. हम आपको ऐसा कोड नहीं सुझाएंगे जिससे आपकी रिपॉज़िटरी के ख़िलाफ़ पीआर खोला जा सके. इससे सुरक्षा से जुड़ी जोखिम की आशंका का पता चल सकता है.

2. शुरू करने से पहले

कोई प्रोजेक्ट बनाएं या चुनें

  1. Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर जाकर, Google Cloud प्रोजेक्ट चुनें या बनाएं.
  2. पक्का करें कि आपके Cloud प्रोजेक्ट के लिए बिलिंग की सुविधा चालू हो. बिलिंग की पुष्टि करने का तरीका जानें.
  3. Google Cloud में चलने वाले कमांड-लाइन एनवायरमेंट, Cloud Shell को खोलें. Google Cloud कंसोल में सबसे ऊपर मौजूद, Cloud Shell चालू करें पर क्लिक करें.

Cloud Shell बटन की इमेज चालू करें

  1. Cloud Shell से कनेक्ट होने के बाद, यह देखने के लिए कि आपकी पुष्टि हो गई है और प्रोजेक्ट को आपके प्रोजेक्ट आईडी पर सेट किया गया है, यहां दिया गया निर्देश इस्तेमाल करें:
gcloud auth list
  1. इस बात की पुष्टि करने के लिए कि gcloud निर्देश को आपके प्रोजेक्ट का इस्तेमाल करने के लिए कॉन्फ़िगर किया गया है, यह निर्देश चलाएं.
gcloud config list project
  1. अगर आपका प्रोजेक्ट सेट नहीं है, तो इसे सेट करने के लिए इस निर्देश का इस्तेमाल करें:
gcloud config set project ${GOOGLE_CLOUD_PROJECT}

3. GitHub से Google Cloud में पुष्टि करने की सुविधा सेट अप करना

यह कैसे काम करता है

GitHub Actions वर्कफ़्लो

GitHub Actions से Google Cloud में पुष्टि करने के लिए, Workload Identity Federation का इस्तेमाल करने का सुझाव दिया जाता है.

  1. हर GitHub Actions वर्कफ़्लो रन जॉब के लिए, GitHub, बाहरी आइडेंटिटी प्रोवाइडर के तौर पर हस्ताक्षर किया गया JWT (JSON वेब टोकन) जारी करता है. इस टोकन में repository, workflow, और job_workflow_ref जैसे "दावे" शामिल होते हैं. ये दावे, उस धावक के लिए डिजिटल पहचान पत्र के तौर पर काम करते हैं. इस लैब में, आपको GitHub Actions वर्कफ़्लो बनाना होगा. इसमें एक ऐसा जॉब होगा जो google-github-actions/run-gemini-cli ऐक्शन का इस्तेमाल करेगा. यह GitHub से JWT का अनुरोध करेगा और इस टोकन को Google Cloud में मौजूद Security Token Service (एसटीएस) को भेजेगा.
  2. Google Cloud में, Workload Identity Pool और Provider को कॉन्फ़िगर किया जाएगा. इसके लिए, जारी करने वाले का यूआरएल, GitHub की आधिकारिक टोकन सेवा के यूआरएल https://token.actions.githubusercontent.com पर सेट करें. साथ ही, "एट्रिब्यूट मैपिंग" तय करें. इनमें आम तौर पर, रिपॉज़िटरी और ब्रांच के नाम शामिल होते हैं. Google Cloud STS, Workload Identity Pool के नियमों के हिसाब से JWT की पुष्टि करता है. अगर एट्रिब्यूट मैपिंग सहित सभी चीज़ें सही हैं, तो STS, GitHub टोकन को कुछ समय के लिए इस्तेमाल किए जा सकने वाले Google Cloud फ़ेडरेटेड ऐक्सेस टोकन के लिए एक्सचेंज करता है.
  3. अब GitHub Actions वर्कफ़्लो में google-github-actions/run-gemini-cli ऐक्शन, कम समय के लिए मान्य Google Cloud फ़ेडरेटेड ऐक्सेस टोकन का इस्तेमाल करके, Workload Identity पूल से जुड़े सेवा खाते की "नक़ल" कर सकता है. कनेक्ट किए गए सेवा खाते के पास, Google Cloud के किसी भी संसाधन और सेवा को ऐक्सेस करने के लिए, ज़रूरी आईएएम भूमिकाएं और अनुमतियां होनी चाहिए.

Gemini API पासकोड के बजाय Workload Identity Federation का इस्तेमाल करने के फ़ायदे

Gemini API पासकोड का इस्तेमाल करके, GitHub Actions से शुरू किए गए Gemini CLI कॉल की पुष्टि की जा सकती है. इसके लिए, आपको GEMINI_API_KEY नाम का नया GitHub Actions सीक्रेट बनाना होगा. साथ ही, उसमें सही पासकोड वैल्यू डालनी होगी. हालांकि, सुरक्षा से जुड़ी इन वजहों से ऐसा न करने का सुझाव दिया जाता है:

  • Gemini API की कुंजियों के लिए, IAM की भूमिकाओं के हिसाब से ज़्यादा अनुमतियां हो सकती हैं. इनके साथ छेड़छाड़ होने पर, Google Cloud के कई संसाधनों और सेवाओं का ऐक्सेस मिल जाता है. Workload Identity फ़ेडरेशन, सेवा खातों और कम समय के लिए मान्य ऐक्सेस टोकन का इस्तेमाल करता है. इससे पुष्टि करने की प्रोसेस ज़्यादा सुरक्षित हो जाती है.
  • Gemini API पासकोड को बड़े पैमाने पर मैनेज करना भी मुश्किल होता है. यह पता लगाने में समय लगता है कि कौनसे वर्कफ़्लो, किसी ऐसी कुंजी का इस्तेमाल कर रहे हैं जिसे सार्वजनिक किया गया है. कुंजियों को मैन्युअल तरीके से घुमाने में भी समय लगता है. दूसरी ओर, Cloud Console में जाकर, अपनी रिपॉज़िटरी से जुड़े Workload Identity Pool और उनकी सेवा देने वाली कंपनियों को आसानी से ढूंढा जा सकता है. साथ ही, उनमें बदलाव किया जा सकता है और उन्हें मिटाया जा सकता है.
  • Gemini API पासकोड का इस्तेमाल करते समय, आपको हमेशा यह पक्का करना होगा कि आपने उन्हें किसी ऐक्सेस या डीबग लॉग में गलती से तो नहीं दिखा दिया है. Workload Identity Federation की मदद से, GitHub Actions के वर्कफ़्लो के सीक्रेट नहीं, बल्कि वैरिएबल सेव किए जाते हैं. ये वैरिएबल, सीक्रेट की तुलना में कम संवेदनशील होते हैं.

GitHub Actions और Google Cloud को कॉन्फ़िगर करना

  1. अपने Cloud Shell में, GitHub खाते में लॉग इन करें.
gh auth login
  1. एक नई फ़ाइल setup_workload_identity.sh बनाएं. इसके बाद, google-github-actions/run-gemini-cli रिपॉज़िटरी से सेटअप स्क्रिप्ट को कॉपी करके चिपकाएं.
  2. स्क्रिप्ट को एक्ज़ीक्यूटेबल फ़ाइल में बदलें.
chmod +x setup_workload_identity.sh
  1. स्क्रिप्ट चलाएं.
./setup_workload_identity.sh --repo {OWNER/REPO} --project {GOOGLE_CLOUD_PROJECT}

4. GitHub Actions वर्कफ़्लो बनाना

  1. उस GitHub रिपॉज़िटरी को देखें जिसका मालिकाना हक आपके पास है.
git clone {YOUR_REPO}
cd {YOUR REPO}
  1. /gemini-cli-extensions/security repo से, उदाहरण वर्कफ़्लो yml स्क्रिप्ट कॉपी करके, /security:analyze-github-pr स्लैश कमांड को कॉल करने वाला GitHub Actions वर्कफ़्लो बनाएं.
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
  1. GitHub Actions वर्कफ़्लो को GitHub पर मौजूद रिमोट ओरिजिन पर पुश करें.
git add .github/workflows/gemini-review.yml
git commit -m "add new gha workflow"
git push --set-upstream origin workflow

5. नई और मौजूदा पीआर पर सुरक्षा विश्लेषण वर्कफ़्लो चलाना

रिपॉज़िटरी के मालिक या योगदान देने वाले व्यक्ति के तौर पर, अपनी GitHub रिपॉज़िटरी में नई पुल रिक्वेस्ट (पीआर) शुरू करें या "@gemini-cli /review" के तौर पर नई टिप्पणी पोस्ट करें. इससे पीआर पर सुरक्षा की समीक्षा शुरू हो जाएगी. GitHub Actions वर्कफ़्लो से Gemini CLI Security Extension, आपकी रिपॉज़िटरी में मौजूद किसी भी सुरक्षा समस्या को टैग करेगा. यह टैग, समस्या की गंभीरता के हिसाब से लगाया जाएगा. जैसे, "बहुत गंभीर", "गंभीर", "सामान्य", और "कम गंभीर".

यहां नए पीआर की सुरक्षा समीक्षा का उदाहरण और मौजूदा पीआर की सुरक्षा समीक्षा का उदाहरण दिया गया है.

6. ज़्यादा जानकारी

हमारा सुझाव है कि आप Gemini CLI के सुरक्षा एक्सटेंशन में, सुरक्षा से जुड़ी नई सुविधाओं वाली कस्टम कमांड की बढ़ती हुई सूची देखें. साथ ही, अपने वर्कफ़्लो में इसका इस्तेमाल शुरू करें. उदाहरण के लिए:

  • /security:scan-deps आपके प्रोजेक्ट की डिपेंडेंसी को OSV.dev के साथ क्रॉस-रेफ़रंस करता है.

नई सुविधाओं और गड़बड़ियों को ठीक करने वाले अपडेट के बारे में जानने के लिए, रिलीज़ नोट देखें.

7. बधाई हो

बधाई हो, आपने सुरक्षा से जुड़े जोखिमों और कमज़ोरियों के लिए पीआर का विश्लेषण करने के लिए, Gemini CLI Security Extension का इस्तेमाल करने के लिए अपनी GitHub रिपॉज़िटरी को कॉन्फ़िगर कर लिया है.