1. ভূমিকা
নেটওয়ার্ক ফায়ারওয়াল নীতি
ফায়ারওয়াল হল একটি নিরাপদ ক্লাউড পরিবেশের জন্য মৌলিক বিল্ডিং ব্লক। পূর্বে, VPC ফায়ারওয়াল অপরিবর্তিত রেখে আমরা org এবং ফোল্ডার স্তরে ফায়ারওয়াল নীতি চালু করেছি। এই সংস্করণে, আমরা ফায়ারওয়াল নীতি কাঠামোকে VPC স্তরে প্রসারিত করতে যাচ্ছি, এবং Google ক্লাউডের সংস্থান শ্রেণিবিন্যাস জুড়ে একটি ইউনিফাইড ফায়ারওয়াল সমর্থন প্রদান করতে এবং তাদের ফায়ারওয়াল নীতি পরিচালনার ক্ষেত্রে সামঞ্জস্যপূর্ণ ব্যবহারকারীর অভিজ্ঞতা প্রদানের জন্য বর্তমান ফায়ারওয়াল নীতি সমর্থনে বেশ কিছু উন্নতি করতে যাচ্ছি। একটি নিরাপদ, নমনীয় এবং মাপযোগ্য উপায়ে নিয়ন্ত্রণ।
নেটওয়ার্ক ফায়ারওয়াল নীতি ফায়ারওয়াল নিয়মগুলির জন্য একটি ধারক হিসাবে কাজ করে। একটি নেটওয়ার্ক ফায়ারওয়াল নীতিতে সংজ্ঞায়িত নিয়মগুলি VPC নেটওয়ার্কের সাথে সম্পর্কিত না হওয়া পর্যন্ত কোথাও প্রয়োগ করা হয় না৷ প্রতিটি VPC নেটওয়ার্ক এর সাথে যুক্ত একটি নেটওয়ার্ক ফায়ারওয়াল নীতি থাকতে পারে। নেটওয়ার্ক ফায়ারওয়াল নীতিগুলি ফায়ারওয়াল নিয়মে IAM-শাসিত ট্যাগ (বা শুধু ট্যাগ) সমর্থন করে, যা বর্তমান নেটওয়ার্ক ট্যাগগুলি প্রতিস্থাপন করে এবং কাজের চাপে পরিচয় প্রদান করতে ব্যবহার করা যেতে পারে।
নেটওয়ার্ক জুড়ে একটি নেটওয়ার্ক ফায়ারওয়াল নীতি শেয়ার করা এবং IAM-শাসিত ট্যাগের সাথে একীকরণ ফায়ারওয়ালের কনফিগারেশন এবং পরিচালনাকে ব্যাপকভাবে সহজ করে।
নেটওয়ার্ক ফায়ারওয়াল নীতির প্রবর্তনের সাথে, Google ক্লাউডের ফায়ারওয়াল নীতিগুলি এখন নিম্নলিখিত উপাদানগুলি নিয়ে গঠিত:
- হায়ারার্কিক্যাল ফায়ারওয়াল নীতি
- ভিপিসি ফায়ারওয়ালের নিয়ম
- নেটওয়ার্ক ফায়ারওয়াল নীতি ( গ্লোবাল এবং আঞ্চলিক )
হায়ারার্কিক্যাল ফায়ারওয়াল নীতিগুলি সংস্থান এবং ফোল্ডার নোডগুলিতে সংস্থান অনুক্রমের মধ্যে সমর্থিত, যেখানে VPC ফায়ারওয়াল নিয়ম এবং নেটওয়ার্ক ফায়ারওয়াল নীতিগুলি VPC স্তরে প্রয়োগ করা হয়। VPC ফায়ারওয়াল নিয়ম এবং নেটওয়ার্ক ফায়ারওয়াল নীতিগুলির মধ্যে একটি বড় পার্থক্য হল VPC ফায়ারওয়াল নিয়মগুলি শুধুমাত্র একটি একক VPC নেটওয়ার্কে প্রয়োগ করা যেতে পারে, যেখানে নেটওয়ার্ক ফায়ারওয়াল নীতিগুলি ব্যাচ আপডেটের মতো অন্যান্য সুবিধাগুলির মধ্যে একটি একক VPC বা VPC-এর গ্রুপের সাথে সংযুক্ত হতে পারে।
অবশেষে, আমাদের কাছে অন্তর্নিহিত ফায়ারওয়াল নিয়ম রয়েছে যা প্রতিটি ভিপিসি নেটওয়ার্কের সাথে আসে:
- একটি প্রস্থান নিয়ম যার ক্রিয়া অনুমোদিত, গন্তব্য হল 0.0.0.0/0৷
- একটি প্রবেশের নিয়ম যার ক্রিয়া অস্বীকার করা হয়, উত্স হল 0.0.0.0/0৷
ডিফল্টরূপে, প্রয়োগের ক্রম নিম্নলিখিত চিত্রে দেখানো হয়েছে:
দয়া করে মনে রাখবেন যে VPC ফায়ারওয়াল নিয়ম এবং গ্লোবাল নেটওয়ার্ক ফায়ারওয়াল নীতির মধ্যে এনফোর্সমেন্ট অর্ডার অদলবদল করা যেতে পারে। গ্রাহকরা যেকোন সময় একটি gcloud কমান্ডের মাধ্যমে এনফোর্সমেন্ট অর্ডার নির্দিষ্ট করতে পারেন।
ট্যাগ
নেটওয়ার্ক ফায়ারওয়াল নীতির নিয়মে সংহত নতুন ট্যাগগুলি হল Google ক্লাউড সংস্থান শ্রেণিবিন্যাসের সংগঠন স্তরে সংজ্ঞায়িত মূল-মূল্য জোড়া সংস্থান৷ এই ধরনের ট্যাগে একটি IAM অ্যাক্সেস কন্ট্রোল থাকে, নাম থেকে বোঝা যায় যে ট্যাগে কে কী করতে পারে তা নির্দিষ্ট করে। IAM অনুমতি, উদাহরণস্বরূপ, কোন প্রিন্সিপাল ট্যাগগুলিতে মান নির্ধারণ করতে পারে এবং কোন প্রিন্সিপাল সম্পদগুলিতে ট্যাগ সংযুক্ত করতে পারে তা নির্দিষ্ট করার অনুমতি দেয়। একবার কোনও সংস্থানে ট্যাগ প্রয়োগ করা হলে, নেটওয়ার্ক ফায়ারওয়াল নিয়মগুলি ট্র্যাফিকের অনুমতি এবং অস্বীকার করতে এটি ব্যবহার করতে পারে।
ট্যাগগুলি Google ক্লাউডের উত্তরাধিকার সংস্থান মডেলকে মেনে চলে, যার অর্থ ট্যাগ এবং তাদের মানগুলি তাদের পিতামাতার কাছ থেকে শ্রেণিবিন্যাস জুড়ে দেওয়া হয়৷ ফলস্বরূপ, ট্যাগগুলি এক জায়গায় তৈরি করা যেতে পারে এবং তারপরে অন্যান্য ফোল্ডার এবং প্রকল্পগুলি সমস্ত রিসোর্স ক্রমানুসারে ব্যবহার করতে পারে। ট্যাগ এবং অ্যাক্সেস সীমাবদ্ধতা সম্পর্কে আরও বিশদ বিবরণের জন্য এই পৃষ্ঠাটি দেখুন।
ট্যাগগুলিকে নেটওয়ার্ক ট্যাগের সাথে বিভ্রান্ত করা উচিত নয়, পরেরটি হল স্ট্রিংগুলি যা কম্পিউট ইঞ্জিন উদাহরণে যোগ করা যেতে পারে; তারা দৃষ্টান্তের সাথে যুক্ত থাকে এবং দৃষ্টান্তটি বাতিল হয়ে গেলে অদৃশ্য হয়ে যায়। ভিপিসি ফায়ারওয়ালের নিয়মে নেটওয়ার্ক ট্যাগ থাকতে পারে, কিন্তু যেহেতু সেগুলিকে ক্লাউড রিসোর্স হিসেবে গণ্য করা হয় না, সেগুলি আইএএম অ্যাক্সেস নিয়ন্ত্রণের অধীন নয়।
নোট করুন যে ট্যাগ এবং IAM-শাসিত ট্যাগগুলি এই নথিতে বিনিময়যোগ্যভাবে ব্যবহার করা হচ্ছে৷
আপনি কি নির্মাণ করবেন
এই কোডল্যাবের দুটি অংশ রয়েছে - প্রথমটি একটি একক ভিপিসি নেটওয়ার্ক ব্যবহার করে নেটওয়ার্ক ফায়ারওয়াল নীতি এবং ট্যাগগুলি প্রদর্শন করে এবং দ্বিতীয়টি নীচের চিত্র অনুসারে পিয়ারড ভিপিসি নেটওয়ার্কগুলিতে ট্যাগগুলি কীভাবে ব্যবহার করতে হয় তা দেখাবে৷ সুতরাং, এই কোডল্যাবের জন্য একটি একক প্রকল্প এবং একাধিক ভিপিসি নেটওয়ার্ক তৈরি করার ক্ষমতা প্রয়োজন।
আপনি কি শিখবেন
- কীভাবে একটি নেটওয়ার্ক ফায়ারওয়াল নীতি তৈরি করবেন
- নেটওয়ার্ক ফায়ারওয়াল নীতির সাথে ট্যাগগুলি কীভাবে তৈরি এবং ব্যবহার করবেন
- ভিপিসি নেটওয়ার্ক পিয়ারিং-এ ট্যাগগুলি কীভাবে ব্যবহার করবেন
আপনি কি প্রয়োজন হবে
- গুগল ক্লাউড প্রকল্প
- দৃষ্টান্ত স্থাপন এবং নেটওয়ার্কিং উপাদান কনফিগার করার জ্ঞান
- ভিপিসি ফায়ারওয়াল কনফিগারেশন জ্ঞান
2. আপনি শুরু করার আগে
ভেরিয়েবল তৈরি/আপডেট করুন
এই কোডল্যাবটি ক্লাউড শেল-এ 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
3. ভিপিসি নেটওয়ার্ক এবং সাবনেট তৈরি করুন
ভিপিসি নেটওয়ার্ক
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
মেঘ NAT
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
4. দৃষ্টান্ত তৈরি করুন
একটি ফায়ারওয়াল নিয়ম তৈরি করুন যা IAP রেঞ্জ থেকে SSH ট্র্যাফিক প্রবেশের অনুমতি দেয় যদি এটি এখনও IAP সেটআপের অংশ হিসাবে সংজ্ঞায়িত করা না হয়:
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 কনফিগার করার সময় অনুমতি দেওয়া SSH নিয়ম ব্যতীত যা তৈরি করা উচিত ছিল), এবং ডিফল্টরূপে সমস্ত প্রবেশ ট্র্যাফিক অস্বীকার করা হয়, তাই ক্লায়েন্ট দৃষ্টান্তগুলি অ্যাক্সেস করতে সক্ষম হবে না সংশ্লিষ্ট ওয়েব সার্ভার। অনুরোধের সময়সীমা শেষ হবে তা যাচাই করার জন্য, একটি নতুন উইন্ডো খুলুন এবং fwpolicy-vpc1-ক্লায়েন্ট উদাহরণে একটি SSH সেশন শুরু করুন এবং ওয়েব সার্ভারটি কার্ল করার চেষ্টা করুন:
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"
5. গ্লোবাল নেটওয়ার্ক ফায়ারওয়াল নীতি
একটি বিশ্বব্যাপী নেটওয়ার্ক ফায়ারওয়াল নীতি তৈরি করুন:
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 কার্যকর ফায়ারওয়াল):
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-ক্লায়েন্ট SSH সেশনে ফিরে যান এবং আবার কার্ল করার চেষ্টা করুন (উল্লেখ্য যে নীচের কমান্ডটি অনুমান করে যে 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 ...
6. আইএএম-শাসিত ট্যাগ
একটি ট্যাগ হল একটি মূল-মূল্যের জোড়া যা একটি প্রতিষ্ঠান, ফোল্ডার বা প্রকল্পের সাথে সংযুক্ত করা যেতে পারে। আরও বিস্তারিত জানার জন্য ট্যাগ তৈরি এবং পরিচালনা এবং প্রয়োজনীয় অনুমতি দেখুন।
ট্যাগঅ্যাডমিন ভূমিকা আপনাকে নতুন ট্যাগ তৈরি করতে, আপডেট করতে এবং বিদ্যমান ট্যাগ মুছে ফেলতে দেয়। একজন প্রতিষ্ঠানের প্রশাসক এই ভূমিকা প্রদান করতে পারেন। ক্লাউড শেল থেকে, আপনার ব্যবহারকারীতে ট্যাগ অ্যাডমিন ভূমিকা যোগ করতে 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
ক্লাউড শেল থেকে, ট্যাগগুলি সফলভাবে প্রয়োগ করা হয়েছে এবং কার্যকর হিসাবে রিপোর্ট করা হয়েছে তা নিশ্চিত করতে বিদ্যমান নেটওয়ার্ক ফায়ারওয়াল নীতির নিয়ম বর্ণনা করুন:
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
প্রত্যাশিত আউটপুট (মনে রাখবেন যে অগ্রাধিকার 500 সহ ফায়ারওয়াল নিয়ম প্রদর্শিত হয় না):
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
নির্দিষ্ট ট্যাগ এবং ব্যবহারকারীকে ট্যাগ ব্যবহারকারীর ভূমিকা প্রদান করুন । প্রতিটি পূর্বনির্ধারিত ভূমিকাতে কোন অনুমতিগুলি অন্তর্ভুক্ত করা হয়েছে তা দেখতে অনুমতির রেফারেন্স পৃষ্ঠাটি ব্যবহার করুন৷
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-ক্লায়েন্ট SSH সেশন ট্যাবে ফিরে যান এবং কার্ল করার চেষ্টা করুন:
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-ক্লায়েন্ট 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-ক্লায়েন্ট SSH সেশন ট্যাবে ফিরে যান এবং আবার চেষ্টা করুন, যা এখন সফল হওয়া উচিত।
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
7. VPC নেটওয়ার্ক পিয়ারিং এর উপর IAM-শাসিত ট্যাগ
ক্লাউড শেল থেকে, একটি নতুন ভিপিসি, সাবনেট এবং ক্লায়েন্ট তৈরি করুন এবং নেটওয়ার্কগুলির মধ্যে ভিপিসি নেটওয়ার্ক পিয়ারিং সেটআপ করুন:
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 রেঞ্জ থেকে SSH ট্র্যাফিক প্রবেশের অনুমতি দেয় যদি এটি এখনও IAP সেটআপের অংশ হিসাবে সংজ্ঞায়িত করা না হয়:
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-ক্লায়েন্ট উদাহরণে নতুন ট্যাগ প্রয়োগ করুন:
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-ক্লায়েন্টের বাইন্ডিং তালিকা করুন:
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
পিয়ারড ভিপিসি নেটওয়ার্ক থেকে ট্যাগগুলিকে অনুমতি দিতে বিদ্যমান ফায়ারওয়াল নিয়ম আপডেট করুন:
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-ক্লায়েন্টের সাথে সংযোগ করুন এবং fwpolicy-vpc1 এর আইপি কার্ল করার চেষ্টা করুন:
user@fwpolicy-vpc2-client$ curl [fwpolicy-vpc1-www_IP] --connect-timeout 2
আপনি fwpolicy-vpc1-www সার্ভারের সাথে সংযোগ করতে সক্ষম হবেন। পরিষ্কার করার পদক্ষেপের জন্য পরবর্তী বিভাগে যান।
8. পরিচ্ছন্নতার পদক্ষেপ
ক্লাউড শেল থেকে, দৃষ্টান্তগুলি, ক্লাউড ন্যাট এবং ক্লাউড রাউটার সরান:
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
ট্যাগঅ্যাডমিন এবং ট্যাগ ব্যবহারকারীর ভূমিকা পরিবর্তন করা হলে নীচের পদক্ষেপগুলি সম্পাদন করুন:
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
9. অভিনন্দন!
অভিনন্দন, আপনি ট্যাগ কনফিগারেশন সহ একটি গ্লোবাল নেটওয়ার্ক ফায়ারওয়াল নীতি সফলভাবে কনফিগার এবং যাচাই করেছেন।