ট্যাগ সহ গ্লোবাল নেটওয়ার্ক ফায়ারওয়াল নীতি, ট্যাগ সহ গ্লোবাল নেটওয়ার্ক ফায়ারওয়াল নীতি

1। পরিচিতি

নেটওয়ার্ক ফায়ারওয়াল নীতি

ফায়ারওয়াল হল একটি নিরাপদ ক্লাউড পরিবেশের জন্য মৌলিক বিল্ডিং ব্লক। পূর্বে, VPC ফায়ারওয়াল অপরিবর্তিত রেখে আমরা org এবং ফোল্ডার স্তরে ফায়ারওয়াল নীতি চালু করেছি। এই সংস্করণে, আমরা ফায়ারওয়াল নীতি কাঠামোকে VPC স্তরে প্রসারিত করতে যাচ্ছি, এবং Google ক্লাউডের সংস্থান শ্রেণিবিন্যাস জুড়ে একটি ইউনিফাইড ফায়ারওয়াল সমর্থন প্রদান করতে এবং তাদের ফায়ারওয়াল নীতি পরিচালনার ক্ষেত্রে সামঞ্জস্যপূর্ণ ব্যবহারকারীর অভিজ্ঞতা প্রদানের জন্য বর্তমান ফায়ারওয়াল নীতি সমর্থনে বেশ কিছু উন্নতি করতে যাচ্ছি। একটি নিরাপদ, নমনীয় এবং মাপযোগ্য উপায়ে নিয়ন্ত্রণ।

নেটওয়ার্ক ফায়ারওয়াল নীতি ফায়ারওয়াল নিয়মগুলির জন্য একটি ধারক হিসাবে কাজ করে। একটি নেটওয়ার্ক ফায়ারওয়াল নীতিতে সংজ্ঞায়িত নিয়মগুলি VPC নেটওয়ার্কের সাথে সম্পর্কিত না হওয়া পর্যন্ত কোথাও প্রয়োগ করা হয় না৷ প্রতিটি VPC নেটওয়ার্ক এর সাথে যুক্ত একটি নেটওয়ার্ক ফায়ারওয়াল নীতি থাকতে পারে। নেটওয়ার্ক ফায়ারওয়াল নীতিগুলি ফায়ারওয়াল নিয়মে IAM-শাসিত ট্যাগ (বা শুধু ট্যাগ) সমর্থন করে, যা বর্তমান নেটওয়ার্ক ট্যাগগুলি প্রতিস্থাপন করে এবং কাজের চাপে পরিচয় প্রদান করতে ব্যবহার করা যেতে পারে।

নেটওয়ার্ক জুড়ে একটি নেটওয়ার্ক ফায়ারওয়াল নীতি শেয়ার করা এবং IAM-শাসিত ট্যাগের সাথে একীকরণ ফায়ারওয়ালের কনফিগারেশন এবং পরিচালনাকে ব্যাপকভাবে সহজ করে।

নেটওয়ার্ক ফায়ারওয়াল নীতির প্রবর্তনের সাথে, Google ক্লাউডের ফায়ারওয়াল নীতিগুলি এখন নিম্নলিখিত উপাদানগুলি নিয়ে গঠিত:

  1. হায়ারার্কিক্যাল ফায়ারওয়াল নীতি
  2. ভিপিসি ফায়ারওয়ালের নিয়ম
  3. নেটওয়ার্ক ফায়ারওয়াল নীতি ( গ্লোবাল এবং আঞ্চলিক )

