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

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

আপনি যা শিখবেন
- কীভাবে একটি নেটওয়ার্ক ফায়ারওয়াল নীতি তৈরি করবেন
- নেটওয়ার্ক ফায়ারওয়াল পলিসির সাথে ট্যাগ তৈরি ও ব্যবহার করার পদ্ধতি
- VPC নেটওয়ার্ক পিয়ারিং-এ ট্যাগ কীভাবে ব্যবহার করবেন
আপনার যা যা লাগবে
- গুগল ক্লাউড প্রকল্প
- ইনস্ট্যান্স স্থাপন এবং নেটওয়ার্কিং উপাদান কনফিগার করার জ্ঞান
- VPC ফায়ারওয়াল কনফিগারেশন জ্ঞান
২. শুরু করার আগে
ভেরিয়েবল তৈরি/আপডেট করুন
এই কোডল্যাবটি ক্লাউড শেলে gcloud কনফিগারেশন বাস্তবায়নে সাহায্য করার জন্য $variables ব্যবহার করে।
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud config set project [project-id] export project_id=`gcloud config list --format="value(core.project)"` export org_id=[org] export region=us-central1 export zone=us-central1-a export prefix=fwpolicy
৩. ভিপিসি নেটওয়ার্ক ও সাবনেট তৈরি করুন
ভিপিসি নেটওয়ার্ক
fwpolicy-vpc1 তৈরি করুন:
gcloud compute networks create $prefix-vpc1 --subnet-mode=custom
সাবনেট
নির্বাচিত অঞ্চলে সংশ্লিষ্ট সাবনেটগুলি তৈরি করুন:
gcloud compute networks subnets create $prefix-vpc1-subnet \ --range=10.0.0.0/24 --network=$prefix-vpc1 --region=$region
ক্লাউড ন্যাট
fwpolicy-pc1 এর জন্য ক্লাউড রাউটার এবং ক্লাউড NAT গেটওয়ে তৈরি করুন:
gcloud compute routers create $prefix-vpc1-cr \ --region=$region --network=$prefix-vpc1 gcloud compute routers nats create $prefix-vpc1-cloudnat \ --router=$prefix-vpc1-cr --router-region=$region \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges
৪. ইনস্ট্যান্স তৈরি করুন
যদি IAP সেটআপের অংশ হিসেবে এটি এখনও সংজ্ঞায়িত করা না হয়ে থাকে, তাহলে IAP রেঞ্জগুলো থেকে ইনগ্রেস SSH ট্র্যাফিকের অনুমতি দেওয়ার জন্য একটি ফায়ারওয়াল নিয়ম তৈরি করুন:
gcloud compute firewall-rules create allow-ssh-ingress-from-iap-vpc1 \ --direction=INGRESS \ --action=allow \ --network=$prefix-vpc1 \ --rules=tcp:22 \ --source-ranges=35.235.240.0/20
fwpolicy-vpc1 ক্লায়েন্ট এবং ওয়েব-সার্ভার ইনস্ট্যান্স তৈরি করুন:
gcloud compute instances create $prefix-vpc1-www \
--subnet=$prefix-vpc1-subnet --no-address --zone $zone \
--metadata startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
# Read VM network configuration:
md_vm="http://169.254.169.254/computeMetadata/v1/instance/"
vm_hostname="$(curl $md_vm/name -H "Metadata-Flavor:Google" )"
filter="{print \$NF}"
vm_network="$(curl $md_vm/network-interfaces/0/network \
-H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
vm_zone="$(curl $md_vm/zone \
-H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
# Apache configuration:
echo "Page on $vm_hostname in network $vm_network zone $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'
gcloud compute instances create $prefix-vpc1-client \
--subnet=$prefix-vpc1-subnet --no-address --zone $zone
যেহেতু কোনো VPC ফায়ারওয়াল নিয়ম সংজ্ঞায়িত করা নেই (এই বিভাগের শুরুতে IAP কনফিগার করার সময় তৈরি করা allow SSH নিয়মটি ছাড়া), এবং ডিফল্টরূপে সমস্ত ইনগ্রেস ট্র্যাফিক প্রত্যাখ্যাত থাকে, তাই ক্লায়েন্ট ইনস্ট্যান্সগুলো সংশ্লিষ্ট ওয়েব সার্ভারগুলো অ্যাক্সেস করতে পারবে না। অনুরোধটি টাইমআউট হবে কিনা তা যাচাই করার জন্য, একটি নতুন উইন্ডো খুলুন এবং fwpolicy-vpc1-client ইনস্ট্যান্সে একটি SSH সেশন শুরু করে ওয়েব সার্ভারটি curl করার চেষ্টা করুন:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
প্রত্যাশিত আউটপুট:
curl: (28) Connection timed out after 2001 milliseconds
ঐচ্ছিকভাবে, ক্লাউড শেলের মাধ্যমে যাচাই করুন যে fwpolicy-vpc1- এর জন্য কোনো VPC ফায়ারওয়াল নিয়ম সংজ্ঞায়িত করা নেই:
gcloud compute firewall-rules list --filter="network:$prefix-vpc1"
৫. গ্লোবাল নেটওয়ার্ক ফায়ারওয়াল পলিসি
একটি গ্লোবাল নেটওয়ার্ক ফায়ারওয়াল পলিসি তৈরি করুন:
gcloud compute network-firewall-policies create \ $prefix-example --description \ "firewall-policy-description" --global
ওয়েব ট্র্যাফিক অনুমোদনের জন্য একটি নিয়ম যোগ করুন:
gcloud compute network-firewall-policies rules create 500 \
--action allow \
--description "allow-web" \
--layer4-configs tcp:80,tcp:443 \
--firewall-policy $prefix-example \
--src-ip-ranges 10.0.0.0/16 \
--global-firewall-policy --enable-logging
নেটওয়ার্ক ফায়ারওয়াল পলিসিটি বর্ণনা করুন এবং যাচাই করুন যে নিয়মটি সফলভাবে added হয়েছে:
gcloud compute network-firewall-policies describe \
$prefix-example --global
প্রত্যাশিত আউটপুট (আউটপুটের শুরুতে স্ক্রোল করুন; লক্ষ্য করুন যে অন্তর্নিহিত নিয়মগুলিও প্রদর্শিত হয়েছে):
creationTimestamp: '2022-09-23T12:46:53.677-07:00'
description: "firewall-policy-description"
fingerprint: Np1Rup09Amc=
id: '7021772628738421698'
kind: compute#firewallPolicy
name: fwpolicy-example
ruleTupleCount: 13
rules:
- action: allow
description: allow-web
direction: INGRESS
disabled: false
enableLogging: true
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcIpRanges:
- 10.0.0.0/16
priority: 500
ruleTupleCount: 5
...
নেটওয়ার্ক ফায়ারওয়াল পলিসিটি fwpolicy-vpc1 এর সাথে সংযুক্ত করুন:
gcloud compute network-firewall-policies associations create \
--firewall-policy $prefix-example \
--network $prefix-vpc1 \
--name $prefix-vpc1-association \
--global-firewall-policy
যাচাই করুন যে এটি fwpolicy-vpc1 নেটওয়ার্কে সফলভাবে প্রয়োগ করা হয়েছে:
gcloud compute networks get-effective-firewalls $prefix-vpc1
প্রত্যাশিত আউটপুট (উল্লেখ্য যে, যদি অগ্রাধিকারপ্রাপ্ত শ্রেণিবদ্ধ ফায়ারওয়াল নীতি থাকে, তবে প্রাসঙ্গিক নিয়মগুলি শীর্ষে প্রদর্শিত হবে):
TYPE FIREWALL_POLICY_NAME PRIORITY ACTION DIRECTION IP_RANGES network-firewall-policy fwpolicy-example 500 ALLOW INGRESS 10.0.0.0/16 network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
এটি fwpolicy-vpc1 ওয়েব সার্ভারেও সফলভাবে প্রয়োগ করা হয়েছে কিনা তা যাচাই করুন:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
প্রত্যাশিত আউটপুটটি পূর্ববর্তী কমান্ডের ( fwpolicy-vpc1 effective firewalls) অনুরূপ:
TYPE FIREWALL_POLICY_NAME PRIORITY ACTION DIRECTION IP_RANGES network-firewall-policy fwpolicy-example 500 ALLOW INGRESS 10.0.0.0/16 network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
vpc1-client SSH সেশনে ফিরে যান এবং আবার curl চালানোর চেষ্টা করুন (উল্লেখ্য যে, নীচের কমান্ডটি ধরে নিচ্ছে যে প্রিফিক্স হিসাবে fwpolicy ব্যবহার করা হয়েছে; যদি এর পরিবর্তে অন্য কোনো নাম ব্যবহার করা হয়ে থাকে, তবে অনুগ্রহ করে সেই অনুযায়ী curl কমান্ডটি পরিবর্তন করুন):
user@vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2 Page on vpc1-www in network vpc1 zone us-central1-a
ক্লাউড শেল থেকে যাচাই করুন যে নেটওয়ার্ক ফায়ারওয়াল পলিসিটি fwpolicy-vpc1- এ প্রয়োগ করা হয়েছে:
gcloud compute network-firewall-policies describe \ $prefix-example --global
প্রত্যাশিত আউটপুট (আউটপুটের শুরুতে যেতে উপরে স্ক্রোল করুন):
--- associations: - attachmentTarget: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/fwpolicy-vpc1 name: fwpolicy-vpc1-association ...
৬. আইএএম-শাসিত ট্যাগ
ট্যাগ হলো একটি কী-ভ্যালু পেয়ার যা কোনো অর্গানাইজেশন, ফোল্ডার বা প্রজেক্টের সাথে সংযুক্ত করা যায়। আরও বিস্তারিত জানতে ‘ট্যাগ তৈরি ও ব্যবস্থাপনা এবং প্রয়োজনীয় অনুমতিসমূহ’ দেখুন।
tagAdmin রোল আপনাকে নতুন ট্যাগ তৈরি করতে, বিদ্যমান ট্যাগ আপডেট ও ডিলিট করতে দেয়। একজন অর্গানাইজেশন অ্যাডমিনিস্ট্রেটর এই রোলটি প্রদান করতে পারেন। ক্লাউড শেল থেকে, আপনার ইউজারের জন্য tagAdmin রোলটি যোগ করতে IAM পলিসি আপডেট করুন । প্রতিটি প্রিডিফাইন্ড রোলে কোন কোন পারমিশন অন্তর্ভুক্ত আছে তা দেখতে পারমিশন রেফারেন্স পেজটি ব্যবহার করুন।
gcloud organizations add-iam-policy-binding $org_id \ --member user:[user@example.com] --role roles/resourcemanager.tagAdmin
কোন কোন ব্যবহারকারীর কাছে resourcemanager.tagAdmin রোলটি আছে তা যাচাই করতে নিচের কমান্ডটি চালান:
gcloud organizations get-iam-policy $org_id --flatten=bindings \ --filter=bindings.role:roles/resourcemanager.tagAdmin
একটি নতুন ট্যাগ কী তৈরি করুন:
gcloud resource-manager tags keys create tags-vpc1 \ --parent organizations/$org_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc1
প্রত্যাশিত আউটপুট:
Waiting for TagKey [tags-vpc1] to be created...done. createTime: '2022-09-23T20:49:01.162228Z' etag: PwvmFuHO4wK1y6c5Ut2n5w== name: tagKeys/622132302133 namespacedName: ORGANIZATION_ID/tags-vpc1 parent: organizations/ORGANIZATION_ID purpose: GCE_FIREWALL purposeData: network: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/6749205358365096383 shortName: tags-vpc1 updateTime: '2022-09-23T20:49:03.873776Z'
নতুন ট্যাগ মান তৈরি করুন:
gcloud resource-manager tags values create web-servers \ --parent=$org_id/tags-vpc1 gcloud resource-manager tags values create web-clients \ --parent=$org_id/tags-vpc1
ট্যাগ মানগুলি সফলভাবে তৈরি হয়েছে কিনা তা যাচাই করুন:
gcloud resource-manager tags values list \ --parent=$org_id/tags-vpc1
প্রত্যাশিত আউটপুট:
NAME SHORT_NAME DESCRIPTION tagValues/349564376683 web-servers tagValues/780363571446 web-clients
ট্যাগ ব্যবহার করা হচ্ছে না তা নিশ্চিত করতে ক্লাউড শেল থেকে বিদ্যমান নেটওয়ার্ক ফায়ারওয়াল পলিসি নিয়মটি বর্ণনা করুন:
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
প্রত্যাশিত আউটপুট:
---
action: allow
description: allow-web
direction: INGRESS
disabled: false
enableLogging: true
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcIpRanges:
- 10.0.0.0/16
priority: 500
ruleTupleCount: 5
ক্লাউড শেল থেকে, শুধুমাত্র vpc1-tags/web-clients ট্যাগ কী থেকে আসা ট্র্যাফিকের অনুমতি দেওয়ার জন্য নিয়মটি আপডেট করুন এবং vpc1-tags/web-servers ট্যাগ কী সহ ইনস্ট্যান্সগুলিতে নিয়মটি ইনস্টল করুন।
gcloud compute network-firewall-policies rules update 500 \
--firewall-policy $prefix-example \
--src-secure-tags $org_id/tags-vpc1/web-clients \
--target-secure-tags $org_id/tags-vpc1/web-servers \
--global-firewall-policy
ক্লাউড শেল থেকে, বিদ্যমান নেটওয়ার্ক ফায়ারওয়াল পলিসি নিয়মটি বর্ণনা করুন যাতে নিশ্চিত করা যায় যে ট্যাগগুলি সফলভাবে প্রয়োগ করা হয়েছে এবং কার্যকর (EFFECTIVE) হিসাবে রিপোর্ট করা হয়েছে:
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
প্রত্যাশিত আউটপুট:
---
action: allow
description: allow-web
direction: INGRESS
disabled: false
enableLogging: false
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcIpRanges:
- 10.0.0.0/16
srcSecureTags:
- name: tagValues/479619031616
state: EFFECTIVE
priority: 500
ruleTupleCount: 7
targetSecureTags:
- name: tagValues/230424970229
state: EFFECTIVE
ক্লাউড শেল থেকে, চলুন যাচাই করে দেখি যে নিয়মটি vpc1- এ প্রয়োগ করা হয়েছে কিনা:
gcloud compute networks get-effective-firewalls $prefix-vpc1
প্রত্যাশিত আউটপুট:
network-firewall-policy fwpolicy-example 500 ALLOW INGRESS 10.0.0.0/16 network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
যাচাই করুন যে, নেটওয়ার্ক ফায়ারওয়াল পলিসিটি এখনও VPC নেটওয়ার্কের সাথে সংযুক্ত থাকা সত্ত্বেও, ওয়েব ট্র্যাফিক অনুমোদনের নিয়মটি আর ওয়েব সার্ভারে প্রয়োগ করা হচ্ছে না, কারণ ইনস্ট্যান্সগুলিতে ট্যাগটি যোগ করা হয়নি:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
প্রত্যাশিত আউটপুট (উল্লেখ্য যে, ৫০০ প্রায়োরিটির ফায়ারওয়াল রুলটি প্রদর্শিত হয় না):
network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
নির্দিষ্ট ট্যাগ এবং ব্যবহারকারীকে ‘ট্যাগ ব্যবহারকারী’ (Tag User) ভূমিকাটি প্রদান করুন । প্রতিটি পূর্বনির্ধারিত ভূমিকাতে কোন কোন অনুমতি অন্তর্ভুক্ত রয়েছে তা দেখতে অনুমতি নির্দেশিকা পৃষ্ঠাটি ব্যবহার করুন।
gcloud resource-manager tags keys add-iam-policy-binding \ $org_id/tags-vpc1 \ --member user:[email] --role roles/resourcemanager.tagUser gcloud projects add-iam-policy-binding $project_id \ --member user:[email] --role roles/resourcemanager.tagUser
ভূমিকাটি সফলভাবে যুক্ত হয়েছে কিনা তা যাচাই করুন:
gcloud resource-manager tags keys get-iam-policy $org_id/tags-vpc1 gcloud projects get-iam-policy $project_id --flatten=bindings \ --filter=bindings.role:roles/resourcemanager.tagUser
প্রত্যাশিত আউটপুট:
bindings: - members: - user:[user] role: roles/resourcemanager.tagUser ...
fwpolicy-vpc1-www ইনস্ট্যান্সটিতে ট্যাগটি প্রয়োগ করুন:
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $org_id/tags-vpc1/web-servers \ --parent \ //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc1-www
প্রত্যাশিত আউটপুট:
Waiting for TagBinding for parent [//compute.googleapis.com/projects/PROJECT_ID/zones/us-central1-a/instances/38369703403698502] and tag value [tagValues/34 9564376683] to be created with [operations/rctb.us-central1-a.6144808968019372877]...done. done: true metadata: '@type': type.googleapis.com/google.cloud.resourcemanager.v3.CreateTagBindingMetadata name: operations/rctb.us-central1-a.6144808968019372877 response: '@type': type.googleapis.com/google.cloud.resourcemanager.v3.TagBinding name: tagBindings/%2F%2Fcompute.googleapis.com%2Fprojects%2FPROJECT_NUMBER%2Fzones%2Fus-central1-a%2Finstances%2F38369703403698502/tagValues/349564376683 parent: //compute.googleapis.com/projects/PROJECT_NUMBER/zones/us-central1-a/instances/38369703403698502 tagValue: tagValues/349564376683
বাইন্ডিংগুলো যাচাই করুন:
gcloud resource-manager tags bindings list --location $zone --effective --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc1-www
প্রত্যাশিত আউটপুট:
namespacedTagKey: ORGANIZATION_ID/tags-vpc1 namespacedTagValue: ORGANIZATION_ID/tags-vpc1/web-servers tagKey: tagKeys/622132302133 tagValue: tagValues/349564376683
কার্যকরী ফায়ারওয়াল নিয়মগুলো পুনরায় যাচাই করুন:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
প্রত্যাশিত আউটপুট:
network-firewall-policy fwpolicy-example 490 ALLOW INGRESS 10.0.0.0/16 network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
fwpolicy-vpc1-client SSH সেশন ট্যাবে ফিরে যান এবং curl করার চেষ্টা করুন:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
আপনি কি সংযোগ করতে পেরেছিলেন?
তা যাচাই করতে, ক্লাউড শেলের মাধ্যমে সোর্স CIDR ক্রাইটেরিয়াটি সরিয়ে দিয়ে নিয়মটি আপডেট করুন।
gcloud compute network-firewall-policies rules update 500 \
--firewall-policy $prefix-example \
--src-ip-ranges "" \
--global-firewall-policy
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
action: allow
description: allow-web
direction: INGRESS
disabled: false
enableLogging: false
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcSecureTags:
- name: tagValues/479619031616
state: EFFECTIVE
priority: 490
ruleTupleCount: 7
targetSecureTags:
- name: tagValues/230424970229
state: EFFECTIVE
fwpolicy-vpc1-client SSH সেশন ট্যাবে ফিরে যান এবং পুনরায় চেষ্টা করুন:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
এবার সংযোগটি টাইমআউট হয়ে যাওয়ার কথা, কারণ ট্যাগটি fwpolicy-vpc1-client- এ যোগ করা হয়নি। ক্লাউড শেল থেকে এটি যোগ করুন এবং আবার চেষ্টা করুন।
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $org_id/tags-vpc1/web-clients \ --parent \ //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc1-client
fwpolicy-vpc1-client SSH সেশন ট্যাবে ফিরে যান এবং পুনরায় চেষ্টা করুন, যা এবার সফল হওয়া উচিত।
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
৭. VPC নেটওয়ার্ক পিয়ারিং-এর উপর IAM-নিয়ন্ত্রিত ট্যাগ
ক্লাউড শেল থেকে একটি নতুন VPC, সাবনেট ও ক্লায়েন্ট তৈরি করুন এবং নেটওয়ার্কগুলোর মধ্যে VPC নেটওয়ার্ক পিয়ারিং সেটআপ করুন:
gcloud compute networks create $prefix-vpc2 --subnet-mode=custom
gcloud compute networks subnets create $prefix-vpc2-subnet \
--range=10.0.1.0/24 --network=$prefix-vpc2 --region=$region
gcloud compute instances create $prefix-vpc2-client \
--subnet=$prefix-vpc2-subnet --no-address --zone $zone
gcloud compute networks peerings create vpc1-to-vpc2 \
--network=$prefix-vpc1 \
--peer-project $project_id \
--peer-network $prefix-vpc2
gcloud compute networks peerings create vpc2-to-vpc1 \
--network=$prefix-vpc2 \
--peer-project $project_id \
--peer-network $prefix-vpc1
যদি IAP সেটআপের অংশ হিসেবে এটি এখনও সংজ্ঞায়িত করা না হয়ে থাকে, তাহলে IAP রেঞ্জগুলো থেকে ইনগ্রেস SSH ট্র্যাফিকের অনুমতি দেওয়ার জন্য একটি ফায়ারওয়াল নিয়ম তৈরি করুন:
gcloud compute firewall-rules create allow-ssh-ingress-from-iap-vpc2 \ --direction=INGRESS \ --action=allow \ --network=$prefix-vpc2 \ --rules=tcp:22 \ --source-ranges=35.235.240.0/20
যদিও ট্যাগগুলি সংস্থা-ব্যাপী অবজেক্ট, ট্যাগ কীগুলি একটি নির্দিষ্ট VPC-এর সাথে যুক্ত থাকে এবং সেই কারণে বিভিন্ন নেটওয়ার্কের ইনস্ট্যান্সগুলিতে প্রয়োগ করা যায় না। সুতরাং, vpc2-এর জন্য প্রযোজ্য একটি নতুন ট্যাগ কী এবং ভ্যালু তৈরি করা প্রয়োজন:
gcloud resource-manager tags keys create tags-vpc2 \ --parent organizations/$org_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc2 gcloud resource-manager tags values create web-clients \ --parent=$org_id/tags-vpc2
fwpolicy-vpc2-client ইনস্ট্যান্সটিতে নতুন ট্যাগটি প্রয়োগ করুন:
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $org_id/tags-vpc2/web-clients \ --parent \ //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc2-client
ঐচ্ছিকভাবে, fwpolicy-vpc2-client- এর বাইন্ডিংগুলো তালিকাভুক্ত করুন:
gcloud resource-manager tags bindings list --location $zone --effective --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc2-client
প্রত্যাশিত আউটপুট:
namespacedTagKey: ORGANIZATION_ID/tags-vpc2 namespacedTagValue: ORGANIZATION_ID/tags-vpc2/web-clients tagKey: tagKeys/916316350251 tagValue: tagValues/633150043992
ক্লাউড শেল থেকে, নতুন ট্যাগগুলি ব্যবহার করা হচ্ছে না তা নিশ্চিত করতে বিদ্যমান নেটওয়ার্ক ফায়ারওয়াল পলিসি নিয়মটি বর্ণনা করুন:
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
প্রত্যাশিত আউটপুট:
---
action: allow
description: allow-web
direction: INGRESS
disabled: false
enableLogging: true
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcSecureTags:
- name: tagValues/479619031616
state: EFFECTIVE
priority: 500
ruleTupleCount: 6
targetSecureTags:
- name: tagValues/230424970229
state: EFFECTIVE
পিয়ার্ড VPC নেটওয়ার্ক থেকে ট্যাগগুলোকে অনুমতি দেওয়ার জন্য বিদ্যমান ফায়ারওয়াল নিয়মটি আপডেট করুন:
gcloud compute network-firewall-policies rules update 500 \
--firewall-policy $prefix-example \
--src-secure-tags $org_id/tags-vpc1/web-clients,$org_id/tags-vpc2/web-clients \
--global-firewall-policy
ফায়ারওয়াল নিয়মটি সফলভাবে প্রয়োগ করা হয়েছে এবং কার্যকর হিসাবে রিপোর্ট করা হয়েছে তা নিশ্চিত করতে নিয়মটি বর্ণনা করুন:
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
প্রত্যাশিত আউটপুট:
---
action: allow
description: allow-web
direction: INGRESS
disabled: false
enableLogging: false
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcSecureTags:
- name: tagValues/479619031616
state: EFFECTIVE
- name: tagValues/633150043992
state: EFFECTIVE
priority: 500
ruleTupleCount: 7
targetSecureTags:
- name: tagValues/230424970229
state: EFFECTIVE
নিচের gcloud কমান্ডটি ব্যবহার করে fwpolicy-vpc1-www এর আইপি খুঁজে বের করুন:
gcloud compute instances list --filter=vpc1-www
SSH এর মাধ্যমে fwpolicy-vpc2-client- এ সংযোগ করুন এবং fwpolicy-vpc1- এর IP-টি curl করার চেষ্টা করুন:
user@fwpolicy-vpc2-client$ curl [fwpolicy-vpc1-www_IP] --connect-timeout 2
আপনি fwpolicy-vpc1-www সার্ভারে সংযোগ করতে সক্ষম হবেন। পরিষ্করণ ধাপগুলোর জন্য পরবর্তী বিভাগে যান।
৮. পরিষ্কার করার ধাপসমূহ
ক্লাউড শেল থেকে ইনস্ট্যান্স, ক্লাউড ন্যাট এবং ক্লাউড রাউটার মুছে ফেলুন:
gcloud -q compute instances delete $prefix-vpc2-client --zone=$zone gcloud -q compute instances delete $prefix-vpc1-client --zone=$zone gcloud -q compute instances delete $prefix-vpc1-www --zone=$zone gcloud -q compute routers nats delete $prefix-vpc1-cloudnat \ --router=$prefix-vpc1-cr --router-region=$region gcloud -q compute routers delete $prefix-vpc1-cr --region=$region
গ্লোবাল নেটওয়ার্ক ফায়ারওয়াল পলিসি এবং ট্যাগগুলি সরান:
gcloud -q resource-manager tags values delete \
$org_id/tags-vpc2/web-clients
gcloud -q resource-manager tags keys delete $org_id/tags-vpc2
gcloud -q resource-manager tags values delete \
$org_id/tags-vpc1/web-servers
gcloud -q resource-manager tags values delete \
$org_id/tags-vpc1/web-clients
gcloud -q resource-manager tags keys delete $org_id/tags-vpc1
gcloud -q compute network-firewall-policies associations delete \
--firewall-policy $prefix-example \
--name $prefix-vpc1-association \
--global-firewall-policy
gcloud -q compute network-firewall-policies delete \
$prefix-example --global
gcloud -q compute firewall-rules delete allow-ssh-ingress-from-iap-vpc1
gcloud -q compute firewall-rules delete allow-ssh-ingress-from-iap-vpc2
tagAdmin এবং tagUsers রোল পরিবর্তন করা হলে নিচের ধাপগুলো অনুসরণ করুন:
gcloud organizations remove-iam-policy-binding $org_id \ --member user:[email] --role roles/resourcemanager.tagAdmin gcloud organizations remove-iam-policy-binding $org_id \ --member user:[email] --role roles/resourcemanager.tagUser
অবশেষে, VPC নেটওয়ার্ক পিয়ারিং, সাবনেট এবং VPC নেটওয়ার্কগুলো মুছে ফেলুন:
gcloud -q compute networks peerings delete vpc1-to-vpc2 \
--network $prefix-vpc1
gcloud -q compute networks peerings delete vpc2-to-vpc1 \
--network $prefix-vpc2
gcloud -q compute networks subnets delete $prefix-vpc1-subnet \
--region $region
gcloud -q compute networks subnets delete $prefix-vpc2-subnet \
--region $region
gcloud -q compute networks delete $prefix-vpc1
gcloud -q compute networks delete $prefix-vpc2
৯. অভিনন্দন!
অভিনন্দন, আপনি ট্যাগ কনফিগারেশন সহ একটি গ্লোবাল নেটওয়ার্ক ফায়ারওয়াল পলিসি সফলভাবে কনফিগার এবং যাচাই করেছেন।