১. ভূমিকা
এই ল্যাবে আপনি ক্লাউড রান এবং জিকেই ক্লাস্টারে একটি অ্যাপ্লিকেশন ডেপ্লয় করবেন এবং সফটওয়্যার ডেলিভারি শিল্ড সিকিউরিটিতে ডেপ্লয়মেন্টটির নিরাপত্তা সংক্রান্ত তথ্য দেখবেন।
আপনি যা শিখবেন
- আর্টিফ্যাক্ট রেজিস্ট্রি নিরাপত্তা অন্তর্দৃষ্টি
- ক্লাউড রান নিরাপত্তা অন্তর্দৃষ্টি
- জিকেই নিরাপত্তা ভঙ্গি
২. সেটআপ এবং প্রয়োজনীয়তা
ক্লাউড প্রজেক্ট সেটআপ
- Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।



- প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
- প্রজেক্ট আইডি সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (একবার সেট করার পর এটি পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর প্রয়োজন হয় না। বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এটি সাধারণত
PROJECT_IDহিসাবে চিহ্নিত করা হয়)। তৈরি করা আইডিটি আপনার পছন্দ না হলে, আপনি এলোমেলোভাবে আরেকটি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রজেক্টের পুরো সময়কাল জুড়ে এটি অপরিবর্তিত থাকবে। - আপনার অবগতির জন্য জানাচ্ছি যে, তৃতীয় একটি ভ্যালু রয়েছে, যা হলো প্রজেক্ট নাম্বার এবং কিছু এপিআই এটি ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি ভ্যালু সম্পর্কে আরও বিস্তারিত জানুন।
- এরপর, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হওয়ার কথা নয়, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর যাতে কোনো বিলিং না হয়, সেজন্য রিসোর্সগুলো বন্ধ করতে আপনি আপনার তৈরি করা রিসোর্সগুলো অথবা পুরো প্রজেক্টটিই ডিলিট করে দিতে পারেন। গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।
পরিবেশ সেটআপ
সার্চ বারের ডানদিকে থাকা আইকনটিতে ক্লিক করে ক্লাউড শেল সক্রিয় করুন।

ক্লাউড শেল থেকে, এই ল্যাবের জন্য প্রয়োজনীয় API-গুলো সক্রিয় করুন:
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
container.googleapis.com \
containersecurity.googleapis.com
অনুমতি দিতে বলা হলে, চালিয়ে যাওয়ার জন্য 'Authorize'-এ ক্লিক করুন।

এর ফলে এইটির মতো একটি সফল বার্তা তৈরি হওয়া উচিত:
Operation "operations/acf.p2-327036483151-73d90d00-47ee-447a-b600-a6badf0eceae" finished successfully.
অ্যাসিঙ্ক্রোনাসভাবে GKE ক্লাস্টার তৈরি করতে কমান্ডটি চালান। এটি ল্যাবের পরবর্তী অংশে ব্যবহার করা হবে:
gcloud beta container clusters create gke-cluster \
--zone us-central1-a \
--async
৩. আবেদনপত্র প্রস্তুত করুন
প্রথমে, আপনি একটি সহজ এক্সপ্রেস-ভিত্তিক Node.js অ্যাপ্লিকেশন তৈরি করবেন যা HTTP অনুরোধে সাড়া দেয়।
ক্লাউড শেলে starter-nodejs নামে একটি নতুন ডিরেক্টরি তৈরি করুন, তারপর সেই ডিরেক্টরিতে প্রবেশ করুন:
mkdir starter-nodejs
cd starter-nodejs
নিচের কমান্ডগুলো চালিয়ে একটি package.json ফাইল তৈরি করুন:
cat > ./package.json << EOF
{
"name": "cloudrun-starter-app",
"version": "1.0.0",
"description": "Node.js Starter Application",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"author": "",
"license": "Apache-2.0",
"dependencies": {
"express": "^4.18.2"
}
}
EOF
উপরের ফাইলটিতে একটি স্টার্ট স্ক্রিপ্ট কমান্ড এবং এক্সপ্রেস ওয়েব অ্যাপ্লিকেশন ফ্রেমওয়ার্কের উপর একটি নির্ভরতা রয়েছে।
এরপর, একই ডিরেক্টরিতে নিচের কমান্ডগুলো চালিয়ে একটি index.js ফাইল তৈরি করুন:
cat > ./index.js << EOF
const express = require('express');
const app = express();
app.get('/', (req, res) => {
console.log('Received a request.');
res.send("Hello Cloud Run!");
});
const port = process.env.PORT || 8080;
app.listen(port, () => {
console.log('Listening on port', port);
});
EOF
এই কোডটি একটি সাধারণ ওয়েব সার্ভার তৈরি করে, যা PORT এনভায়রনমেন্ট ভেরিয়েবল দ্বারা নির্ধারিত পোর্টে শোনে। আপনার অ্যাপটি এখন তৈরি এবং কন্টেইনারাইজ ও ডেপ্লয় করার জন্য প্রস্তুত।
৪. ক্লাউড রান অ্যাপ্লিকেশন স্থাপন করুন
আপনার অ্যাপ্লিকেশনটি ডেপ্লয় করতে নিচের কমান্ডটি চালান:
gcloud run deploy starter-app \
--source . \
--region us-central1 \
--allow-unauthenticated \
--max-instances=3
আর্টিফ্যাক্ট রেজিস্ট্রি রিপোজিটরি তৈরি নিশ্চিত করুন:
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [us-central1] will be created. Do you want to continue (Y/n)? y
৫. আর্টিফ্যাক্ট রেজিস্ট্রি এবং ক্লাউড বিল্ড নিরাপত্তা অন্তর্দৃষ্টি
নির্মাণটি সম্পন্ন হতে কয়েক মিনিট সময় লাগবে।
ক্লাউড বিল্ড খুলুন এবং সর্বশেষ বিল্ডের বিল্ড আর্টিফ্যাক্টগুলো পর্যালোচনা করুন।
গুগল ক্লাউড কনসোলের ক্লাউড বিল্ড UI-তে সফটওয়্যার ডেলিভারি শিল্ড সিকিউরিটি ইনসাইটস প্যানেলটি রয়েছে, যা বিল্ড সম্পর্কিত নিরাপত্তা তথ্য প্রদর্শন করে, যেমন SLSA লেভেল, ডিপেন্ডেন্সিগুলোর কোনো দুর্বলতা এবং বিল্ড প্রোভেনেন্স।

