১. সংক্ষিপ্ত বিবরণ
এই ল্যাবটি আপনাকে দেখাবে কীভাবে একটি ক্লাউড রান সার্ভিসে অ্যাক্সেস সীমাবদ্ধ করতে হয় এবং শুধুমাত্র অন-প্রিমিসেস বা আপনার প্রজেক্টের ভিপিসি-তে চলমান ওয়ার্কলোড থেকে আসা অনুরোধগুলোকে অনুমতি দিতে হয়। আপনি দুই ধরনের অ্যাক্সেস কন্ট্রোল ব্যবহার করতে পারেন: ইনগ্রেস সেটিংস এবং আইডেন্টিটি অ্যান্ড অ্যাক্সেস ম্যানেজমেন্ট (আইএএম) পলিসি।

প্রবেশ সেটিংস
ইনগ্রেস সেটিংস আপনাকে নেটওয়ার্কের উৎস (অভ্যন্তরীণ বা বাহ্যিক) অনুসারে অনুরোধগুলি ফিল্টার করার সুযোগ দেয়। ডিফল্টরূপে, পাবলিক ইন্টারনেট থেকে আসা অনুরোধগুলি সহ সমস্ত অনুরোধকেই যেতে দেওয়া হয়।
আইএএম নীতি
IAM পলিসি আপনাকে প্রেরকের পরিচয়ের উপর ভিত্তি করে অনুরোধ ফিল্টার করতে দেয় এবং সাধারণত এক পরিষেবা থেকে অন্য পরিষেবার অনুরোধ প্রমাণীকরণের জন্য ব্যবহৃত হয়।
এই ল্যাবে আপনারা শিখবেন কীভাবে এবং কখন ইনগ্রেস সেটিংস ব্যবহার করতে হয়।
অন-প্রিমিসেস হোস্টগুলো VPC-এর মাধ্যমে সংযুক্ত হয়।
এই ল্যাবে, আমরা একটি অন-প্রিমিসেস ওয়ার্কলোড সিমুলেট করব। একটি অন-প্রিমিসেস হোস্টকে ক্লাউড রানের সাথে সংযুক্ত করতে, আপনাকে অন-প্রিমিসেস হোস্টগুলির জন্য প্রাইভেট গুগল অ্যাক্সেস কনফিগার করতে হবে। এর মধ্যে ভিপিসি নেটওয়ার্কে একটি ক্লাউড ভিপিএন গেটওয়ে সেট আপ করা অন্তর্ভুক্ত, যা নীচে দেখানো হয়েছে।

VPC-তে জাম্প সার্ভার ব্যবহার করে অন-প্রিমিস ওয়ার্কলোড সিমুলেট করা
এই ল্যাবে, আপনি এখানে দেখানো পদ্ধতি অনুযায়ী VPC-তে থাকা একটি Compute Engine ভার্চুয়াল মেশিন থেকে রিকোয়েস্ট পাঠানোর মাধ্যমে একটি অন-প্রিমিসেস হোস্ট থেকে রিকোয়েস্ট পাঠানোর বিষয়টি সিমুলেট করবেন।

আপনি জাম্প সার্ভার হিসেবে যে Compute Engine ভার্চুয়াল মেশিনটি ব্যবহার করবেন, সেটির নেটওয়ার্ক অরিজিন Cloud VPN Gateway-এর মতোই, আর একারণেই আপনি এটি ব্যবহার করে অন-প্রিমিসেস ওয়ার্কলোড থেকে রিকোয়েস্ট পাঠানোর অনুকরণ করতে পারেন।
২. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিতে পরিবেশ সেটআপ
- Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।



