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

1. ভূমিকা

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

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

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

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

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

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

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

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

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

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

abae4597af782b2b.png

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

ট্যাগ

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

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

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

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

তুমি কী তৈরি করবে

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

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

৩. ভিপিসি নেটওয়ার্ক এবং সাবনেট তৈরি করুন

ভিপিসি নেটওয়ার্ক

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

৪. ইনস্ট্যান্স তৈরি করুন

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 সেশন শুরু করুন এবং ওয়েব সার্ভারটি কার্ল করার চেষ্টা করুন:

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 কার্যকর ফায়ারওয়াল):

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 সেশনে ফিরে যান এবং আবার কার্ল করার চেষ্টা করুন (মনে রাখবেন যে নীচের কমান্ডটি ধরে নিয়েছে যে 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
...

৬. আইএএম-শাসিত ট্যাগ

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

ট্যাগঅ্যাডমিন ভূমিকা আপনাকে নতুন ট্যাগ তৈরি করতে, বিদ্যমান ট্যাগগুলি আপডেট করতে এবং মুছে ফেলতে দেয়। একজন প্রতিষ্ঠান প্রশাসক এই ভূমিকাটি মঞ্জুর করতে পারেন। ক্লাউড শেল থেকে, আপনার ব্যবহারকারীর সাথে ট্যাগঅ্যাডমিন ভূমিকা যোগ করতে 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-client SSH সেশন ট্যাবে ফিরে যান এবং কার্ল করার চেষ্টা করুন:

user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2

তুমি কি সংযোগ করতে পেরেছো?

এটি যাচাই করতে, ক্লাউড শেলের মাধ্যমে সোর্স সিআইডিআর মানদণ্ডটি সরাতে নিয়মটি আপডেট করুন।

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

৭. ভিপিসি নেটওয়ার্ক পিয়ারিংয়ের মাধ্যমে আইএএম-শাসিত ট্যাগ

ক্লাউড শেল থেকে, একটি নতুন ভিপিসি, সাবনেট এবং ক্লায়েন্ট তৈরি করুন এবং নেটওয়ার্কগুলির মধ্যে ভিপিসি নেটওয়ার্ক পিয়ারিং সেটআপ করুন:

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

যদিও ট্যাগগুলি org-ওয়াইড অবজেক্ট, ট্যাগ কীগুলি একটি নির্দিষ্ট 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 এর IP খুঁজে বের করুন:

gcloud compute instances list --filter=vpc1-www

SSH এর মাধ্যমে fwpolicy-vpc2-client এর সাথে সংযোগ করুন এবং fwpolicy-vpc1 এর IP কার্ল করার চেষ্টা করুন:

user@fwpolicy-vpc2-client$ curl [fwpolicy-vpc1-www_IP] --connect-timeout 2

তুমি fwpolicy-vpc1-www সার্ভারের সাথে সংযোগ করতে সক্ষম হবে। পরিষ্কারের ধাপগুলির জন্য পরবর্তী বিভাগে যান।

৮. পরিষ্কারের ধাপ

ক্লাউড শেল থেকে, ইনস্ট্যান্স, ক্লাউড NAT এবং ক্লাউড রাউটারটি সরিয়ে ফেলুন:

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

9. অভিনন্দন!

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