তৈরি করা কন্টেইনার ইমেজের জন্য সিকিউরিটি ইনসাইটস পর্যালোচনা করুন। আর্টিফ্যাক্ট রেজিস্ট্রি-তে এই ইমেজের দুর্বলতার বিবরণ দেখতে স্ক্যান করা আর্টিফ্যাক্টসের লিঙ্কটি অনুসরণ করুন।
ক্লাউড শেল কনসোলে ফিরে যান এবং যাচাই করুন যে ক্লাউড রান অ্যাপ্লিকেশন ডেপ্লয়মেন্ট সম্পূর্ণ হয়েছে।
Done. Service [starter-app] revision [starter-app-00001-maw] has been deployed and is serving 100 percent of traffic. Service URL: https://starter-app-nin5jpgefq-uc.a.run.app
৬. ক্লাউড রান সিকিউরিটি ইনসাইটস
ক্লাউড রান-এ একটি নিরাপত্তা প্যানেল (প্রিভিউ) রয়েছে, যা সফটওয়্যার সাপ্লাই চেইন নিরাপত্তার বিভিন্ন তথ্য প্রদর্শন করে, যেমন—এসএলএসএ বিল্ড লেভেল কমপ্লায়েন্সের তথ্য, বিল্ড প্রোভেনেন্স এবং চলমান সার্ভিসগুলোতে পাওয়া দুর্বলতা।
Cloud Run খুলুন এবং REVISIONS / SECURITY ট্যাবের অধীনে Security Insights পর্যালোচনা করুন।

