टैग के साथ ग्लोबल नेटवर्क फ़ायरवॉल की नीति

1. परिचय

नेटवर्क फ़ायरवॉल की नीतियां

फ़ायरवॉल, एक सुरक्षित क्लाउड एनवायरमेंट के लिए बुनियादी जानकारी होती है. इससे पहले, हमने संगठन और फ़ोल्डर के लेवल पर फ़ायरवॉल की नीतियां पेश की थीं. हालांकि, VPC फ़ायरवॉल में कोई बदलाव नहीं किया गया था. इस वर्शन में, हम फ़ायरवॉल नीति के स्ट्रक्चर को VPC लेवल तक बढ़ा रहे हैं. साथ ही, फ़ायरवॉल की मौजूदा नीति से जुड़ी सहायता में कई सुधार करने जा रहे हैं, ताकि Google Cloud के संसाधन की हैरारकी में यूनिफ़ाइड फ़ायरवॉल सहायता उपलब्ध कराई जा सके. साथ ही, फ़ायरवॉल नीति कंट्रोल को सुरक्षित, सुविधाजनक, और बड़े स्तर पर मैनेज करने में एक जैसा उपयोगकर्ता अनुभव दिया जा सके.

नेटवर्क फ़ायरवॉल की नीति, फ़ायरवॉल के नियमों के लिए कंटेनर के तौर पर काम करती है. नेटवर्क फ़ायरवॉल की नीति में तय किए गए नियम तब तक कहीं भी लागू नहीं होते हैं, जब तक वह नीति VPC नेटवर्क से न जुड़ी हो. हर VPC नेटवर्क के साथ, एक नेटवर्क फ़ायरवॉल नीति जुड़ी हो सकती है. नेटवर्क फ़ायरवॉल की नीतियां, फ़ायरवॉल के नियमों में IAM की मदद से चलने वाले टैग (या सिर्फ़ टैग) के साथ काम करती हैं. ये नियम मौजूदा नेटवर्क टैग की जगह ले लेते हैं. साथ ही, इनका इस्तेमाल वर्कलोड के लिए पहचान देने के लिए किया जा सकता है.

सभी नेटवर्क में नेटवर्क फ़ायरवॉल की नीति शेयर करने और IAM की मदद से मैनेज किए जाने वाले टैग के साथ इंटिग्रेशन से, फ़ायरवॉल के कॉन्फ़िगरेशन और मैनेजमेंट को बहुत आसान बनाया जा सकता है.

नेटवर्क फ़ायरवॉल की नीति पेश करते हुए, Google Cloud की फ़ायरवॉल नीतियों में अब ये कॉम्पोनेंट शामिल किए गए हैं:

  1. क्रम के हिसाब से फ़ायरवॉल की नीति
  2. VPC फ़ायरवॉल के नियम
  3. नेटवर्क फ़ायरवॉल की नीति ( ग्लोबल और रीजनल)

हैरारकी के हिसाब से फ़ायरवॉल की नीतियां, संसाधन की हैरारकी में संगठन और फ़ोल्डर नोड पर काम करती हैं, जबकि VPC फ़ायरवॉल के नियम और नेटवर्क फ़ायरवॉल की नीतियां, VPC लेवल पर लागू होती हैं. VPC फ़ायरवॉल के नियमों और नेटवर्क फ़ायरवॉल की नीतियों में एक बड़ा अंतर यह है कि VPC फ़ायरवॉल के नियम, सिर्फ़ एक VPC नेटवर्क पर लागू किए जा सकते हैं. वहीं, नेटवर्क फ़ायरवॉल की नीतियों को एक ही VPC या VPCs के ग्रुप के साथ अटैच किया जा सकता है. साथ ही, इन्हें बैच अपडेट जैसे अन्य फ़ायदों के साथ जोड़ा जा सकता है.

आखिर में, हमारे पास लागू किए गए फ़ायरवॉल नियम भी हैं, जो हर VPC नेटवर्क के साथ आते हैं:

  • इग्रेस डेटा ट्रैफ़िक का नियम जिसकी कार्रवाई की अनुमति है, डेस्टिनेशन 0.0.0.0/0 है
  • ऐसा इन्ग्रेस डेटा ट्रैफ़िक जिसकी कार्रवाई को अस्वीकार किया गया है, सोर्स 0.0.0.0/0 है

