आईएएम के कंट्रोल वाले टैग के साथ फ़ायरवॉल की क्रमबद्ध नीति

1. परिचय

Cloud Next Generation Firewall (NGFW)

Cloud Next Generation Firewall, पूरी तरह से डिस्ट्रिब्यूट की गई फ़ायरवॉल सेवा है. इसमें सुरक्षा से जुड़ी बेहतर सुविधाएं, माइक्रो-सेगमेंटेशन, और हर जगह कवरेज की सुविधा मिलती है. इससे Google Cloud के वर्कलोड को अंदरूनी और बाहरी हमलों से सुरक्षित रखा जा सकता है.

Cloud NGFW के ये फ़ायदे हैं:

  • डिस्ट्रिब्यूट की गई फ़ायरवॉल सेवा: Cloud NGFW, हर वर्कलोड पर स्टेटफ़ुल और पूरी तरह से डिस्ट्रिब्यूट की गई होस्ट-आधारित सुरक्षा लागू करता है, ताकि ज़ीरो-ट्रस्ट सुरक्षा आर्किटेक्चर को चालू किया जा सके.
  • आसान कॉन्फ़िगरेशन और डिप्लॉयमेंट: Cloud NGFW, नेटवर्क और क्रमबद्ध फ़ायरवॉल नीतियां लागू करता है. इन्हें संसाधन के क्रमबद्ध नोड से जोड़ा जा सकता है. इन नीतियों की मदद से, Google Cloud संसाधन के पूरे क्रम में फ़ायरवॉल की एक जैसी सुविधा मिलती है.
  • ज़्यादा कंट्रोल और माइक्रो-सेगमेंटेशन: फ़ायरवॉल की नीतियों और Identity and Access Management (IAM) के तहत मैनेज किए गए टैग का इस्तेमाल करके, नॉर्थ-साउथ और ईस्ट-वेस्ट, दोनों तरह के ट्रैफ़िक को बेहतर तरीके से कंट्रोल किया जा सकता है. साथ ही, वर्चुअल प्राइवेट क्लाउड (वीपीसी) नेटवर्क में मौजूद किसी एक वीएम को भी कंट्रोल किया जा सकता है.

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

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

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

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

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

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

इस लैब में, हम हैरारिकल फ़ायरवॉल नीति और ग्लोबल नेटवर्क फ़ायरवॉल नीति को टेस्ट करेंगे.

आखिर में, हमारे पास इंप्लाइड फ़ायरवॉल के नियम भी हैं. ये हर वीपीसी नेटवर्क के साथ आते हैं:

  • ऐसा इग्रेस नियम जिसकी कार्रवाई की अनुमति है और डेस्टिनेशन 0.0.0.0/0 है
  • इनग्रेस का ऐसा नियम जिसमें कार्रवाई के तौर पर अनुमति नहीं दी गई है और सोर्स 0.0.0.0/0 है

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

86df8f0d19c64e80.png

IAM के तहत मैनेज किए जाने वाले टैग

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

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

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

2. आपको क्या सीखने को मिलेगा

  • Cloud NGFW और ग्लोबल स्कोप के साथ इस्तेमाल करने के लिए, IAM के कंट्रोल वाले टैग बनाने का तरीका.
  • वीएम में टैग अटैच करने का तरीका.
  • हैरारिकल फ़ायरवॉल नीति बनाने और उसे किसी फ़ोल्डर से जोड़ने का तरीका.
  • हैरारकी वाली फ़ायरवॉल नीति में फ़ायरवॉल का नियम बनाने और IAM के तहत आने वाले टैग का इस्तेमाल करके सोर्स और टारगेट तय करने का तरीका.

3. लैब का पूरा आर्किटेक्चर

1bfe78ad755496e5.png

संगठन और फ़ोल्डर:

  • आपके संगठन के लिए, सीधे तौर पर दो फ़ोल्डर, folder1 और folder2 बनाए जाएंगे.

प्रोजेक्ट:

  • folder1 में, आपको होस्ट प्रोजेक्ट बनाना होगा. इस प्रोजेक्ट में शेयर किया गया वीपीसी नेटवर्क होगा.
  • folder2 में, आपको सेवा प्रोजेक्ट बनाना होगा. इस प्रोजेक्ट में वे वीएम शामिल होंगे जो शेयर किए गए वीपीसी का इस्तेमाल करते हैं.

नेटवर्किंग:

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