- প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
- প্রজেক্ট আইডি সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (একবার সেট করার পর এটি পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এটি সাধারণত
PROJECT_IDহিসাবে চিহ্নিত করা হয়)। তৈরি করা আইডিটি আপনার পছন্দ না হলে, আপনি এলোমেলোভাবে আরেকটি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রজেক্টের পুরো সময়কাল জুড়ে এটি অপরিবর্তিত থাকবে। - আপনার অবগতির জন্য জানাচ্ছি যে, তৃতীয় একটি ভ্যালু রয়েছে, যা হলো প্রজেক্ট নাম্বার এবং কিছু এপিআই এটি ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি ভ্যালু সম্পর্কে আরও বিস্তারিত জানুন।
- এরপর, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হওয়ার কথা নয়, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর যাতে কোনো বিলিং না হয়, সেজন্য রিসোর্সগুলো বন্ধ করতে আপনি আপনার তৈরি করা রিসোর্সগুলো অথবা পুরো প্রজেক্টটিই ডিলিট করে দিতে পারেন। গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।
পরিবেশ সেটআপ
- পরবর্তী কমান্ডগুলিতে ব্যবহারের জন্য প্রজেক্ট আইডি-তে একটি এনভায়রনমেন্ট ভেরিয়েবল সেট করুন:
export PROJECT_ID=$(gcloud config get-value project)
export REGION=us-central1
export ZONE=us-central1-a
- এই ল্যাবটি চালানোর জন্য প্রয়োজনীয় এপিআইগুলো সক্রিয় করুন।
gcloud services enable \
run.googleapis.com \
cloudbuild.googleapis.com \
compute.googleapis.com \
artifactregistry.googleapis.com
- স্যাম্পল অ্যাপ রিপোজিটরিটি ক্লোন করুন এবং ডিরেক্টরিতে যান
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git
cd cymbal-eats/partner-registration-service
- কম্পিউট ইঞ্জিন এবং ক্লাউড রানের জন্য ডিফল্ট অঞ্চল ও জোন সেট করুন।
gcloud config set compute/region ${REGION}
gcloud config set run/region ${REGION}
gcloud config set compute/zone ${ZONE}
৩. পরিষেবাটি স্থাপন করুন
প্রথমে আপনি সার্ভিসটি ডেপ্লয় করবেন এবং এটিকে সর্বজনীনভাবে অ্যাক্সেসযোগ্য রাখবেন। আপনার ব্রাউজার থেকে রিকোয়েস্ট পাঠানো যাচ্ছে কিনা তা যাচাই করার পর, আমরা সার্ভিসটি লক করে দেব এবং শুধুমাত্র অভ্যন্তরীণ নেটওয়ার্ক সোর্স থেকে রিকোয়েস্টের অনুমতি দেব।
নিম্নলিখিত কমান্ডটি চালানোর সময়, এই নির্দেশাবলী অনুসরণ করুন:
- সোর্স কোডের অবস্থান (...): আপনি partner-registration-service ডিরেক্টরিতে আছেন কিনা তা যাচাই করুন এবং ডিফল্টটি গ্রহণ করতে এন্টার চাপুন।
- পরিষেবার নাম (পার্টনার-রেজিস্ট্রেশন-সার্ভিস): ডিফল্টটি গ্রহণ করতে এন্টার চাপুন।
- [পার্টনার-রেজিস্ট্রেশন-সার্ভিস]-এ প্রমাণীকরণবিহীন আহ্বানের অনুমতি দিন (y/N)? Y
gcloud run deploy
এই কমান্ডটি সম্পন্ন হলে, এটি আপনার ক্লাউড রান সার্ভিসের URL তালিকাভুক্ত করে। আউটপুটটি এই তালিকার মতো দেখতে হবে:
Service [partner-registration-service] revision [partner-registration-service-00001-haz] has been deployed and is serving 100 percent of traffic. Service URL: https://partner-registration-service-ssssssssss-uc.a.run.app
আপনার ব্রাউজারে সার্ভিস ইউআরএলটি খুলুন। আপনি এই আউটপুটটি দেখতে পাবেন:
Partner registration service: RUNNING
শুধুমাত্র অভ্যন্তরীণ অনুরোধ অনুমোদনের জন্য পরিষেবাটি সেট করুন।
এখন, আপনি ক্লাউড রান সার্ভিসের ইনগ্রেস সেটিংস ব্যবহার করে শুধুমাত্র অভ্যন্তরীণ উৎস থেকে আসা অনুরোধগুলোকে অনুমতি দেবেন। অভ্যন্তরীণ উৎসের মধ্যে সেইসব ভিপিসি নেটওয়ার্কের রিসোর্স অন্তর্ভুক্ত, যেগুলো ক্লাউড রান সার্ভিসের মতোই একই প্রজেক্টে (বা ভিপিসি সার্ভিস কন্ট্রোলস পেরিমিটারে) রয়েছে — যা এটিকে আমাদের ব্যবহারের জন্য একেবারে উপযুক্ত করে তোলে।
এছাড়াও, অন্যান্য গুগল ক্লাউড প্রোডাক্ট থেকে আসা অনুরোধগুলোকে অভ্যন্তরীণ হিসেবে বিবেচনা করা হয়, এমনকি যদি সেগুলো ভিপিসি-র অংশ না-ও হয়। উদাহরণস্বরূপ, সেই প্রোডাক্টগুলোর মধ্যে রয়েছে পাব/সাব এবং ওয়ার্কফ্লো।
এই উৎসগুলো থেকে আসা অনুরোধগুলো গুগল নেটওয়ার্কের মধ্যেই থাকে, এমনকি যদি সেগুলো run.app ইউআরএল-এর মাধ্যমে আপনার পরিষেবা অ্যাক্সেস করে থাকে, এবং সর্বসাধারণের প্রবেশাধিকার নিষিদ্ধ।
শুধুমাত্র অভ্যন্তরীণ অনুরোধের অনুমতি দেওয়ার জন্য পরিষেবাটি আপডেট করুন:
gcloud run services update partner-registration-service --ingress=internal
আপনি যদি সার্ভিস ইউআরএলটি আবার খোলেন, তাহলে সেখানে লেখা থাকবে " ত্রুটি: নিষিদ্ধ - অ্যাক্সেস নিষিদ্ধ "।
যেহেতু আপনার ব্রাউজারটি গুগল ক্লাউড প্রজেক্টের অভ্যন্তরীণ কোনো অরিজিন থেকে নয়, বরং একটি বাহ্যিক নেটওয়ার্ক অরিজিন থেকে অনুরোধটি পাঠাচ্ছে, তাই ঠিক এমনটাই ঘটার কথা। আপনার পরিষেবাটি এখন আরও সুরক্ষিত।
৪. একটি Compute Engine ভার্চুয়াল মেশিনকে জাম্প সার্ভার হিসেবে তৈরি করুন।
পরবর্তী পদক্ষেপ হলো, একটি জাম্প সার্ভার হিসেবে ব্যবহারের জন্য VPC-তে একটি Compute Engine ইনস্ট্যান্স তৈরি করে, ক্লাউড VPN গেটওয়ের মাধ্যমে অন-প্রিমিসেস সার্ভার থেকে আসা অনুরোধগুলোকে সিমুলেট করা।
gcloud compute instances create jump-server --scopes=https://www.googleapis.com/auth/cloud-platform
এই কমান্ডের আউটপুটটি দেখতে অনেকটা এইরকম হবে:
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS jump-server us-central1-a n1-standard-1 10.128.0.10 34.170.108.8 RUNNING
কম্পিউট ইঞ্জিন ইনস্ট্যান্স থেকে পরিষেবাতে একটি অনুরোধ পাঠান
এখন আপনি ভার্চুয়াল মেশিনে একটি টার্মিনাল খুলবেন এবং ভিপিসি নেটওয়ার্কে থাকা মেশিনটি থেকে সরাসরি একটি অনুরোধ পাঠাবেন।
যদি নিম্নলিখিত কমান্ডটি আপনাকে ক্লাউড শেলে SSH সেট আপ করতে বলে, তাহলে নির্দেশাবলী অনুসরণ করুন:
gcloud compute ssh jump-server
এই কমান্ডটি ব্যবহার করে ক্লাউড রান সার্ভিসের URL-টি পান:
gcloud run services describe partner-registration-service --region us-central1
আউটপুটের প্রথম কয়েকটি লাইন দেখতে এইরকম হবে:
✔ Service partner-registration-service in region us-central1 URL: https://partner-registration-service-ssssssssss-uc.a.run.app Ingress: internal
এখন URL-টি কপি করুন এবং curl ব্যবহার করে Compute Engine ইনস্ট্যান্স থেকে একটি অনুরোধ পাঠান। এই অনুরোধটি সফল হওয়া উচিত, কারণ VM ইনস্ট্যান্সটি আপনার প্রোজেক্টের VPC নেটওয়ার্কে চলে — এটি একটি অভ্যন্তরীণ উৎস।
export SERVICE_URL=https://
curl ${SERVICE_URL}
আউটপুটে যা দেখানো উচিত:
Partner registration service: RUNNING
৫. আইএএম-ভিত্তিক অ্যাক্সেস কন্ট্রোল সম্পর্কে কী বলা যায়?
এই ল্যাবটি আপনাকে দেখিয়েছে কীভাবে এবং কখন ইনগ্রেস সেটিংস ব্যবহার করতে হয়। আপনি যদি ক্লাউড রানের সাথে কোনো অন-প্রিমিস ওয়ার্কলোড সংযোগ করেন, তবে ইনগ্রেস সেটিংস একটি চমৎকার প্রথম পদক্ষেপ।
IAM-ভিত্তিক অ্যাক্সেস কন্ট্রোল বাস্তবায়ন করতে আরও বেশি প্রচেষ্টা লাগে, বিশেষ করে যদি আপনি কোনো অন-প্রিমিসেস হোস্ট থেকে কল করেন:
- IAM-এর জন্য আপনাকে হোস্টে দীর্ঘস্থায়ী সার্ভিস অ্যাকাউন্টের ক্রেডেনশিয়ালগুলো পরিচালনা করতে হয়।
- সার্ভিস অ্যাকাউন্টের ক্রেডেনশিয়াল ব্যবহার করে অনুরোধে স্বাক্ষর করার জন্য IAM-এর কোডে পরিবর্তন প্রয়োজন।
অ্যাক্সেস কন্ট্রোলের জন্য গুগল একটি বহুস্তরীয় পদ্ধতির পরামর্শ দেয়। শুধুমাত্র অভ্যন্তরীণ হোস্টগুলিতে অ্যাক্সেস সীমাবদ্ধ করতে ইনগ্রেস সেটিংস ব্যবহার করা একটি চমৎকার প্রথম পদক্ষেপ, কিন্তু এখানেই থেমে যাবেন না!
৬. অভিনন্দন!
অভিনন্দন, আপনি কোডল্যাবটি সম্পন্ন করেছেন!
এরপর কী হবে:
Cymbal Eats-এর অন্যান্য কোডল্যাবগুলি অন্বেষণ করুন:
- ইভেন্টার্কের মাধ্যমে ক্লাউড ওয়ার্কফ্লো চালু করা
- ক্লাউড স্টোরেজ থেকে ইভেন্ট প্রসেসিং ট্রিগার করা
- ক্লাউড রান থেকে প্রাইভেট ক্লাউডএসকিউএল-এ সংযোগ স্থাপন
- ক্লাউড রান থেকে সম্পূর্ণ পরিচালিত ডেটাবেসগুলিতে সংযোগ স্থাপন
- আইডেন্টিটি অ্যাওয়্যার প্রক্সি (IAP) ব্যবহার করে সার্ভারলেস অ্যাপ্লিকেশন সুরক্ষিত করুন
- ক্লাউড শিডিউলারের মাধ্যমে ক্লাউড রান জব চালু করা
- ক্লাউড রানে নিরাপদে স্থাপন করা
- GKE অটোপাইলট থেকে ব্যক্তিগত AlloyDB-তে সংযোগ স্থাপন
পরিষ্কার করা
এই টিউটোরিয়ালে ব্যবহৃত রিসোর্সগুলোর জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ হওয়া এড়াতে, হয় রিসোর্সগুলো যে প্রজেক্টে রয়েছে সেটি ডিলিট করে দিন, অথবা প্রজেক্টটি রেখে দিয়ে আলাদা আলাদা রিসোর্সগুলো ডিলিট করে দিন।
প্রকল্পটি মুছে ফেলা হচ্ছে
বিলিং বন্ধ করার সবচেয়ে সহজ উপায় হলো টিউটোরিয়ালের জন্য তৈরি করা প্রজেক্টটি ডিলিট করে দেওয়া।
দরকারী তথ্যসূত্র
এখানে অতিরিক্ত কিছু রিসোর্স দেওয়া হলো যা আপনাকে ক্লাউড রান-এর দুই স্তরের অ্যাক্সেস কন্ট্রোল সম্পর্কে আরও জানতে সাহায্য করবে।