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



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

পরিবেশটি প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগবে। এটি শেষ হলে, আপনি এইরকম কিছু দেখতে পাবেন:

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই ল্যাবে আপনার সমস্ত কাজ শুধুমাত্র একটি ব্রাউজার দিয়েই করা যাবে।
শুরু করার আগে
ক্লাউড শেলের ভিতরে, নিশ্চিত করুন যে আপনার প্রজেক্ট আইডি সেট আপ করা আছে।
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] PROJECT_ID=[YOUR-PROJECT-NAME] echo $PROJECT_ID
এপিআই সক্ষম করুন
সমস্ত প্রয়োজনীয় পরিষেবা সক্রিয় করুন
gcloud services enable compute.googleapis.com gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com
৩. একটি ক্লাউড স্টোরেজ বাকেট তৈরি করুন
ক্লাউড কনসোলে, নেভিগেশন মেনু > ক্লাউড স্টোরেজ > ব্রাউজার- এ যান। ক্রিয়েট বাকেট (CREATE BUCKET) -এ ক্লিক করুন:

বাকেট নামকরণের নিয়মাবলী:
- বাকেটের নামে সংবেদনশীল তথ্য অন্তর্ভুক্ত করবেন না, কারণ বাকেট নেমস্পেসটি গ্লোবাল এবং সর্বজনীনভাবে দৃশ্যমান।
- বাকেটের নামে শুধুমাত্র ছোট হাতের অক্ষর, সংখ্যা, ড্যাশ (-), আন্ডারস্কোর (_) এবং ডট (.) থাকতে হবে। ডটযুক্ত নাম যাচাইয়ের প্রয়োজন হবে।
- বাকেটের নাম অবশ্যই একটি সংখ্যা বা অক্ষর দিয়ে শুরু এবং শেষ হতে হবে।
- বাকেটের নামে অবশ্যই ৩ থেকে ৬৩টি অক্ষর থাকতে হবে। ডটযুক্ত নামে সর্বোচ্চ ২২২টি অক্ষর থাকতে পারে, কিন্তু ডট দ্বারা বিভক্ত প্রতিটি অংশ ৬৩ অক্ষরের বেশি হতে পারবে না।
- বাকেটের নাম ডটেড-ডেসিমাল পদ্ধতিতে আইপি অ্যাড্রেস হিসেবে প্রকাশ করা যায় না (যেমন, 192.168.5.4)।
- বাকেটের নাম 'goog' উপসর্গ দিয়ে শুরু হতে পারবে না।
- বাকেটের নামে 'google' বা এর কাছাকাছি কোনো ভুল বানান থাকতে পারবে না।
- এছাড়াও, DNS নিয়ম মেনে চলা এবং ভবিষ্যতের সাথে সামঞ্জস্য রক্ষার জন্য, আপনার আন্ডারস্কোর (_) ব্যবহার করা উচিত নয় অথবা একটি পিরিয়ডের পাশে আরেকটি পিরিয়ড বা ড্যাশ রাখা উচিত নয়। উদাহরণস্বরূপ, ".." বা "-." বা ".-" DNS নামে বৈধ নয়।
চালিয়ে যান-এ ক্লিক করুন।
অবস্থানের ধরণ: অঞ্চল
অবস্থান: আপনার থেকে দূরে একটি অঞ্চল বেছে নিন
চালিয়ে যান-এ ক্লিক করুন।
ডিফল্ট স্টোরেজ ক্লাস: স্ট্যান্ডার্ড
চালিয়ে যান-এ ক্লিক করুন।
সর্বজনীন প্রবেশাধিকার প্রতিরোধ-এর অধীনে থাকা ‘এই বালতিতে সর্বজনীন প্রবেশাধিকার প্রতিরোধ প্রয়োগ করুন’ চেকবক্সটি আনচেক করুন ।
অ্যাক্সেস কন্ট্রোলের অধীনে ফাইন গ্রেইনড নির্বাচন করুন।
চালিয়ে যান-এ ক্লিক করুন।
আপনার বাকেটটি কনফিগার করা হয়ে গেলে, CREATE-এ ক্লিক করুন:
ব্যাস — আপনি এইমাত্র একটি ক্লাউড স্টোরেজ বাকেট তৈরি করে ফেললেন!
৪. আপনার বাকেটে একটি অবজেক্ট আপলোড করুন।
এখন একটি বাকেটে একটি অবজেক্ট আপলোড করুন।
প্রথমে, ক্লাউড শেলের একটি অস্থায়ী ইনস্ট্যান্সে এই ছবিটি ডাউনলোড করুন। নিচের উদাহরণে গুগল হোমপেজ থেকে গুগলের ছবিটি ব্যবহার করা হয়েছে।
ক্লাউড শেল থেকে
wget --output-document google.png https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
আপনি যে স্থানে ছবিটি সংরক্ষণ করেছেন সেখান থেকে আপনার তৈরি করা বাকেটে ছবিটি আপলোড করতে gsutil cp কমান্ডটি ব্যবহার করুন:
ক্লাউড শেল থেকে
gsutil cp google.png gs://YOUR-BUCKET-NAME
এখন ডাউনলোড করা ছবিটি সরিয়ে ফেলুন:
ক্লাউড শেল থেকে
rm google.png
আপনার অবজেক্টটি খুঁজুন এবং ডানদিকে থাকা তিনটি ডটে ক্লিক করে অনুমতিগুলো সম্পাদনা করে পাবলিক করে দিন।