IAM के तहत मैनेज किए जाने वाले टैग:

  • संगठन के लेवल पर, IAM के कंट्रोल वाला http_tags नाम का टैग बनाया जाएगा. इसकी दो वैल्यू होंगी, जिनके नाम http_server और http_client होंगे. इन टैग/वैल्यू का इस्तेमाल, वीएम की पहचान करने और उन पर फ़ायरवॉल के नियम लागू करने के लिए किया जाएगा.

फ़ायरवॉल की नीतियां:

  • folder1 से जुड़ी क्रमिक फ़ायरवॉल नीति बनाई जाएगी. इस नीति का कोई नियम, IAM के तहत मैनेज किए गए टैग का इस्तेमाल करेगा. इससे पोर्ट 80 पर, http-client से http-server तक ट्रैफ़िक की अनुमति दी जा सकेगी.
  • होस्ट प्रोजेक्ट में एक नेटवर्क फ़ायरवॉल नीति बनाई जाएगी और उसे mynet वीपीसी से जोड़ा जाएगा. इस नीति में एक नियम शामिल होगा. इसके तहत, आईएपी एसएसएच को टेस्टिंग के लिए वीएम का ऐक्सेस दिया जाएगा.

4. तैयारी के चरण

सबसे पहले, अपने Google Cloud संगठन में ज़रूरी IAM भूमिकाएं, नेटवर्क इंफ़्रास्ट्रक्चर, और इंस्टेंस सेट अप करें.

लैब पर काम करने के लिए ज़रूरी IAM भूमिकाएं

हम संगठन के लेवल पर, GCP खाते को ज़रूरी IAM भूमिकाएं असाइन करने से शुरुआत करते हैं.

  • संगठन का एडमिन (roles/resourcemanager.organizationAdmin) इस भूमिका की मदद से, IAM नीतियां मैनेज की जा सकती हैं. साथ ही, संगठनों, फ़ोल्डर, और प्रोजेक्ट के लिए संगठन की नीतियां देखी जा सकती हैं.
  • टैग एडमिन(roles/resourcemanager.tagAdmin) इस भूमिका के तहत, सुरक्षित टैग बनाए, अपडेट किए, और मिटाए जा सकते हैं.
  • टैग उपयोगकर्ता की भूमिका (roles/resourcemanager.tagUser) इस भूमिका की मदद से, सुरक्षित टैग की सूची को ऐक्सेस किया जा सकता है. साथ ही, संसाधनों के साथ उनके असोसिएशन मैनेज किए जा सकते हैं.
  • Compute Engine के संगठन के लिए फ़ायरवॉल की नीति के एडमिन की भूमिका (roles/compute.orgFirewallPolicyAdmin) इस भूमिका से, आपको Compute Engine के संगठन के लिए फ़ायरवॉल की नीतियों पर पूरा कंट्रोल मिलता है.
  • Compute Organization Resource Admin role (roles/compute.orgSecurityResourceAdmin) इस भूमिका से, आपको संगठन या फ़ोल्डर के लिए Compute Engine फ़ायरवॉल नीति के असोसिएशन को पूरी तरह से कंट्रोल करने की सुविधा मिलती है.
  • कंप्यूट नेटवर्क एडमिन (roles/compute.networkAdmin) इस भूमिका से, आपको Compute Engine के नेटवर्किंग संसाधनों का पूरा कंट्रोल मिलता है.
  • Compute Instance Admin( beta ) (roles/compute.instanceAdmin) इस भूमिका से, आपको Compute Engine इंस्टेंस संसाधनों का पूरा कंट्रोल मिलता है.
  • लॉगिंग एडमिन (roles/logging.admin) इस भूमिका से, आपको लॉगिंग से जुड़ी सभी अनुमतियों और उनसे जुड़ी अनुमतियों का ऐक्सेस मिलता है.
  • सेवा खाते का एडमिन (roles/iam.serviceAccountAdmin) इस भूमिका की मदद से, सेवा खाते बनाए और मैनेज किए जा सकते हैं.
  • सेवा के इस्तेमाल का एडमिन (roles/serviceusage.serviceUsageAdmin) इस भूमिका से, आपको सेवा की स्थितियां चालू और बंद करने के साथ-साथ उनकी जांच करने की सुविधा मिलती है. साथ ही, आपको कार्रवाइयों की जांच करने और उपभोक्ता प्रोजेक्ट के लिए कोटा और बिलिंग का इस्तेमाल करने की सुविधा मिलती है.
  • Compute Shared VPC Admin (roles/compute.xpnAdmin) इस भूमिका की मदद से, शेयर किए गए वीपीसी नेटवर्क (एक्सपीएन) को मैनेज किया जा सकता है.