হায়ারার্কিক্যাল ফায়ারওয়াল নীতিগুলি সংস্থান এবং ফোল্ডার নোডগুলিতে সংস্থান অনুক্রমের মধ্যে সমর্থিত, যেখানে VPC ফায়ারওয়াল নিয়ম এবং নেটওয়ার্ক ফায়ারওয়াল নীতিগুলি VPC স্তরে প্রয়োগ করা হয়। VPC ফায়ারওয়াল নিয়ম এবং নেটওয়ার্ক ফায়ারওয়াল নীতিগুলির মধ্যে একটি বড় পার্থক্য হল VPC ফায়ারওয়াল নিয়মগুলি শুধুমাত্র একটি একক VPC নেটওয়ার্কে প্রয়োগ করা যেতে পারে, যেখানে নেটওয়ার্ক ফায়ারওয়াল নীতিগুলি ব্যাচ আপডেটের মতো অন্যান্য সুবিধাগুলির মধ্যে একটি একক VPC বা VPC-এর গ্রুপের সাথে সংযুক্ত হতে পারে।

অবশেষে, আমাদের কাছে অন্তর্নিহিত ফায়ারওয়াল নিয়ম রয়েছে যা প্রতিটি ভিপিসি নেটওয়ার্কের সাথে আসে:

  • একটি প্রস্থান নিয়ম যার ক্রিয়া অনুমোদিত, গন্তব্য হল 0.0.0.0/0৷
  • একটি প্রবেশের নিয়ম যার ক্রিয়া অস্বীকার করা হয়, উত্স হল 0.0.0.0/0৷

ডিফল্টরূপে, প্রয়োগের ক্রম নিম্নলিখিত চিত্রে দেখানো হয়েছে:

abae4597af782b2b.png

দয়া করে মনে রাখবেন যে VPC ফায়ারওয়াল নিয়ম এবং গ্লোবাল নেটওয়ার্ক ফায়ারওয়াল নীতির মধ্যে এনফোর্সমেন্ট অর্ডার অদলবদল করা যেতে পারে। গ্রাহকরা যেকোন সময় একটি gcloud কমান্ডের মাধ্যমে এনফোর্সমেন্ট অর্ডার নির্দিষ্ট করতে পারেন।

ট্যাগ

নেটওয়ার্ক ফায়ারওয়াল নীতির নিয়মে সংহত নতুন ট্যাগগুলি হল Google ক্লাউড সংস্থান শ্রেণিবিন্যাসের সংগঠন স্তরে সংজ্ঞায়িত মূল-মূল্য জোড়া সংস্থান৷ এই ধরনের ট্যাগে একটি IAM অ্যাক্সেস কন্ট্রোল থাকে, নাম থেকে বোঝা যায় যে ট্যাগে কে কী করতে পারে তা নির্দিষ্ট করে। IAM অনুমতি, উদাহরণস্বরূপ, কোন প্রিন্সিপাল ট্যাগগুলিতে মান নির্ধারণ করতে পারে এবং কোন প্রিন্সিপাল সম্পদগুলিতে ট্যাগ সংযুক্ত করতে পারে তা নির্দিষ্ট করার অনুমতি দেয়। একবার কোনও সংস্থানে ট্যাগ প্রয়োগ করা হলে, নেটওয়ার্ক ফায়ারওয়াল নিয়মগুলি ট্র্যাফিকের অনুমতি এবং অস্বীকার করতে এটি ব্যবহার করতে পারে।

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

ট্যাগগুলিকে নেটওয়ার্ক ট্যাগের সাথে বিভ্রান্ত করা উচিত নয়, পরেরটি হল স্ট্রিংগুলি যা কম্পিউট ইঞ্জিন উদাহরণে যোগ করা যেতে পারে; তারা দৃষ্টান্তের সাথে যুক্ত থাকে এবং দৃষ্টান্তটি বাতিল হয়ে গেলে অদৃশ্য হয়ে যায়। ভিপিসি ফায়ারওয়ালের নিয়মে নেটওয়ার্ক ট্যাগ থাকতে পারে, কিন্তু যেহেতু সেগুলিকে ক্লাউড রিসোর্স হিসেবে গণ্য করা হয় না, সেগুলি আইএএম অ্যাক্সেস নিয়ন্ত্রণের অধীন নয়।