৫. একটি লোড ব্যালেন্সার তৈরি করুন
এরপর আমরা একটি HTTP লোড ব্যালেন্সার তৈরি করব।
Networking >> Network services >> Load Balancing >> Create Load Balancer >> HTTP Load Balancer >> Internet to my VMs >> Classic HTTP(S) Load Balancer- এ যান।
প্রথমে, আপনি যে লোড ব্যালেন্সারটি তৈরি করবেন তার জন্য একটি নাম ঠিক করুন।
ব্যাকএন্ড বাকেট তৈরি করুন
আপনার সদ্য তৈরি করা বাকেটটি ব্যবহার করে একটি নতুন ব্যাকএন্ড বাকেট তৈরি করুন এবং ‘Enabled CDN’ ও ‘Cache Static Content’ নির্বাচন করুন। ‘Create’-এ ক্লিক করুন।

হোস্ট এবং পাথ নিয়ম তৈরি করুন
বাম দিকে থাকা হোস্ট এবং পাথ রুলস-এ যান। আমরা একটি সাধারণ হোস্ট/পাথ রুল ব্যবহার করব এবং যেকোনো রিকোয়েস্ট বাকেটে পাঠাব।

ফ্রন্টএন্ড কনফিগারেশন তৈরি করুন
ফ্রন্টএন্ড কনফিগারেশন নির্বাচন করুন। ফ্রন্টএন্ড কনফিগারেশনের জন্য আমরা HTTP (যদিও সার্টিফিকেট থাকলে HTTPS-ও কাজ করবে) এবং একটি ক্ষণস্থায়ী আইপি অ্যাড্রেস ব্যবহার করব এবং নিশ্চিত করুন যে আপনি প্রিমিয়াম টায়ার নেটওয়ার্কটি নির্বাচন করেছেন।

তৈরি করতে ক্লিক করুন
লোড ব্যালেন্সার আইপি পান
আপনার প্রোজেক্টের লোড ব্যালেন্সারগুলোর তালিকা থেকে লোড ব্যালেন্সারের নামের উপর ক্লিক করে কনসোল থেকে লোড ব্যালেন্সারের আইপি (IP) সংগ্রহ করুন।

লোড ব্যালেন্সারকে জিজ্ঞাসা করুন
কয়েক মিনিট পর, আপনার আপলোড করা অবজেক্টটির জন্য লোড ব্যালান্সারে কোয়েরি করার চেষ্টা করুন। এর জন্য আপনার লোড ব্যালান্সারের আইপি অ্যাড্রেস এবং ইমেজটির নাম প্রয়োজন হবে। কমান্ডটির গঠন নিম্নরূপ:
টার্মিনাল থেকে
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
আউটপুট
armanrye-macbookpro% curl -svo /dev/null http://34.98.81.123/google.png * Trying 34.98.81.123... * TCP_NODELAY set * Connected to 34.98.81.123 (34.98.81.123) port 80 (#0) > GET /google.png HTTP/1.1 > Host: YOUR_IP > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 200 OK < X-GUploader-UploadID: ADPycdtoILI76KVsvBvdVGvSfzaxys1m3zYqCepBrmJxAI48ni24cWCRIdNu-53PX3DS6iycxp6xwFbMpwtcHHZQUQmEBxAgng < Expires: Mon, 13 Dec 2021 22:58:26 GMT < Date: Mon, 13 Dec 2021 21:58:26 GMT < Cache-Control: public, max-age=3600 < Last-Modified: Mon, 13 Dec 2021 21:45:57 GMT < ETag: "8f9327db2597fa57d2f42b4a6c5a9855" < x-goog-generation: 1639431957957903 < x-goog-metageneration: 2 < x-goog-stored-content-encoding: identity < x-goog-stored-content-length: 5969 < Content-Type: image/png < x-goog-hash: crc32c=TeiHTA== < x-goog-hash: md5=j5Mn2yWX+lfS9CtKbFqYVQ== < x-goog-storage-class: STANDARD < Accept-Ranges: bytes < Content-Length: 5969 < Server: UploadServer
CDN বা লোড ব্যালেন্সিং মনিটরিং-এর মাধ্যমে যাচাই করুন যে আপনার কন্টেন্ট CDN থেকে পরিবেশিত হচ্ছে। আপনার প্রায় ১০০% হিট রেশিও পাওয়া উচিত। যদি আপনার কয়েকটি কোয়েরি চালানোর প্রয়োজন হয়, তবে আপনি নিম্নলিখিতগুলি করতে পারেন।
টার্মিনাল থেকে
#for i in `seq 1 50`; do curl http://%loadbalncer-IP%/google.png; done
ক্লাউড সিডিএন দ্বারা পরিবেশিত বিষয়বস্তু নিশ্চিত করুন
Network Services >> CDN- এ গিয়ে যাচাই করুন যে আপনি CDN থেকে ট্র্যাফিক পরিবেশন করছেন।