फ़ोल्डर और प्रोजेक्ट बनाना

folder1 और folder2 बनाने के लिए, Cloud Shell में यह तरीका अपनाएं:

gcloud auth login

export org_id=$(gcloud organizations list --format='value(ID)')
export BILLING_ACCOUNT_ID=$(gcloud billing accounts list --format='value(ACCOUNT_ID)')
export folder1=[FOLDER1 NAME]
export folder2=[FOLDER2 NAME]
export hostproject=[HOST PROJECT NAME]
export serviceproject=[SERVICE PROJECT NAME]
export regionname=[REGION NAME]
export zonename=[COMPUTE ZONE NAME]

gcloud resource-manager folders create --display-name=$folder1 --organization=$org_id
export folder1_id=$(gcloud resource-manager folders list --organization=$org_id --filter="displayName=$folder1" --format="value(ID)")
gcloud resource-manager folders create --display-name=$folder2 --organization=$org_id
export folder2_id=$(gcloud resource-manager folders list --organization=$org_id --filter="displayName=$folder2" --format="value(ID)")

folder1 में होस्ट प्रोजेक्ट बनाने के लिए, Cloud Shell में यह तरीका अपनाएं:

gcloud projects create  --name=$hostproject --folder=$folder1_id

आपको यह जानकारी दिखेगी. नए प्रोजेक्ट आईडी के साथ प्रोजेक्ट बनाने के लिए, Y दबाएं.

No project ID provided.

Use [NEW-PROJECT-ID] as project ID (Y/n)?

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

export hostproject_id=[HOSTPROJECT ID]

होस्ट प्रोजेक्ट को बिलिंग खाते से लिंक करने के लिए, Cloud Shell में यह तरीका अपनाएं:

gcloud billing projects link $hostproject_id \
--billing-account=$BILLING_ACCOUNT_ID

folder2 में सर्विस प्रोजेक्ट बनाने के लिए, Cloud Shell में जाकर यह तरीका अपनाएं:

gcloud projects create  --name=$serviceproject --folder=$folder2_id

आपको यह जानकारी दिखेगी. नए प्रोजेक्ट आईडी के साथ प्रोजेक्ट बनाने के लिए, Y दबाएं.

No project ID provided.

Use [NEW-PROJECT-ID] as project ID (Y/n)?

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

export serviceproject_id=[SERVICEPROJECT ID]

सेवा प्रोजेक्ट को बिलिंग खाते से लिंक करने के लिए, Cloud Shell में यह तरीका अपनाएं:

gcloud billing projects link $serviceproject_id \
--billing-account=$BILLING_ACCOUNT_ID

IAM के तहत मैनेज किए जाने वाले टैग बनाना

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

हम संगठन के लेवल पर एक टैग बनाते हैं, http-tags. इस टैग का इस्तेमाल Cloud NGFW के लिए किया जाता है. हम स्कोप को किसी एक नेटवर्क तक सीमित नहीं करते. टैग का स्कोप ग्लोबल होता है. इसके बाद, हम folder2 में मौजूद सेवा प्रोजेक्ट में बनाए गए वीएम पर टैग लागू करेंगे.

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

gcloud resource-manager tags keys create http_tags \
    --parent=organizations/$org_id \
    --purpose GCE_FIREWALL \
    --purpose-data organization=auto

हम वीएम बनाते समय, टैग कुंजी आईडी का इस्तेमाल करके वीएम को एनोटेट करेंगे. टैग की आईडी पाने के लिए, Cloud Shell में यह कार्रवाई करें:

export http_tags_id=$(gcloud resource-manager tags keys describe $org_id/http_tags --format="value(name)")
echo $http_tags_id

Cloud Shell में, दो नई टैग वैल्यू http_server और http_client बनाने के लिए, यह तरीका अपनाएं:

 gcloud resource-manager tags values create http_server \
      --parent $org_id/http_tags
 gcloud resource-manager tags values create http_client \
      --parent $org_id/http_tags

हम वीएम बनाते समय, टैग आईडी और टैग वैल्यू आईडी का इस्तेमाल करेंगे. http_server और http_client के टैग वैल्यू आईडी पाने के लिए, Cloud Shell में यह तरीका अपनाएं:

export http_tags_http_server_id=$(gcloud resource-manager tags values describe $org_id/http_tags/http_server --format="value(name)")
echo $http_tags_http_server_id