এই প্যানেলটি নিম্নলিখিত তথ্য প্রদর্শন করে:
- পরিচয় ও এনক্রিপশন: ডিফল্ট Compute Engine সার্ভিস অ্যাকাউন্টের ইমেল ঠিকানা এবং ডেপ্লয়মেন্টের জন্য ব্যবহৃত এনক্রিপশন কী।
- SLSA লেভেল: এই বিল্ডটি SLSA লেভেল ৩-এর, যা SLSA স্পেসিফিকেশন অনুযায়ী সফটওয়্যার বিল্ড প্রক্রিয়ার পরিপক্কতার স্তর নির্দেশ করে।
- দুর্বলতা: অ্যাপ্লিকেশন নির্ভরতাগুলিতে পাওয়া যেকোনো দুর্বলতা।
- বিল্ডের বিবরণ: বিল্ডের বিস্তারিত তথ্য, যেমন নির্মাতা এবং লগ দেখার লিঙ্ক।
- বিল্ড প্রোভেনেন্স: বিল্ডের উৎস, যা একটি বিল্ড সম্পর্কিত যাচাইযোগ্য মেটাডেটার একটি সংগ্রহ। এতে বিল্ড করা ইমেজগুলোর ডাইজেস্ট, ইনপুট সোর্সের অবস্থান, বিল্ড টুলচেইন, বিল্ডের ধাপসমূহ এবং বিল্ডের সময়কালের মতো বিবরণ অন্তর্ভুক্ত থাকে।
৭. জিকেই নিরাপত্তা নীতি
GKE আপনার কন্টেইনারের নিরাপত্তা পরিস্থিতি মূল্যায়ন করতে পারে এবং ক্লাস্টার সেটিংস, ওয়ার্কলোড কনফিগারেশন ও দুর্বলতা বিষয়ে সক্রিয় নির্দেশনা দিতে পারে। এতে সিকিউরিটি পসচার ড্যাশবোর্ড (প্রিভিউ) অন্তর্ভুক্ত রয়েছে, যা আপনার GKE ক্লাস্টার এবং ওয়ার্কলোড স্ক্যান করে আপনার নিরাপত্তা পরিস্থিতি উন্নত করার জন্য সুচিন্তিত ও কার্যকর সুপারিশ প্রদান করে।
পরবর্তী ধাপে, আপনি অ্যাপ্লিকেশনটি GKE ক্লাস্টারে ডেপ্লয় করবেন এবং GKE সিকিউরিটি পোসচার ড্যাশবোর্ডে নিরাপত্তা সংক্রান্ত তথ্য পর্যালোচনা করবেন।
নিম্নলিখিত কমান্ডটি চালিয়ে ক্লাস্টারটি প্রস্তুত কিনা তা যাচাই করুন:
gcloud beta container clusters list
নমুনা আউটপুট:
NAME: gke-cluster LOCATION: us-central1-a MASTER_VERSION: 1.24.9-gke.3200 MASTER_IP: 34.29.226.228 MACHINE_TYPE: e2-medium NODE_VERSION: 1.24.9-gke.3200 NUM_NODES: 3 STATUS: RUNNING
GKE ক্লাস্টারের জন্য ক্রেডেনশিয়াল এবং কনফিগারেশন সংগ্রহ করুন:
gcloud container clusters get-credentials gke-cluster \
--region=us-central1-a
পূর্ববর্তী ধাপে তৈরি করা ইমেজটি ব্যবহার করে অ্যাপ্লিকেশনটি ডিপ্লয় করার জন্য কমান্ডটি চালান:
export PROJECT_ID=$(gcloud config get-value project)
kubectl run starter-app \
--image us-central1-docker.pkg.dev/${PROJECT_ID}/cloud-run-source-deploy/starter-app:latest \
--port 8080
GKE ওয়ার্কলোডগুলির আদর্শগতভাবে একটি সুরক্ষিত কনফিগারেশন থাকা উচিত যা তাদের আক্রমণের ঝুঁকি সীমিত করে। বৃহৎ পরিসরে, বিভিন্ন ক্লাস্টারে ওয়ার্কলোডগুলির কনফিগারেশনগত সমস্যা ম্যানুয়ালি পরীক্ষা করা কঠিন হতে পারে। আপনি সিকিউরিটি পোসচার ড্যাশবোর্ড ব্যবহার করে একাধিক ক্লাস্টারে আপনার চলমান সমস্ত ওয়ার্কলোডের কনফিগারেশন স্বয়ংক্রিয়ভাবে স্ক্যান করতে পারেন এবং আপনার নিরাপত্তা ব্যবস্থা উন্নত করার জন্য কার্যকর, স্কোরযুক্ত ফলাফল ও মতামতভিত্তিক সুপারিশ পেতে পারেন।
ওয়ার্কলোড কনফিগারেশন স্ক্যানিং সক্ষম করুন:
gcloud beta container clusters update gke-cluster \
--region=us-central1-a \
--enable-workload-config-audit
ওয়ার্কলোড কনফিগারেশন স্ক্যান করার পাশাপাশি, আপনি সিকিউরিটি পসচার ড্যাশবোর্ডে ওয়ার্কলোড ভালনারেবিলিটি স্ক্যানিংও চালু করতে পারেন এবং এর ফলাফল পর্যালোচনা করতে পারেন। এই ড্যাশবোর্ডটি এমন কিছু ফিচারের সমষ্টি যা আপনার GKE ক্লাস্টার এবং ওয়ার্কলোডের নিরাপত্তা উন্নত করার জন্য সুনির্দিষ্ট তথ্য ও সুপারিশ প্রদান করে।
GKE, NIST- এর মতো পাবলিক CVE ডেটাবেস থেকে দুর্বলতার ডেটা ব্যবহার করে, আপনার GKE ক্লাস্টারে চলমান প্রতিটি যোগ্য Pod-এর কন্টেইনার ইমেজগুলিকে পরিচিত দুর্বলতার জন্য স্বয়ংক্রিয়ভাবে স্ক্যান করে।
আপনার কন্টেইনার ইমেজগুলিতে কোনো দুর্বলতা খুঁজে পাওয়া গেলে, GKE একটি তীব্রতার রেটিং নির্ধারণ করে এবং Google Cloud কনসোলের সিকিউরিটি পোসচার ড্যাশবোর্ডে ফলাফলগুলি প্রদর্শন করে। এছাড়াও, নিরীক্ষা এবং শনাক্তকরণের সুবিধার জন্য GKE ক্লাউড লগিং-এ এন্ট্রি যোগ করে।
ওয়ার্কলোড দুর্বলতা স্ক্যানিং সক্ষম করুন:
gcloud beta container clusters update gke-cluster \
--region=us-central1-a \
--enable-workload-vulnerability-scanning \
--async
GKE নিরাপত্তা ভঙ্গি পৃষ্ঠাটি খুলুন।
কাজের চাপ নিরীক্ষাটি সম্পন্ন হওয়ার জন্য কয়েক মিনিট অপেক্ষা করুন এবং তারপর ফলাফলগুলো পর্যালোচনা করুন।