डिफ़ॉल्ट रूप से, नीति उल्लंघन ठीक करने के तरीके (एनफ़ोर्समेंट) को इस डायग्राम में दिखाया गया है:

abae4597af782b2b.png

कृपया ध्यान दें कि VPC फ़ायरवॉल के नियमों और ग्लोबल नेटवर्क फ़ायरवॉल की नीति के बीच, नीति उल्लंघन ठीक करने के तरीके (एनफ़ोर्समेंट) को बदला जा सकता है. ग्राहक gcloud के लिए कमांड की मदद से, किसी भी समय नीति उल्लंघन ठीक करने के तरीके (एनफ़ोर्समेंट) के बारे में बता सकते हैं.

टैग

नेटवर्क फ़ायरवॉल की नीति के नियमों में इंटिग्रेट किए गए नए टैग, की-वैल्यू पेयर वाले संसाधन हैं. इन्हें Google Cloud के संसाधन की हैरारकी में संगठन के लेवल पर तय किया गया है. जैसा कि नाम से ही पता चलता है, ऐसे टैग में एक IAM ऐक्सेस कंट्रोल होता है. इससे पता चलता है कि टैग में कौन क्या कर सकता है. उदाहरण के लिए, IAM अनुमतियों से यह तय किया जा सकता है कि कौनसे मुख्य खाते, टैग को वैल्यू असाइन कर सकते हैं और कौनसे मुख्य खाते, संसाधनों में टैग अटैच कर सकते हैं. किसी संसाधन पर टैग लागू करने के बाद, नेटवर्क फ़ायरवॉल के नियम, इसका इस्तेमाल ट्रैफ़िक को अनुमति देने और अस्वीकार करने के लिए कर सकते हैं.

टैग, Google Cloud के इनहेरिटेंस रिसोर्स मॉडल का पालन करते हैं. इसका मतलब है कि टैग और उनकी वैल्यू, उनके पैरंट से क्रम में पास कर दी जाती हैं. इस वजह से, टैग एक ही जगह पर बनाए जा सकते हैं और फिर उन्हें रिसॉर्स हैरारकी में मौजूद दूसरे फ़ोल्डर और प्रोजेक्ट में इस्तेमाल किया जा सकता है. टैग और ऐक्सेस से जुड़ी पाबंदियों के बारे में ज़्यादा जानने के लिए, इस पेज पर जाएं.

टैग को नेटवर्क टैग से अलग नहीं होना चाहिए. बाद वाले टैग, Compute Engine इंस्टेंस में जोड़े जा सकते हैं; ये इंस्टेंस से जुड़े होते हैं और किसी भी इंस्टेंस के बंद होने पर वे गायब हो जाते हैं. VPC फ़ायरवॉल के नियमों में नेटवर्क टैग शामिल हो सकते हैं, लेकिन इन्हें क्लाउड रिसॉर्स नहीं माना जाता है. इसलिए, इन पर IAM ऐक्सेस कंट्रोल लागू नहीं होता.

ध्यान दें कि इस दस्तावेज़ में, टैग और IAM से चलने वाले टैग को एक-दूसरे की जगह पर इस्तेमाल किया जा रहा है.

आपको क्या बनाना होगा

इस कोडलैब के दो हिस्से होते हैं - पहला कोड, एक ही VPC नेटवर्क का इस्तेमाल करके, नेटवर्क फ़ायरवॉल की नीतियों और टैग के बारे में बताता है. वहीं, दूसरे हिस्से में यह दिखाया जाता है कि पीयर किए गए VPC नेटवर्क में, टैग को नीचे दिए गए डायग्राम के हिसाब से कैसे इस्तेमाल किया जा सकता है. इसलिए, इस कोडलैब के लिए एक प्रोजेक्ट और कई VPC नेटवर्क बनाने की सुविधा ज़रूरी है.

b9acf9823df8be04.jpeg

आपको इनके बारे में जानकारी मिलेगी

  • नेटवर्क फ़ायरवॉल की नीति कैसे बनाएँ
  • नेटवर्क फ़ायरवॉल नीति के साथ टैग कैसे बनाएं और उनका इस्तेमाल कैसे करें
  • VPC नेटवर्क पीयरिंग पर टैग इस्तेमाल करने का तरीका