export http_tags_http_client_id=$(gcloud resource-manager tags values describe $org_id/http_tags/http_client --format="value(name)")
echo $http_tags_http_client_id

होस्ट प्रोजेक्ट और सेवा प्रोजेक्ट में एपीआई चालू करना

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

gcloud services enable compute.googleapis.com --project=$serviceproject_id
gcloud services enable compute.googleapis.com --project=$hostproject_id

होस्ट प्रोजेक्ट में वीपीसी बनाना

होस्ट प्रोजेक्ट में, कस्टम सबनेट मोड वाला वीपीसी नेटवर्क बनाएं. इसके बाद, Cloud Shell में यह कार्रवाई करें:

gcloud compute networks create mynet \
    --subnet-mode=custom \
    --project=$hostproject_id

होस्ट प्रोजेक्ट में सबनेट बनाना

Cloud Shell में, IPv4 सबनेट बनाने के लिए यह तरीका अपनाएं:

gcloud compute networks subnets create mysubnet \
    --network=mynet \
    --range=10.0.0.0/28 \
    --region=$regionname \
    --project=$hostproject_id

होस्ट प्रोजेक्ट में शेयर किया गया वीपीसी चालू करना

होस्ट प्रोजेक्ट में शेयर किए गए वीपीसी को चालू करने के लिए, Cloud Shell में यह तरीका अपनाएं:

gcloud compute shared-vpc enable $hostproject_id

होस्ट प्रोजेक्ट में शेयर किए गए वीपीसी के लिए, सेवा से जुड़ा प्रोजेक्ट अटैच करना

होस्ट प्रोजेक्ट में शेयर किए गए वीपीसी के लिए, सेवा प्रोजेक्ट अटैच करने के लिए Cloud Shell में यह तरीका अपनाएं:

gcloud compute shared-vpc associated-projects add $serviceproject_id --host-project=$hostproject_id 

होस्ट प्रोजेक्ट में Cloud Router और Cloud NAT बनाना

Cloud NAT का इस्तेमाल, वीएम के लिए इंटरनेट इग्रेस की अनुमति देने के लिए किया जाता है, ताकि वे ऐप्लिकेशन डाउनलोड और इंस्टॉल कर सकें.

gcloud compute routers create $regionname-cr \
   --network=mynet \
   --region=$regionname \
   --project=$hostproject_id
gcloud compute routers nats create $regionname-nat \
    --router=$regionname-cr \
    --region=$regionname \
    --nat-all-subnet-ip-ranges \
    --auto-allocate-nat-external-ips \
    --project=$hostproject_id

सेवा प्रोजेक्ट में इंस्टेंस बनाना

सेवा से जुड़े प्रोजेक्ट में, होस्ट प्रोजेक्ट में शेयर किए गए वीपीसी में बनाए गए सबनेट में दो इंस्टेंस बनाएं. एक इंस्टेंस का नाम http-server है और हम http-server के टैग को http_server की वैल्यू के साथ एनोटेट करते हैं.http_tags दूसरे इंस्टेंस का नाम http-client है. हम http_tags के टैग को http_client की वैल्यू के साथ एनोटेट करते हैं. Cloud Shell में ये कमांड चलाएं:

gcloud compute instances create http-client \
    --project=$serviceproject_id \
   --subnet=projects/$hostproject_id/regions/$regionname/subnetworks/mysubnet \
    --zone=$zonename \
    --no-address \
    --resource-manager-tags=$http_tags_id=$http_tags_http_client_id

gcloud compute instances create http-server \
    --project=$serviceproject_id \
    --subnet=projects/$hostproject_id/regions/$regionname/subnetworks/mysubnet \
    --zone=$zonename \
    --no-address \
    --resource-manager-tags=$http_tags_id=$http_tags_http_server_id \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    a2enmod ssl
    sudo a2ensite default-ssl
    echo "I am a Http Server." | \
    tee /var/www/html/index.html
    systemctl restart apache2'

http-server के इंटरनल आईपी को नोट करें. हम इसका इस्तेमाल फ़ायरवॉल के नियम की जांच के अगले चरण में करेंगे.

export http_server_ip=$(gcloud compute instances describe http-server --zone $zonename --format='value(networkInterfaces[0].networkIP)' --project $serviceproject_id)
echo $http_server_ip

5. होस्ट प्रोजेक्ट में ग्लोबल नेटवर्क फ़ायरवॉल नीति बनाना

