১. ভূমিকা
জেমিনি সিএলআই সিকিউরিটি এক্সটেনশন হলো গুগলের তৈরি একটি ওপেন সোর্স জেমিনি সিএলআই এক্সটেনশন, যা কোডের নিরাপত্তা ঝুঁকি এবং দুর্বলতা বিশ্লেষণ করে। অন্য যেকোনো জেমিনি সিএলআই এক্সটেনশনের মতোই, আপনি স্থানীয়ভাবে নিরাপত্তা সমস্যা শনাক্ত করতে জেমিনি সিএলআই-এর সাথে এই সিকিউরিটি এক্সটেনশনটি ব্যবহার করতে পারেন। এছাড়াও, গিটহাবে পুল রিকোয়েস্ট পর্যালোচনা করার জন্য আপনি এটি ব্যবহার করতে পারেন। এই কোডল্যাবে, আমরা আপনার গিটহাব রিপোজিটরিতে কীভাবে সিকিউরিটি এক্সটেনশনটি ব্যবহার করতে হয় তা আলোচনা করব।
আপনি যা করবেন
- গিটহাব থেকে গুগল ক্লাউডে সুরক্ষিত প্রমাণীকরণ কনফিগার করুন
- একটি GitHub Actions ওয়ার্কফ্লো তৈরি করুন যা Gemini CLI Security Extension-কে কল করে।
- GitHub Actions ব্যবহার করে নতুন বা বিদ্যমান PR-এর উপর একটি নিরাপত্তা পর্যালোচনা চালান।
আপনি যা শিখবেন
- গিটহাব অ্যাকশনস থেকে গুগল ক্লাউডে নিরাপদ প্রমাণীকরণের জন্য ওয়ার্কলোড আইডেন্টিটি ফেডারেশন কীভাবে ব্যবহার করবেন
- প্রমাণীকরণের জন্য জেমিনি এপিআই কী-এর পরিবর্তে ওয়ার্কলোড আইডেন্টিটি পুল এবং ওয়ার্কলোড আইডেন্টিটি প্রোভাইডার ব্যবহারের সুবিধাগুলো জানুন।
- PR-এর মাধ্যমে কীভাবে নিরাপত্তা পর্যালোচনা চালানো যায়
- সিকিউরিটি এক্সটেনশন থেকে প্রাপ্ত নিরাপত্তা পর্যালোচনাগুলো কীভাবে ব্যাখ্যা করবেন
আপনার যা যা লাগবে
- একটি ওয়েব ব্রাউজার
- একটি গিটহাব অ্যাকাউন্ট এবং রিপোজিটরি
- একটি গুগল ক্লাউড প্রকল্প
এই কোডল্যাবটি গিটহাবের CI/CD ওয়ার্কফ্লোর সাথে পরিচিত ডেভেলপারদের জন্য ডিজাইন করা হয়েছে। আপনার Gemini CLI বা Gemini CLI এক্সটেনশন সম্পর্কে পরিচিতি থাকার প্রয়োজন নেই। আপনি যদি শিখতে চান এক্সটেনশনগুলো কীভাবে কাজ করে, তাহলে এই কোডল্যাবটি দেখুন: Getting Started with Gemini CLI Extensions ।
এই কোডল্যাবে, আপনি শিখবেন কীভাবে আপনার গিটহাব রিপোজিটরিতে জেমিনি সিএলআই সিকিউরিটি এক্সটেনশন সেট আপ করতে হয়। আমরা এমন কোনো কোড সাজেস্ট করব না যা আপনার রিপোজিটরির বিরুদ্ধে পিআর (PR) খুলে কোনো নিরাপত্তা দুর্বলতা খুঁজে বের করার প্রক্রিয়াকে সক্রিয় করবে।
২. শুরু করার আগে
একটি প্রকল্প তৈরি করুন বা নির্বাচন করুন
- গুগল ক্লাউড কনসোলের প্রজেক্ট সিলেক্টর পেজে, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
- আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। বিলিং যাচাই করার পদ্ধতি জেনে নিন।
- গুগল ক্লাউডে চলমান কমান্ড-লাইন পরিবেশ ক্লাউড শেল খুলুন। গুগল ক্লাউড কনসোলের শীর্ষে থাকা ‘Activate Cloud Shell’- এ ক্লিক করুন।

- ক্লাউড শেলে সংযুক্ত হওয়ার পর, নিম্নলিখিত কমান্ডটি ব্যবহার করে যাচাই করুন যে আপনি প্রমাণীকৃত এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে:
gcloud auth list
-
gcloudকমান্ডটি আপনার প্রজেক্ট ব্যবহার করার জন্য কনফিগার করা হয়েছে কিনা, তা নিশ্চিত করতে নিম্নলিখিত কমান্ডটি চালান।
gcloud config list project
- আপনার প্রজেক্টটি সেট করা না থাকলে, এটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
gcloud config set project ${GOOGLE_CLOUD_PROJECT}
৩. গিটহাব থেকে গুগল ক্লাউডে অথেন্টিকেশন সেট আপ করুন।
এটি কীভাবে কাজ করে

