1. परिचय
नेटवर्क फ़ायरवॉल की नीतियां
फ़ायरवॉल, एक सुरक्षित क्लाउड एनवायरमेंट के लिए बुनियादी जानकारी होती है. इससे पहले, हमने संगठन और फ़ोल्डर के लेवल पर फ़ायरवॉल की नीतियां पेश की थीं. हालांकि, VPC फ़ायरवॉल में कोई बदलाव नहीं किया गया था. इस वर्शन में, हम फ़ायरवॉल नीति के स्ट्रक्चर को VPC लेवल तक बढ़ा रहे हैं. साथ ही, फ़ायरवॉल की मौजूदा नीति से जुड़ी सहायता में कई सुधार करने जा रहे हैं, ताकि Google Cloud के संसाधन की हैरारकी में यूनिफ़ाइड फ़ायरवॉल सहायता उपलब्ध कराई जा सके. साथ ही, फ़ायरवॉल नीति कंट्रोल को सुरक्षित, सुविधाजनक, और बड़े स्तर पर मैनेज करने में एक जैसा उपयोगकर्ता अनुभव दिया जा सके.
नेटवर्क फ़ायरवॉल की नीति, फ़ायरवॉल के नियमों के लिए कंटेनर के तौर पर काम करती है. नेटवर्क फ़ायरवॉल की नीति में तय किए गए नियम तब तक कहीं भी लागू नहीं होते, जब तक वह नीति VPC नेटवर्क से न जुड़ी हो. हर VPC नेटवर्क के साथ, एक नेटवर्क फ़ायरवॉल नीति जुड़ी हो सकती है. नेटवर्क फ़ायरवॉल की नीतियां, फ़ायरवॉल के नियमों में IAM की मदद से चलने वाले टैग (या सिर्फ़ टैग) के साथ काम करती हैं. ये नियम मौजूदा नेटवर्क टैग की जगह ले लेते हैं. साथ ही, इनका इस्तेमाल वर्कलोड के लिए पहचान देने के लिए किया जा सकता है.
सभी नेटवर्क में नेटवर्क फ़ायरवॉल की नीति शेयर करने और IAM की मदद से मैनेज किए जाने वाले टैग के साथ इंटिग्रेशन से, फ़ायरवॉल के कॉन्फ़िगरेशन और मैनेजमेंट को बहुत आसान बनाया जा सकता है.
नेटवर्क फ़ायरवॉल की नीति पेश करते हुए, Google Cloud की फ़ायरवॉल नीतियों में अब ये कॉम्पोनेंट शामिल किए गए हैं:
- क्रम के हिसाब से फ़ायरवॉल की नीति
- VPC फ़ायरवॉल के नियम
- नेटवर्क फ़ायरवॉल की नीति ( ग्लोबल और रीजनल)
हैरारकी के हिसाब से फ़ायरवॉल की नीतियां, संसाधन की हैरारकी में संगठन और फ़ोल्डर नोड पर काम करती हैं, जबकि VPC फ़ायरवॉल के नियम और नेटवर्क फ़ायरवॉल की नीतियां, VPC लेवल पर लागू होती हैं. VPC फ़ायरवॉल के नियमों और नेटवर्क फ़ायरवॉल की नीतियों में एक बड़ा अंतर यह है कि VPC फ़ायरवॉल के नियम, सिर्फ़ एक VPC नेटवर्क पर लागू किए जा सकते हैं. वहीं, नेटवर्क फ़ायरवॉल की नीतियों को एक ही VPC या VPCs के ग्रुप के साथ अटैच किया जा सकता है. इसके अलावा, बैच अपडेट जैसे अन्य फ़ायदे भी मिल सकते हैं.
आखिर में, हमारे पास लागू किए गए फ़ायरवॉल नियम भी हैं, जो हर VPC नेटवर्क के साथ आते हैं:
- इग्रेस डेटा ट्रैफ़िक का नियम जिसकी कार्रवाई की अनुमति है, डेस्टिनेशन 0.0.0.0/0 है
- ऐसा इन्ग्रेस डेटा ट्रैफ़िक जिसकी कार्रवाई को अस्वीकार किया गया है, सोर्स 0.0.0.0/0 है
डिफ़ॉल्ट रूप से, नीति उल्लंघन ठीक करने के तरीके (एनफ़ोर्समेंट) को इस डायग्राम में दिखाया गया है:
कृपया ध्यान दें कि VPC फ़ायरवॉल के नियमों और ग्लोबल नेटवर्क फ़ायरवॉल की नीति के बीच, नीति उल्लंघन ठीक करने के तरीके (एनफ़ोर्समेंट) को बदला जा सकता है. ग्राहक gcloud के लिए कमांड की मदद से, किसी भी समय नीति उल्लंघन ठीक करने के तरीके (एनफ़ोर्समेंट) के बारे में बता सकते हैं.
टैग
नेटवर्क फ़ायरवॉल की नीति के नियमों में इंटिग्रेट किए गए नए टैग, की-वैल्यू पेयर वाले संसाधन हैं. इन्हें Google Cloud के संसाधन की हैरारकी में संगठन के लेवल पर तय किया गया है. जैसा कि नाम से ही पता चलता है, ऐसे टैग में एक IAM ऐक्सेस कंट्रोल होता है. इससे पता चलता है कि टैग में कौन क्या कर सकता है. उदाहरण के लिए, IAM अनुमतियों से यह तय किया जा सकता है कि कौनसे मुख्य खाते, टैग को वैल्यू असाइन कर सकते हैं और कौनसे मुख्य खाते, संसाधनों में टैग अटैच कर सकते हैं. किसी संसाधन पर टैग लागू करने के बाद, नेटवर्क फ़ायरवॉल के नियम, इसका इस्तेमाल ट्रैफ़िक को अनुमति देने और अस्वीकार करने के लिए कर सकते हैं.
टैग, Google Cloud के इनहेरिटेंस रिसोर्स मॉडल का पालन करते हैं. इसका मतलब है कि टैग और उनकी वैल्यू, उनके पैरंट से क्रम में पास कर दी जाती हैं. इस वजह से, टैग एक ही जगह पर बनाए जा सकते हैं और फिर उन्हें रिसॉर्स हैरारकी में मौजूद दूसरे फ़ोल्डर और प्रोजेक्ट में इस्तेमाल किया जा सकता है. टैग और ऐक्सेस से जुड़ी पाबंदियों के बारे में ज़्यादा जानने के लिए, इस पेज पर जाएं.
टैग को नेटवर्क टैग से अलग नहीं होना चाहिए. बाद वाले टैग, Compute Engine इंस्टेंस में जोड़े जा सकते हैं; ये इंस्टेंस से जुड़े होते हैं और किसी भी इंस्टेंस के बंद होने पर वे गायब हो जाते हैं. VPC फ़ायरवॉल के नियमों में नेटवर्क टैग शामिल हो सकते हैं, लेकिन इन्हें क्लाउड रिसॉर्स नहीं माना जाता है. इसलिए, इन पर IAM ऐक्सेस कंट्रोल लागू नहीं होता.
ध्यान दें कि इस दस्तावेज़ में, टैग और IAM से चलने वाले टैग को एक-दूसरे की जगह पर इस्तेमाल किया जा रहा है.
आपको क्या बनाना होगा
इस कोडलैब के दो हिस्से होते हैं - पहला कोड, एक ही VPC नेटवर्क का इस्तेमाल करके, नेटवर्क फ़ायरवॉल की नीतियों और टैग के बारे में बताता है. वहीं, दूसरे हिस्से में यह दिखाया जाता है कि पीयर किए गए VPC नेटवर्क में, टैग को नीचे दिए गए डायग्राम के हिसाब से कैसे इस्तेमाल किया जा सकता है. इसलिए, इस कोडलैब के लिए एक प्रोजेक्ट और कई VPC नेटवर्क बनाने की सुविधा ज़रूरी है.
आपको इनके बारे में जानकारी मिलेगी
- नेटवर्क फ़ायरवॉल की नीति कैसे बनाएँ
- नेटवर्क फ़ायरवॉल नीति के साथ टैग कैसे बनाएं और उनका इस्तेमाल कैसे करें
- 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
क्लाउड एनएटी
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-क्लाइंट एसएसएच सेशन पर वापस जाएं और फिर से कर्ल करने की कोशिश करें (ध्यान दें कि नीचे दिए गए निर्देश को लगता है कि 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 से मैनेज किए जाने वाले टैग
टैग एक की-वैल्यू पेयर होता है, जिसे किसी संगठन, फ़ोल्डर या प्रोजेक्ट के साथ अटैच किया जा सकता है. ज़्यादा जानकारी के लिए, टैग बनाना और मैनेज करना और ज़रूरी अनुमतियां देखें.
Tagएडमिन की भूमिका से, आपको नए टैग बनाने, मौजूदा टैग अपडेट करने, और उन्हें मिटाने का विकल्प मिलता है. संगठन का एडमिन यह भूमिका दे सकता है. 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. बधाई हो!
बधाई हो, आपने टैग कॉन्फ़िगरेशन वाली ग्लोबल नेटवर्क फ़ायरवॉल नीति को कॉन्फ़िगर कर लिया है और उसकी पुष्टि कर ली है.