৬. GCS থেকে অবজেক্টটি মুছে ফেলুন
এখন যেহেতু ক্যাশেটি পূরণ হয়ে গেছে, চলুন বাকেট থেকে অবজেক্টটি ডিলিট করে দিই। এর মাধ্যমে আমরা নিশ্চিত করছি যে, পলিসিটি ব্যাকএন্ডে নয়, বরং ক্যাশেইতে প্রয়োগ করা হচ্ছে।
ক্লাউড স্টোরেজ >> %বাকেটের নাম% >> অবজেক্টস -এ যান
ছবিটি নির্বাচন করে মুছে ফেলুন।

৭. আপনার সিডিএন ক্যাশের জন্য এজ সিকিউরিটি পলিসি তৈরি করুন
নেটওয়ার্ক সিকিউরিটি >> ক্লাউড আর্মার- এ যান এবং পলিসি তৈরি করুন-এ ক্লিক করুন।
নিম্নলিখিতগুলি নির্বাচন করুন
পলিসির ধরণ: এজ নিরাপত্তা পলিসি
ডিফল্ট অ্যাকশন: প্রত্যাখ্যান



আপনার ব্যাকএন্ড বাকেটে নীতিটি প্রয়োগ করুন।
৮. এজ নিরাপত্তা নীতি যাচাই করুন
এখন যেহেতু আমরা আমাদের ব্যাক-এন্ড বাকেটের সামনে একটি এজ সিকিউরিটি পলিসি তৈরি করেছি, চলুন যাচাই করে দেখি যে এটি প্রত্যাশা অনুযায়ী কাজ করছে কিনা।
নিরাপত্তা নীতি যাচাই করুন
কয়েক মিনিট পর আপনি দেখতে পাবেন যে ক্লাউড আর্মার পলিসিটি চালু আছে। কমান্ড লাইন থেকে নিম্নলিখিত কমান্ডটি চালালে আপনি একটি 403 ত্রুটি পাবেন।
টার্মিনাল থেকে
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
আউটপুট
curl -svo /dev/null http://34.98.81.123/google.png * Trying 34.98.81.123... * TCP_NODELAY set * Connected to 34.98.81.123 (34.98.81.123) port 80 (#0) > GET /google.png HTTP/1.1 > Host: YOUR_IP > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 403 Forbidden < X-GUploader-UploadID: ADPycdtS6FtJOGIsiWYDrAAE8VFeQuNutcvbGoQe2t8EZxsuspVtmCjyiTv_P3CNktroHMOGFXkTCfG-Jj-rUO60ZGPpEbpqcw < Content-Type: application/xml; charset=UTF-8 < Content-Length: 111 < Date: Mon, 13 Dec 2021 23:09:35 GMT < Expires: Mon, 13 Dec 2021 23:09:35 GMT < Cache-Control: private, max-age=0 < Server: UploadServer <
লগগুলো তদন্ত করুন
এরপরে, প্রয়োগকৃত এজ নিরাপত্তা নীতি দেখতে আপনি লগগুলি পরীক্ষা করতে পারেন। Operations >> Logging >> Logs Explorer- এ যান।
নিচের কোডটি কোয়েরিতে প্রবেশ করান এবং রান-এ ক্লিক করুন।