নোট করুন যে ট্যাগ এবং IAM-শাসিত ট্যাগগুলি এই নথিতে বিনিময়যোগ্যভাবে ব্যবহার করা হচ্ছে৷

আপনি কি নির্মাণ করবেন

এই কোডল্যাবের দুটি অংশ রয়েছে - প্রথমটি একটি একক ভিপিসি নেটওয়ার্ক ব্যবহার করে নেটওয়ার্ক ফায়ারওয়াল নীতি এবং ট্যাগগুলি প্রদর্শন করে এবং দ্বিতীয়টি নীচের চিত্র অনুসারে পিয়ারড ভিপিসি নেটওয়ার্কগুলিতে ট্যাগগুলি কীভাবে ব্যবহার করতে হয় তা দেখাবে৷ সুতরাং, এই কোডল্যাবের জন্য একটি একক প্রকল্প এবং একাধিক ভিপিসি নেটওয়ার্ক তৈরি করার ক্ষমতা প্রয়োজন।

b9acf9823df8be04.jpeg

আপনি কি শিখবেন

  • কীভাবে একটি নেটওয়ার্ক ফায়ারওয়াল নীতি তৈরি করবেন
  • নেটওয়ার্ক ফায়ারওয়াল নীতির সাথে ট্যাগগুলি কীভাবে তৈরি এবং ব্যবহার করবেন
  • ভিপিসি নেটওয়ার্ক পিয়ারিং-এ ট্যাগগুলি কীভাবে ব্যবহার করবেন

আপনি কি প্রয়োজন হবে

  • গুগল ক্লাউড প্রকল্প
  • দৃষ্টান্ত স্থাপন এবং নেটওয়ার্কিং উপাদান কনফিগার করার জ্ঞান
  • ভিপিসি ফায়ারওয়াল কনফিগারেশন জ্ঞান

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. অভিনন্দন!

অভিনন্দন, আপনি ট্যাগ কনফিগারেশন সহ একটি গ্লোবাল নেটওয়ার্ক ফায়ারওয়াল নীতি সফলভাবে কনফিগার এবং যাচাই করেছেন।

,

1। পরিচিতি

নেটওয়ার্ক ফায়ারওয়াল নীতি

ফায়ারওয়াল হল একটি নিরাপদ ক্লাউড পরিবেশের জন্য মৌলিক বিল্ডিং ব্লক। পূর্বে, VPC ফায়ারওয়াল অপরিবর্তিত রেখে আমরা org এবং ফোল্ডার স্তরে ফায়ারওয়াল নীতি চালু করেছি। এই সংস্করণে, আমরা ফায়ারওয়াল নীতি কাঠামোকে VPC স্তরে প্রসারিত করতে যাচ্ছি, এবং Google ক্লাউডের সংস্থান শ্রেণিবিন্যাস জুড়ে একটি ইউনিফাইড ফায়ারওয়াল সমর্থন প্রদান করতে এবং তাদের ফায়ারওয়াল নীতি পরিচালনার ক্ষেত্রে সামঞ্জস্যপূর্ণ ব্যবহারকারীর অভিজ্ঞতা প্রদানের জন্য বর্তমান ফায়ারওয়াল নীতি সমর্থনে বেশ কিছু উন্নতি করতে যাচ্ছি। একটি নিরাপদ, নমনীয় এবং মাপযোগ্য উপায়ে নিয়ন্ত্রণ।

নেটওয়ার্ক ফায়ারওয়াল নীতি ফায়ারওয়াল নিয়মগুলির জন্য একটি ধারক হিসাবে কাজ করে। একটি নেটওয়ার্ক ফায়ারওয়াল নীতিতে সংজ্ঞায়িত নিয়মগুলি VPC নেটওয়ার্কের সাথে সম্পর্কিত না হওয়া পর্যন্ত কোথাও প্রয়োগ করা হয় না৷ প্রতিটি VPC নেটওয়ার্ক এর সাথে যুক্ত একটি নেটওয়ার্ক ফায়ারওয়াল নীতি থাকতে পারে। নেটওয়ার্ক ফায়ারওয়াল নীতিগুলি ফায়ারওয়াল নিয়মে IAM-শাসিত ট্যাগ (বা শুধু ট্যাগ) সমর্থন করে, যা বর্তমান নেটওয়ার্ক ট্যাগগুলি প্রতিস্থাপন করে এবং কাজের চাপে পরিচয় প্রদান করতে ব্যবহার করা যেতে পারে।