हम होस्ट प्रोजेक्ट में एक ग्लोबल नेटवर्क फ़ायरवॉल नीति बनाएंगे और उसे होस्ट प्रोजेक्ट में शेयर किए गए वीपीसी से जोड़ेंगे.

gcloud config set project $hostproject_id
gcloud compute network-firewall-policies create  mynet-fw-policy \
--global \
--project=$hostproject_id
gcloud compute network-firewall-policies associations create \
    --firewall-policy=mynet-fw-policy \
    --network=mynet \
    --name=mynet-fw-policy \
    --global-firewall-policy \
    --project=$hostproject_id

आईएपी को अपने वीएम इंस्टेंस से कनेक्ट करने की अनुमति देने के लिए, नेटवर्क फ़ायरवॉल की नीति में फ़ायरवॉल का नियम बनाएं:

  • यह उन सभी वीएम इंस्टेंस पर लागू होता है जिन्हें आपको आईएपी का इस्तेमाल करके ऐक्सेस करना है.
  • इसकी मदद से, 35.235.240.0/20 आईपी रेंज से इन्ग्रेस ट्रैफ़िक को आने की अनुमति मिलती है. इस रेंज में वे सभी आईपी पते शामिल हैं जिनका इस्तेमाल IAP, टीसीपी फ़ॉरवर्डिंग के लिए करता है.
gcloud compute network-firewall-policies rules create 1000 \
    --action=ALLOW \
    --firewall-policy=mynet-fw-policy \
    --description="mynet-allow-iap" \
    --direction=INGRESS \
    --src-ip-ranges=35.235.240.0/20 \
    --layer4-configs=tcp:22  \
    --global-firewall-policy \
    --project=$hostproject_id

कंसोल में, होस्ट प्रोजेक्ट पर जाएं. इसके बाद, फ़ायरवॉल नीति में जाकर, नई बनाई गई ग्लोबल नेटवर्क फ़ायरवॉल नीति ढूंढें. नेटवर्क फ़ायरवॉल की नीति में, नया फ़ायरवॉल नियम देखा जा सकता है. यहां कंसोल का लिंक दिया गया है. कृपया पक्का करें कि आपने कंसोल में प्रोजेक्ट पिकर को होस्ट प्रोजेक्ट पर सेट किया हो.

6. http-client वीएम से http-server वीएम तक ऐक्सेस की जांच करना

http-client नाम की वीएम से एसएसएच करें और जांच करें कि क्या यह एचटीटीपी 80 पोर्ट पर http-server को ऐक्सेस कर सकता है.

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

gcloud compute ssh \
    --zone=$zonename "http-client" \
    --tunnel-through-iap \
    --project=$serviceproject_id

वेब सर्वर को ऐक्सेस करने के लिए, curl का इस्तेमाल करें.

curl -m 10 [http_server_ip]

आपको कर्ल कमांड का नतीजा दिखेगा. http-server के लिए, पोर्ट 80 को अनुमति देने वाला कोई इन्ग्रेस फ़ायरवॉल नियम नहीं है.

कनेक्शन का समय 10,000 मिलीसेकंड के बाद खत्म हो गया.

एसएसएच सेशन से बाहर निकलकर, Cloud Shell पर वापस जाएं.

exit

7. हैरारकी वाली फ़ायरवॉल नीति और फ़ायरवॉल के नियम बनाना

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

हैरारकी वाली फ़ायरवॉल नीति बनाना

gcloud compute firewall-policies create \
  --folder=$folder1_id \
  --short-name=my-folder1-fw-policy

हैरारकी वाली फ़ायरवॉल नीति में फ़ायरवॉल का नियम बनाना

इस नियम के तहत, http_tags/http_client टैग वैल्यू वाले वीएम, टीसीपी पोर्ट 80 पर http_tags/http_server टैग वैल्यू वाले वीएम को ऐक्सेस कर सकते हैं.

gcloud compute firewall-policies rules create 100 \
  --organization=$org_id \
  --firewall-policy my-folder1-fw-policy \
  --direction=INGRESS \
  --layer4-configs=tcp:80 \
  --action=allow \
  --src-secure-tags=$org_id/http_tags/http_client \
  --target-secure-tags=$org_id/http_tags/http_server \
  --description=folder1-allow-http

फ़ोल्डर1 से हैरारकी वाली फ़ायरवॉल नीति को जोड़ना

gcloud compute firewall-policies associations create \
   --firewall-policy=my-folder1-fw-policy \
   --folder=$folder1_id \
   --name=my-folder1-fw-policy\
   --organization=$org_id