आपको इन चीज़ों की ज़रूरत होगी

  • Google Cloud प्रोजेक्ट
  • इंस्टेंस को डिप्लॉय करने और नेटवर्किंग कॉम्पोनेंट को कॉन्फ़िगर करने की जानकारी
  • VPC फ़ायरवॉल कॉन्फ़िगरेशन की जानकारी

2. शुरू करने से पहले

वैरिएबल बनाना/अपडेट करना

यह कोडलैब, Cloud Shell में gcloud कॉन्फ़िगरेशन लागू करने में मदद करने के लिए $variables का इस्तेमाल करता है.

Cloud Shell के अंदर, यह तरीका अपनाएं:

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. VPC नेटवर्क और सबनेट बनाएं

VPC नेटवर्क

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 के लिए Cloud राऊटर और Cloud 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. इंस्टेंस बनाएं

एक फ़ायरवॉल नियम बनाएं, जो आईएपी रेंज से इन्ग्रेस एसएसएच ट्रैफ़िक की अनुमति देता हो. अगर आईएपी सेटअप के तहत इसे अभी तक तय न किया गया हो, तो ऐसा करें:

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 फ़ायरवॉल के नियम तय नहीं किए गए हैं (इस सेक्शन की शुरुआत में आईएपी को कॉन्फ़िगर करते समय बनाए जाने वाले एसएसएच नियम के अलावा), और डिफ़ॉल्ट रूप से सभी इन्ग्रेस डेटा ट्रैफ़िक को अस्वीकार कर दिया जाता है. इस वजह से, क्लाइंट इंस्टेंस संबंधित वेब सर्वर को ऐक्सेस नहीं कर पाएंगे. यह पुष्टि करने के लिए कि अनुरोध का टाइम आउट हो जाएगा, नई विंडो खोलें और fwpolicy-vpc1-client के इंस्टेंस पर एसएसएच सेशन शुरू करें. इसके बाद, वेब सर्वर को कर्ल करने की कोशिश करें:

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

अनुमानित आउटपुट:

curl: (28) Connection timed out after 2001 milliseconds

इसके अलावा, पुष्टि करें कि Cloud Shell के ज़रिए 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-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

Cloud Shell से, पुष्टि करें कि नेटवर्क फ़ायरवॉल की नीति 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 से मैनेज किए जाने वाले टैग

टैग एक की-वैल्यू पेयर होता है, जिसे किसी संगठन, फ़ोल्डर या प्रोजेक्ट के साथ अटैच किया जा सकता है. ज़्यादा जानकारी के लिए, टैग बनाना और मैनेज करना और ज़रूरी अनुमतियां देखें.

TagAdmin की भूमिका से, आपको नए टैग बनाने, मौजूदा टैग अपडेट करने, और उन्हें मिटाने का विकल्प मिलता है. संगठन का एडमिन यह भूमिका दे सकता है. Cloud Shell से, अपने उपयोगकर्ता के लिए TagAdmin की भूमिका जोड़ने के लिए, IAM नीति को अपडेट करें. पहले से तय हर भूमिका में कौनसी अनुमतियां शामिल हैं, यह देखने के लिए अनुमतियों के रेफ़रंस पेज का इस्तेमाल करें.

gcloud organizations add-iam-policy-binding $org_id \
  --member user:[user@example.com] --role roles/resourcemanager.tagAdmin

नीचे दिया गया कमांड चलाकर पुष्टि करें कि उपयोगकर्ताओं के पासresourcemanager.tagAdmin भूमिका है या नहीं:

gcloud organizations get-iam-policy $org_id --flatten=bindings \
  --filter=bindings.role:roles/resourcemanager.tagAdmin

एक नई टैग कुंजी बनाएं:

gcloud resource-manager tags keys create tags-vpc1 \
   --parent organizations/$org_id \
   --purpose GCE_FIREWALL \
   --purpose-data network=$project_id/$prefix-vpc1

अनुमानित आउटपुट:

Waiting for TagKey [tags-vpc1] to be created...done.                                                                                                                
createTime: '2022-09-23T20:49:01.162228Z'
etag: PwvmFuHO4wK1y6c5Ut2n5w==
name: tagKeys/622132302133
namespacedName: ORGANIZATION_ID/tags-vpc1
parent: organizations/ORGANIZATION_ID
purpose: GCE_FIREWALL
purposeData:
  network: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/6749205358365096383
shortName: tags-vpc1
updateTime: '2022-09-23T20:49:03.873776Z'

टैग की नई वैल्यू बनाएं:

gcloud resource-manager tags values create web-servers \
   --parent=$org_id/tags-vpc1

gcloud resource-manager tags values create web-clients \
   --parent=$org_id/tags-vpc1

पुष्टि करें कि टैग की वैल्यू बन गई हैं:

gcloud resource-manager tags values list \
   --parent=$org_id/tags-vpc1

अनुमानित आउटपुट:

NAME                    SHORT_NAME   DESCRIPTION
tagValues/349564376683  web-servers
tagValues/780363571446  web-clients

Cloud Shell से, मौजूदा नेटवर्क फ़ायरवॉल की नीति के नियम के बारे में बताएं, ताकि यह पुष्टि की जा सके कि टैग का इस्तेमाल नहीं किया जा रहा है:

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

Cloud Shell से, सिर्फ़ vpc1-tag/web-clients टैग कुंजी से ट्रैफ़िक को अनुमति देने के लिए नियम को अपडेट करें और नियम को vpc1-tag/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

Cloud Shell से, मौजूदा नेटवर्क फ़ायरवॉल की नीति के नियम के बारे में बताएं, ताकि यह पुष्टि की जा सके कि टैग सही तरीके से लागू किए गए हैं और उन्हें इफ़ेक्ट के तौर पर रिपोर्ट किया गया है:

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

Cloud Shell से, पुष्टि करते हैं कि नियम 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

किसी टैग और उपयोगकर्ता को Tag उपयोगकर्ता की भूमिका दें. पहले से तय की गई हर भूमिका में कौनसी अनुमतियां शामिल हैं, यह देखने के लिए अनुमतियों के रेफ़रंस पेज का इस्तेमाल करें.

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 एसएसएच सेशन टैब पर वापस स्विच करें और इसे अपनी पसंद के मुताबिक बनाने की कोशिश करें:

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

क्या आप कनेक्ट कर पाए?

इसकी पुष्टि करने के लिए, नियम को अपडेट करें, ताकि Cloud Shell से सोर्स सीआईडीआर की शर्तें हटाई जा सकें.

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 एसएसएच सेशन टैब पर वापस स्विच करें और फिर से कोशिश करें:

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

इस बार कनेक्शन टाइम आउट हो जाना चाहिए, क्योंकि टैग fwpolicy-vpc1-client में नहीं जोड़ा गया था. Cloud Shell से, उसे जोड़ें और फिर से कोशिश करें.

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 एसएसएच सेशन टैब पर वापस जाएं और फिर से कोशिश करें. अब यह प्रोसेस पूरी हो जाएगी.

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

7. VPC नेटवर्क पीयरिंग पर IAM से जुड़े टैग

Cloud Shell से, एक नया VPC, सबनेट, और क्लाइंट बनाएं. साथ ही, नेटवर्क के बीच VPC नेटवर्क पीयरिंग सेटअप करें:

gcloud compute networks create $prefix-vpc2 --subnet-mode=custom 

gcloud compute networks subnets create $prefix-vpc2-subnet \
   --range=10.0.1.0/24 --network=$prefix-vpc2 --region=$region

gcloud compute instances create $prefix-vpc2-client \
   --subnet=$prefix-vpc2-subnet --no-address --zone $zone

gcloud compute networks peerings create vpc1-to-vpc2 \
   --network=$prefix-vpc1 \
   --peer-project $project_id \
   --peer-network $prefix-vpc2

gcloud compute networks peerings create vpc2-to-vpc1 \
    --network=$prefix-vpc2 \
    --peer-project $project_id \
    --peer-network $prefix-vpc1

एक फ़ायरवॉल नियम बनाएं, जो आईएपी रेंज से इन्ग्रेस एसएसएच ट्रैफ़िक की अनुमति देता हो. अगर आईएपी सेटअप के तहत इसे अभी तक तय न किया गया हो, तो ऐसा करें:

gcloud compute firewall-rules create allow-ssh-ingress-from-iap-vpc2 \
  --direction=INGRESS \
  --action=allow \
  --network=$prefix-vpc2 \
  --rules=tcp:22 \
  --source-ranges=35.235.240.0/20

टैग, पूरे संगठन के ऑब्जेक्ट होते हैं, लेकिन टैग कुंजियां किसी खास VPC से जुड़ी होती हैं. इसलिए, इन टैग को अलग-अलग नेटवर्क के इंस्टेंस पर लागू नहीं किया जा सकता. इसलिए, आपको एक नई टैग कुंजी और vpc2 पर लागू होने वाली वैल्यू बनानी होगी:

gcloud resource-manager tags keys create tags-vpc2 \
   --parent organizations/$org_id \
   --purpose GCE_FIREWALL \
   --purpose-data network=$project_id/$prefix-vpc2

gcloud resource-manager tags values create web-clients \
   --parent=$org_id/tags-vpc2

fwpolicy-vpc2-client के इंस्टेंस पर नया टैग लागू करें:

gcloud resource-manager tags bindings create \
  --location $zone \
  --tag-value $org_id/tags-vpc2/web-clients \
  --parent \
//compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc2-client

इसके अलावा, fwpolicy-vpc2-client की बाइंडिंग की सूची बनाएं:

gcloud resource-manager tags bindings list --location $zone --effective --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc2-client

अनुमानित आउटपुट:

namespacedTagKey: ORGANIZATION_ID/tags-vpc2
namespacedTagValue: ORGANIZATION_ID/tags-vpc2/web-clients
tagKey: tagKeys/916316350251
tagValue: tagValues/633150043992

Cloud Shell से, मौजूदा नेटवर्क फ़ायरवॉल की नीति के नियम के बारे में बताएं, ताकि यह पुष्टि की जा सके कि नए टैग इस्तेमाल नहीं किए जा रहे हैं:

gcloud compute network-firewall-policies rules describe 500 \
    --firewall-policy $prefix-example \
    --global-firewall-policy

अनुमानित आउटपुट:

---
action: allow
description: allow-web
direction: INGRESS
disabled: false
enableLogging: true
kind: compute#firewallPolicyRule
match:
  layer4Configs:
  - ipProtocol: tcp
    ports:
    - '80'
  - ipProtocol: tcp
    ports:
    - '443'
  srcSecureTags:
  - name: tagValues/479619031616
    state: EFFECTIVE
priority: 500
ruleTupleCount: 6
targetSecureTags:
- name: tagValues/230424970229
  state: EFFECTIVE

मिलते-जुलते VPC नेटवर्क के टैग को अनुमति देने के लिए, मौजूदा फ़ायरवॉल नियम को अपडेट करें:

gcloud compute network-firewall-policies rules update 500 \
    --firewall-policy $prefix-example \
    --src-secure-tags $org_id/tags-vpc1/web-clients,$org_id/tags-vpc2/web-clients \
    --global-firewall-policy

फ़ायरवॉल के नियम के बारे में बताएं, ताकि यह पक्का किया जा सके कि यह नियम लागू हो गया है और इसे इफ़ेक्ट के तौर पर रिपोर्ट किया गया है:

gcloud compute network-firewall-policies rules describe 500 \
    --firewall-policy $prefix-example \
    --global-firewall-policy

अनुमानित आउटपुट:

---
action: allow
description: allow-web
direction: INGRESS
disabled: false
enableLogging: false
kind: compute#firewallPolicyRule
match:
  layer4Configs:
  - ipProtocol: tcp
    ports:
    - '80'
  - ipProtocol: tcp
    ports:
    - '443'
  srcSecureTags:
  - name: tagValues/479619031616
    state: EFFECTIVE
  - name: tagValues/633150043992
    state: EFFECTIVE
priority: 500
ruleTupleCount: 7
targetSecureTags:
- name: tagValues/230424970229
  state: EFFECTIVE

नीचे gcloud कमांड की मदद से fwpolicy-vpc1-www के आईपी का पता लगाएं:

gcloud compute instances list --filter=vpc1-www

एसएसएच के ज़रिए fwpolicy-vpc2-client से कनेक्ट करें और fwpolicy-vpc1 के आईपी को छोटा करने की कोशिश करें:

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

इसके बाद, fwpolicy-vpc1-www सर्वर से कनेक्ट हो जाना चाहिए. डेटा हटाने के चरणों के बारे में जानने के लिए, अगले सेक्शन पर जाएं.

8. क्लीनअप का तरीका

Cloud Shell से, इंस्टेंस, Cloud 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. बधाई हो!

बधाई हो, आपने टैग कॉन्फ़िगरेशन वाली ग्लोबल नेटवर्क फ़ायरवॉल नीति को कॉन्फ़िगर कर लिया है और उसकी पुष्टि कर ली है.