নেটওয়ার্ক জুড়ে একটি নেটওয়ার্ক ফায়ারওয়াল নীতি শেয়ার করা এবং IAM-শাসিত ট্যাগের সাথে একীকরণ ফায়ারওয়ালের কনফিগারেশন এবং পরিচালনাকে ব্যাপকভাবে সহজ করে।

নেটওয়ার্ক ফায়ারওয়াল নীতির প্রবর্তনের সাথে, Google ক্লাউডের ফায়ারওয়াল নীতিগুলি এখন নিম্নলিখিত উপাদানগুলি নিয়ে গঠিত:

  1. হায়ারার্কিক্যাল ফায়ারওয়াল নীতি
  2. ভিপিসি ফায়ারওয়ালের নিয়ম
  3. নেটওয়ার্ক ফায়ারওয়াল নীতি ( গ্লোবাল এবং আঞ্চলিক )

হায়ারার্কিক্যাল ফায়ারওয়াল নীতিগুলি সংস্থান এবং ফোল্ডার নোডগুলিতে সংস্থান অনুক্রমের মধ্যে সমর্থিত, যেখানে VPC ফায়ারওয়াল নিয়ম এবং নেটওয়ার্ক ফায়ারওয়াল নীতিগুলি VPC স্তরে প্রয়োগ করা হয়। VPC ফায়ারওয়াল নিয়ম এবং নেটওয়ার্ক ফায়ারওয়াল নীতিগুলির মধ্যে একটি বড় পার্থক্য হল VPC ফায়ারওয়াল নিয়মগুলি শুধুমাত্র একটি একক VPC নেটওয়ার্কে প্রয়োগ করা যেতে পারে, যেখানে নেটওয়ার্ক ফায়ারওয়াল নীতিগুলি ব্যাচ আপডেটের মতো অন্যান্য সুবিধাগুলির মধ্যে একটি একক VPC বা VPC-এর গ্রুপের সাথে সংযুক্ত হতে পারে।

অবশেষে, আমাদের কাছে অন্তর্নিহিত ফায়ারওয়াল নিয়ম রয়েছে যা প্রতিটি ভিপিসি নেটওয়ার্কের সাথে আসে:

  • একটি প্রস্থান নিয়ম যার ক্রিয়া অনুমোদিত, গন্তব্য হল 0.0.0.0/0৷
  • একটি প্রবেশের নিয়ম যার ক্রিয়া অস্বীকার করা হয়, উত্স হল 0.0.0.0/0৷

ডিফল্টরূপে, প্রয়োগের ক্রম নিম্নলিখিত চিত্রে দেখানো হয়েছে:

abae4597af782b2b.png

দয়া করে মনে রাখবেন যে VPC ফায়ারওয়াল নিয়ম এবং গ্লোবাল নেটওয়ার্ক ফায়ারওয়াল নীতির মধ্যে এনফোর্সমেন্ট অর্ডার অদলবদল করা যেতে পারে। গ্রাহকরা যেকোন সময় একটি gcloud কমান্ডের মাধ্যমে এনফোর্সমেন্ট অর্ডার নির্দিষ্ট করতে পারেন।

ট্যাগ