কনফিগারেশন সংক্রান্ত সমস্যা এবং প্রভাবিত ওয়ার্কলোডগুলো পর্যালোচনা করুন।

সিকিউরিটি পোসচার ড্যাশবোর্ড কেন ব্যবহার করবেন
সিকিউরিটি পোসচার ড্যাশবোর্ড হলো একটি মৌলিক নিরাপত্তা ব্যবস্থা যা আপনি যেকোনো যোগ্য GKE ক্লাস্টারের জন্য সক্রিয় করতে পারেন। নিম্নলিখিত কারণগুলোর জন্য গুগল ক্লাউড আপনার সমস্ত ক্লাস্টারে সিকিউরিটি পোসচার ড্যাশবোর্ড ব্যবহার করার পরামর্শ দেয়:
- ন্যূনতম ব্যাঘাত: ফিচারগুলো চলমান ওয়ার্কলোডে হস্তক্ষেপ করে না বা তাতে ব্যাঘাত ঘটায় না।
- কার্যকরী সুপারিশ: উপলব্ধ থাকলে, সিকিউরিটি পসচার ড্যাশবোর্ডটি আবিষ্কৃত সমস্যাগুলো সমাধানের জন্য করণীয় বিষয়াদি প্রদান করে। এই পদক্ষেপগুলোর মধ্যে রয়েছে আপনি চালাতে পারেন এমন কমান্ড, কী ধরনের কনফিগারেশন পরিবর্তন করতে হবে তার উদাহরণ, এবং দুর্বলতা প্রশমিত করার জন্য কী করতে হবে সে সম্পর্কে পরামর্শ।
- ভিজ্যুয়ালাইজেশন: সিকিউরিটি পোসচার ড্যাশবোর্ডটি আপনার প্রোজেক্ট জুড়ে ক্লাস্টারগুলিকে প্রভাবিত করে এমন উদ্বেগগুলির একটি উচ্চ-স্তরের ভিজ্যুয়ালাইজেশন প্রদান করে এবং এতে আপনার অগ্রগতি ও প্রতিটি উদ্বেগের সম্ভাব্য প্রভাব দেখানোর জন্য চার্ট ও গ্রাফ অন্তর্ভুক্ত থাকে।
- মতামত-ভিত্তিক ফলাফল: GKE, গুগলের নিরাপত্তা দলগুলোর দক্ষতা এবং শিল্প মানদণ্ডের উপর ভিত্তি করে আবিষ্কৃত উদ্বেগগুলোকে একটি তীব্রতার রেটিং প্রদান করে।
- নিরীক্ষণযোগ্য ইভেন্ট লগ: উন্নততর প্রতিবেদনযোগ্যতা ও পর্যবেক্ষণযোগ্যতার জন্য GKE আবিষ্কৃত সমস্ত সমস্যা লগিং-এ যোগ করে।
৮. অভিনন্দন!
অভিনন্দন! আপনি কোডল্যাবটি সম্পন্ন করেছেন।
আমরা যা আলোচনা করেছি:
- ক্লাউড রান এবং জিকেই-তে চলমান বিল্ড আর্টিফ্যাক্ট এবং অ্যাপ্লিকেশনের জন্য নিরাপত্তা সংক্রান্ত তথ্য।
পরিষ্কার করা
এই টিউটোরিয়ালে ব্যবহৃত রিসোর্সগুলোর জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ হওয়া এড়াতে, হয় রিসোর্সগুলো যে প্রজেক্টে রয়েছে সেটি ডিলিট করে দিন, অথবা প্রজেক্টটি রেখে দিয়ে আলাদা আলাদা রিসোর্সগুলো ডিলিট করে দিন।
প্রকল্পটি মুছে ফেলা হচ্ছে
বিলিং বন্ধ করার সবচেয়ে সহজ উপায় হলো টিউটোরিয়ালের জন্য তৈরি করা প্রজেক্টটি ডিলিট করে দেওয়া।
—
সর্বশেষ হালনাগাদ: ২১/৩/২৩