গিটহাব অ্যাকশনস থেকে গুগল ক্লাউডে প্রমাণীকরণের জন্য ওয়ার্কলোড আইডেন্টিটি ফেডারেশন হলো প্রস্তাবিত পদ্ধতি।
- প্রতিটি গিটহাব অ্যাকশনস ওয়ার্কফ্লো রান জবের জন্য, গিটহাব একটি এক্সটার্নাল আইডেন্টিটি প্রোভাইডার হিসেবে একটি স্বাক্ষরিত JWT (JSON ওয়েব টোকেন) ইস্যু করে। এই টোকেনটিতে
repository,workflow, এবংjob_workflow_refএর মতো 'ক্লেম' থাকে, যা সেই নির্দিষ্ট রানারের জন্য একটি ডিজিটাল পরিচয়পত্র হিসেবে কাজ করে। এই ল্যাবে, আপনি একটি গিটহাব অ্যাকশনস ওয়ার্কফ্লো তৈরি করবেন, যার একটি জবgoogle-github-actions/run-gemini-cliঅ্যাকশনটি ব্যবহার করবে। এই অ্যাকশনটি গিটহাবের কাছে একটি JWT-এর জন্য অনুরোধ করবে এবং এই টোকেনটি গুগল ক্লাউডের সিকিউরিটি টোকেন সার্ভিসে (STS) পাঠাবে। - আপনাকে Google Cloud-এ একটি Workload Identity Pool এবং একটি Provider কনফিগার করতে হবে। এর জন্য আপনাকে issuer URL-টি অফিসিয়াল GitHub টোকেন পরিষেবা URL
https://token.actions.githubusercontent.comসেট করতে হবে এবং আপনার "Attribute Mappings" সংজ্ঞায়িত করতে হবে, যেগুলোতে সাধারণত রিপোজিটরি এবং ব্রাঞ্চের নাম অন্তর্ভুক্ত থাকে। Google Cloud STS, Workload Identity Pool-এর নিয়মগুলোর সাথে JWT-টিকে যাচাই করে। যদি অ্যাট্রিবিউট ম্যাপিংস সহ সবকিছু ঠিকঠাক থাকে, তাহলে STS GitHub টোকেনটির বিনিময়ে একটি স্বল্পস্থায়ী Google Cloud Federated Access Token প্রদান করে। - এখন আপনার GitHub Actions ওয়ার্কফ্লো-তে থাকা
google-github-actions/run-gemini-cliঅ্যাকশনটি স্বল্পস্থায়ী Google Cloud Federated Access Token ব্যবহার করে Workload Identity Pool-এ একটি সংযুক্ত সার্ভিস অ্যাকাউন্টের ছদ্মবেশ ধারণ করতে পারবে। যেকোনো Google Cloud রিসোর্স এবং পরিষেবা অ্যাক্সেস করার জন্য সংযুক্ত সার্ভিস অ্যাকাউন্টটির প্রয়োজনীয় IAM রোল এবং অনুমতি থাকতে হবে।
জেমিনি এপিআই কী-এর পরিবর্তে ওয়ার্কলোড আইডেন্টিটি ফেডারেশন ব্যবহারের সুবিধাসমূহ
একটি Gemini API Key ব্যবহার করে GitHub Actions থেকে উদ্ভূত Gemini CLI কলগুলিকে প্রমাণীকরণ করা সম্ভব, যার জন্য উপযুক্ত কী ভ্যালু সহ GEMINI_API_KEY নামের একটি নতুন GitHub Actions সিক্রেট তৈরি করতে হয়। তবে, নিম্নলিখিত নিরাপত্তা কারণগুলির জন্য এটি নিরুৎসাহিত করা হয়:
- জেমিনি এপিআই কী-গুলো তাদের নিজ নিজ আইএএম রোল বাইন্ডিং থেকে ব্যাপক অনুমতি পেতে পারে। যখন এগুলোর নিরাপত্তা বিঘ্নিত হয়, তখন গুগল ক্লাউডের বিস্তৃত পরিসরের রিসোর্স ও পরিষেবাগুলোতে অ্যাক্সেস উন্মুক্ত হয়ে যায়। ওয়ার্কলোড আইডেন্টিটি ফেডারেশন সার্ভিস অ্যাকাউন্ট এবং স্বল্পস্থায়ী অ্যাক্সেস টোকেন ব্যবহার করে, যা অথেন্টিকেশন ব্যবস্থাকে উল্লেখযোগ্যভাবে আরও কঠোর করে তোলে।
- বৃহৎ পরিসরে জেমিনি এপিআই কী (Gemini API keys) পরিচালনা করাও বেশ কঠিন। কোন ওয়ার্কফ্লো একটি এক্সপোজড কী (explosed key) ব্যবহার করছে তা শনাক্ত করতে সময় লাগে। ম্যানুয়ালি কীগুলো পরিবর্তন করতেও সময় লাগে। অন্যদিকে, আপনি ক্লাউড কনসোল (Cloud Console) থেকে আপনার রিপোজিটরির সাথে যুক্ত ওয়ার্কলোড আইডেন্টিটি পুল (Workload Identity pools) এবং প্রোভাইডারগুলো (providers) সহজেই খুঁজে বের করতে, সম্পাদনা করতে এবং মুছে ফেলতে পারেন।
- জেমিনি এপিআই কী ব্যবহার করার সময়, আপনাকে সবসময় ভালোভাবে যাচাই করে নিতে হবে যে আপনি ভুলবশত সেগুলোকে কোনো অ্যাক্সেস বা ডিবাগ লগে প্রকাশ করে ফেলছেন না। ওয়ার্কলোড আইডেন্টিটি ফেডারেশনের ক্ষেত্রে, আপনি কোনো গিটহাব অ্যাকশনস ওয়ার্কফ্লো সিক্রেট সংরক্ষণ করেন না, বরং ভ্যারিয়েবল সংরক্ষণ করেন, যা স্বভাবতই কম সংবেদনশীল।
গিটহাব অ্যাকশন এবং গুগল ক্লাউড কনফিগার করুন
- আপনার ক্লাউড শেলে আপনার গিটহাব অ্যাকাউন্টে লগ ইন করুন।
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}
৪. একটি গিটহাব অ্যাকশনস ওয়ার্কফ্লো তৈরি করুন
- আপনার নিজের একটি গিটহাব রিপোজিটরি চেক আউট করুন।
git clone {YOUR_REPO}
cd {YOUR REPO}
-
/gemini-cli-extensions/securityরিপো থেকে একটি উদাহরণ ওয়ার্কফ্লোymlস্ক্রিপ্ট কপি করে এমন একটি GitHub Actions ওয়ার্কফ্লো তৈরি করুন যা/security:analyze-github-prস্ল্যাশ কমান্ডটি কল করে।
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
৫. নতুন এবং বিদ্যমান PR-গুলিতে নিরাপত্তা বিশ্লেষণ ওয়ার্কফ্লো চালান।
আপনার গিটহাব রিপোজিটরিতে একটি নতুন পিআর (PR) শুরু করুন অথবা রিপো মালিক বা কন্ট্রিবিউটর হিসেবে "@gemini-cli /review" লিখে একটি নতুন মন্তব্য পোস্ট করুন। এটি পিআর-টির উপর একটি নিরাপত্তা পর্যালোচনা শুরু করবে। আপনার রিপোতে কমিট করা গিটহাব অ্যাকশনস ওয়ার্কফ্লো-এর জেমিনি সিএলআই সিকিউরিটি এক্সটেনশনটি (Gemini CLI Security Extension) খুঁজে পাওয়া যেকোনো নিরাপত্তা সমস্যাকে "Critical", "High", "Medium" থেকে "Low" পর্যন্ত তীব্রতার বিভিন্ন ক্যাটাগরি অনুযায়ী ট্যাগ করবে।
এখানে একটি নতুন পিআর-এর নিরাপত্তা পর্যালোচনার উদাহরণ এবং একটি বিদ্যমান পিআর-এর নিরাপত্তা পর্যালোচনার উদাহরণ দেওয়া হলো।
৬. আরও অনুসন্ধান
আমরা আপনাকে জেমিনি সিএলআই সিকিউরিটি এক্সটেনশনে নতুন নিরাপত্তা সক্ষমতা সম্পন্ন কাস্টম কমান্ডের ক্রমবর্ধমান তালিকাটি অন্বেষণ করতে এবং আপনার ওয়ার্কফ্লোতে এটি ব্যবহার শুরু করতে উৎসাহিত করছি। উদাহরণস্বরূপ:
-
/security:scan-depsআপনার প্রোজেক্টের ডিপেন্ডেন্সিগুলোকে OSV.dev-এর সাথে মিলিয়ে দেখে।
সর্বশেষ ফিচার এবং বাগ ফিক্স সম্পর্কে জানতে রিলিজ নোটগুলোও দেখে নিন।
৭. অভিনন্দন
অভিনন্দন, আপনি নিরাপত্তা ঝুঁকি এবং দুর্বলতার জন্য পিআর (PR) বিশ্লেষণ করতে জেমিনি সিএলআই সিকিউরিটি এক্সটেনশন (Gemini CLI Security Extension) ব্যবহার করার জন্য আপনার গিটহাব রিপোজিটরিটি সফলভাবে কনফিগার করেছেন।