নেটওয়ার্ক ফায়ারওয়াল নীতির নিয়মে সংহত নতুন ট্যাগগুলি হল Google ক্লাউড সংস্থান শ্রেণিবিন্যাসের সংগঠন স্তরে সংজ্ঞায়িত মূল-মূল্য জোড়া সংস্থান৷ এই ধরনের ট্যাগে একটি IAM অ্যাক্সেস কন্ট্রোল থাকে, নাম থেকে বোঝা যায় যে ট্যাগে কে কী করতে পারে তা নির্দিষ্ট করে। IAM অনুমতি, উদাহরণস্বরূপ, কোন প্রিন্সিপাল ট্যাগগুলিতে মান নির্ধারণ করতে পারে এবং কোন প্রিন্সিপাল সম্পদগুলিতে ট্যাগ সংযুক্ত করতে পারে তা নির্দিষ্ট করার অনুমতি দেয়। একবার কোনও সংস্থানে ট্যাগ প্রয়োগ করা হলে, নেটওয়ার্ক ফায়ারওয়াল নিয়মগুলি ট্র্যাফিকের অনুমতি এবং অস্বীকার করতে এটি ব্যবহার করতে পারে।

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

ট্যাগগুলিকে নেটওয়ার্ক ট্যাগের সাথে বিভ্রান্ত করা উচিত নয়, পরেরটি হল স্ট্রিংগুলি যা কম্পিউট ইঞ্জিন উদাহরণে যোগ করা যেতে পারে; তারা দৃষ্টান্তের সাথে যুক্ত থাকে এবং দৃষ্টান্তটি বাতিল হয়ে গেলে অদৃশ্য হয়ে যায়। ভিপিসি ফায়ারওয়ালের নিয়মে নেটওয়ার্ক ট্যাগ থাকতে পারে, কিন্তু যেহেতু সেগুলিকে ক্লাউড রিসোর্স হিসেবে গণ্য করা হয় না, সেগুলি আইএএম অ্যাক্সেস নিয়ন্ত্রণের অধীন নয়।

নোট করুন যে ট্যাগ এবং IAM-শাসিত ট্যাগগুলি এই নথিতে বিনিময়যোগ্যভাবে ব্যবহার করা হচ্ছে৷

আপনি কি নির্মাণ করবেন

এই কোডল্যাবের দুটি অংশ রয়েছে - প্রথমটি একটি একক ভিপিসি নেটওয়ার্ক ব্যবহার করে নেটওয়ার্ক ফায়ারওয়াল নীতি এবং ট্যাগগুলি প্রদর্শন করে এবং দ্বিতীয়টি নীচের চিত্র অনুসারে পিয়ারড ভিপিসি নেটওয়ার্কগুলিতে ট্যাগগুলি কীভাবে ব্যবহার করতে হয় তা দেখাবে৷ সুতরাং, এই কোডল্যাবের জন্য একটি একক প্রকল্প এবং একাধিক ভিপিসি নেটওয়ার্ক তৈরি করার ক্ষমতা প্রয়োজন।

b9acf9823df8be04.jpeg

আপনি কি শিখবেন

  • কীভাবে একটি নেটওয়ার্ক ফায়ারওয়াল নীতি তৈরি করবেন
  • নেটওয়ার্ক ফায়ারওয়াল নীতির সাথে ট্যাগগুলি কীভাবে তৈরি এবং ব্যবহার করবেন
  • ভিপিসি নেটওয়ার্ক পিয়ারিং-এ ট্যাগগুলি কীভাবে ব্যবহার করবেন

আপনি কি প্রয়োজন হবে

  • গুগল ক্লাউড প্রকল্প
  • দৃষ্টান্ত স্থাপন এবং নেটওয়ার্কিং উপাদান কনফিগার করার জ্ঞান
  • ভিপিসি ফায়ারওয়াল কনফিগারেশন জ্ঞান

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. অভিনন্দন!

অভিনন্দন, আপনি ট্যাগ কনফিগারেশন সহ একটি গ্লোবাল নেটওয়ার্ক ফায়ারওয়াল নীতি সফলভাবে কনফিগার এবং যাচাই করেছেন।