resource.type:(http_load_balancer) AND jsonPayload.enforcedEdgeSecurityPolicy.name:(%SECURITY_POLICY_NAME%)
403 প্রতিক্রিয়া এবং বলবৎ নিরাপত্তা নীতিটি লক্ষ্য করুন।

নিরাপত্তা নীতি অপসারণ করুন
নিরাপত্তা নীতিটি অপসারণ করুন এবং ক্যাশে থেকে অবজেক্টটি কোয়েরি করুন।
Network Security >> Cloud Armor >> %POLICY NAME% >> targets- এ যান এবং টার্গেট বাকেটটি রিমুভ করুন।

নীতিমালা অপসারণ নিশ্চিত করুন
কয়েক মিনিট পর, স্টোরেজ বাকেটের রিসোর্সটিতে আরেকটি কার্ল (curl) পাঠান। এবার আপনি একটি 200 রেসপন্স পাবেন।
টার্মিনাল থেকে
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
আউটপুট
armanrye-macbookpro% curl -svo /dev/null http://34.98.81.123/google.png
* Trying 34.98.81.123...
* TCP_NODELAY set
* Connected to 34.98.81.123 (34.98.81.123) port 80 (#0)
> GET /google.png HTTP/1.1
> Host: YOUR_IP
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< X-GUploader-UploadID: ADPycdtI7f49P3MSuZSZ8vl6RwfwmnIDJ59EeSKp7UPvLPawdaiRHXiNWLtseQTxUxceWOvSLvpYmT3pWVkV4qeIP7M
< Date: Mon, 13 Dec 2021 23:06:46 GMT
< Last-Modified: Mon, 13 Dec 2021 21:45:57 GMT
< ETag: "8f9327db2597fa57d2f42b4a6c5a9855"
< x-goog-generation: 1639431957957903
< x-goog-metageneration: 2
< x-goog-stored-content-encoding: identity
< x-goog-stored-content-length: 5969
< Content-Type: image/png
< x-goog-hash: crc32c=TeiHTA==
< x-goog-hash: md5=j5Mn2yWX+lfS9CtKbFqYVQ==
< x-goog-storage-class: STANDARD
< Accept-Ranges: bytes
< Content-Length: 5969
< Server: UploadServer
< Age: 1621
< Cache-Control: public,max-age=3600
<
{ [775 bytes data]
* Connection #0 to host 34.98.81.123 left intact
* Closing connection 0
অভিনন্দন! আপনি ক্লাউড আর্মার এজ নিরাপত্তা নীতিমালার উপর এই ল্যাবটি সফলভাবে সম্পন্ন করেছেন।
©২০২০ গুগল এলএলসি। সর্বস্বত্ব সংরক্ষিত। গুগল এবং গুগল লোগো হলো গুগল এলএলসি-এর ট্রেডমার্ক। অন্য সকল কোম্পানি ও পণ্যের নাম তাদের সংশ্লিষ্ট কোম্পানিগুলোর ট্রেডমার্ক হতে পারে।
৯. ল্যাব পরিষ্কার করা
নেটওয়ার্ক সিকিউরিটি >> ক্লাউড আর্মার >> %পলিসির নাম% -এ যান এবং ডিলিট নির্বাচন করুন।

ক্লাউড স্টোরেজে যান, আপনার তৈরি করা বাকেটটি নির্বাচন করুন এবং ডিলিট-এ ক্লিক করুন।

Networking >> Network services >> Load Balancing-এ যান। আপনার তৈরি করা লোড ব্যালেন্সারটি নির্বাচন করুন এবং ডিলিট-এ ক্লিক করুন।

১০. অভিনন্দন!
আপনি ‘ডিফেন্ডিং এজ ক্যাশ উইথ ক্লাউড আর্মার’ কোডল্যাবটি সম্পন্ন করেছেন!
আমরা যা আলোচনা করেছি
- কীভাবে একটি ক্লাউড স্টোরেজ বাকেট এবং সংশ্লিষ্ট ক্লাউড লোড ব্যালেন্সার সেট আপ করবেন
- কীভাবে একটি ক্লাউড আর্মার এজ নিরাপত্তা নীতি তৈরি করবেন
- এজ সিকিউরিটি পলিসিটি উদ্দেশ্য অনুযায়ী কাজ করছে কিনা তা কীভাবে যাচাই করবেন।
পরবর্তী পদক্ষেপ
- কম্পিউট ইঞ্জিন রিসোর্স থেকে ক্যাশে হিট সহ একটি এজ সিকিউরিটি পলিসি সেট আপ করার চেষ্টা করুন।