कंसोल में, folder1 पर जाएं. इसके बाद, आपको फ़ायरवॉल नीति में नई बनाई गई क्रमबद्ध फ़ायरवॉल नीति दिखेगी. फ़ायरवॉल की नीति, "इस फ़ोल्डर में मौजूद फ़ायरवॉल की नीतियां" में दिखती है. फ़ायरवॉल की क्रमबद्ध नीति में, नया फ़ायरवॉल नियम देखा जा सकता है. यहां कंसोल का लिंक दिया गया है. कृपया पक्का करें कि आपने कंसोल में प्रोजेक्ट पिकर को folder1 पर सेट किया हो.

8. http-client वीएम से http-server वीएम तक ऐक्सेस की जांच करना

होस्ट प्रोजेक्ट में शेयर किए गए वीपीसी पर लागू फ़ायरवॉल की नीतियों की जांच करें.

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

gcloud compute networks get-effective-firewalls mynet --project=$hostproject_id

आपको इनहेरिट की गई क्रमबद्ध फ़ायरवॉल नीति इस तरह दिखेगी:

TYPE: org-firewall
FIREWALL_POLICY_NAME: <NUMBER_FOR_YOUR_FW_POLICY>
FIREWALL_POLICY_PRIORITY: 
PRIORITY: 100
ACTION: ALLOW
DIRECTION: INGRESS
DISABLED: False
IP_RANGES:

You will see the network firewall policy to the VPC like this:
TYPE: network-firewall-policy
FIREWALL_POLICY_NAME: mynet-fw-policy
FIREWALL_POLICY_PRIORITY: 1000
PRIORITY: 1000
ACTION: ALLOW
DIRECTION: INGRESS
DISABLED: False
IP_RANGES: 35.235.240.0/20

http-client नाम की वीएम से एसएसएच करें और जांच करें कि क्या यह एचटीटीपी 80 पोर्ट पर http-server को ऐक्सेस कर सकता है.

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

gcloud compute ssh \
    --zone=$zonename "http-client" \
    --tunnel-through-iap \
    --project=$serviceproject_id

वेब सर्वर को ऐक्सेस करने के लिए, curl का इस्तेमाल करें.

curl [http_server_ip]

आपको दिखेगा कि curl कमांड ने http-server से मिले जवाब को सफलतापूर्वक वापस कर दिया है.

I am a Http Server.

हायरार्किकल फ़ायरवॉल की नीति के तहत, इन्ग्रेस फ़ायरवॉल के नियम के मुताबिक http-client से http-server तक पोर्ट 80 पर ऐक्सेस किया जा सकता है.

एसएसएच सेशन से बाहर निकलकर, Cloud Shell पर वापस जाएं.

exit

9. व्यवस्थित करें

सेवा प्रोजेक्ट में मौजूद वीएम मिटाएं

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

gcloud compute instances delete http-server --zone $zonename --project=$serviceproject_id
gcloud compute instances delete http-client --zone $zonename --project=$serviceproject_id

क्रम के हिसाब से फ़ायरवॉल की नीति को व्यवस्थित करना

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

gcloud compute firewall-policies associations delete my-folder1-fw-policy \
   --firewall-policy=my-folder1-fw-policy \
   --organization=$org_id
gcloud compute firewall-policies rules delete 100 \
  --organization=$org_id \
  --firewall-policy=my-folder1-fw-policy
gcloud compute firewall-policies delete my-folder1-fw-policy \
  --organization=$org_id

संगठन के लेवल पर टैग हटाना

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

gcloud resource-manager tags values delete $http_tags_http_server_id
gcloud resource-manager tags values delete $http_tags_http_client_id
gcloud resource-manager tags keys delete $http_tags_id

होस्ट प्रोजेक्ट को मिटाना

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

gcloud compute shared-vpc associated-projects remove $serviceproject_id --host-project=$hostproject_id 
gcloud compute shared-vpc disable $hostproject_id
gcloud projects delete $hostproject_id

सेवा प्रोजेक्ट में मौजूद संसाधनों को मिटाना

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

gcloud projects delete $serviceproject_id

फ़ोल्डर मिटाना

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

gcloud resource-manager folders delete $folder1_id
gcloud resource-manager folders delete $folder2_id

10. बधाई हो

आपने IAM के कंट्रोल वाले टैग के साथ, हैरारिकल फ़ायरवॉल नीति की जांच कर ली है.