Cloud Armor की मदद से, एज कैश को सुरक्षित रखना

1. परिचय

Google Cloud Armor Edge की सुरक्षा नीतियों की मदद से, Google Cloud CDN और Google Cloud Storage में कैश मेमोरी में सेव किए गए ऑब्जेक्ट के ऐक्सेस पर पाबंदी लगाई जा सकती है. ऐसा करने के उदाहरणों में यह पक्का करना शामिल है कि आपके उपयोगकर्ता प्रतिबंधित भौगोलिक क्षेत्रों से स्टोरेज बकेट में ऑब्जेक्ट को ऐक्सेस नहीं करते हैं या आपका मीडिया डिस्ट्रिब्यूशन उन भौगोलिक क्षेत्रों पर फ़िल्टर किया जा रहा है जिनके लिए आपके पास ऐसा करने का लाइसेंस है.

इस लैब में, हम एक GCS बकेट बनाएंगे, इसमें एक इमेज अपलोड करेंगे, और उसे लोड बैलेंसर से बाइंड करेंगे. इसके बाद, हम उस पर Cloud CDN और Edge की सुरक्षा नीतियों को चालू करेंगे.

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

  • कैश किए जा सकने वाले कॉन्टेंट के साथ Cloud Storage बकेट सेट अप करने का तरीका
  • कॉन्टेंट को सुरक्षित रखने के लिए, Edge की सुरक्षा नीति कैसे बनाएं
  • इस बात की पुष्टि कैसे करें कि Edge की सुरक्षा नीति उम्मीद के मुताबिक काम कर रही है या नहीं

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

  • बुनियादी नेटवर्किंग और एचटीटीपी की जानकारी
  • Unix/Linux कमांड लाइन के बारे में बुनियादी जानकारी

2. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेटअप करना

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से Gmail या Google Workspace खाता नहीं है, तो आपको नया खाता बनाना होगा.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों का डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करता. साथ ही, आप इसे किसी भी समय अपडेट कर सकते हैं.
  • प्रोजेक्ट आईडी, Google Cloud के सभी प्रोजेक्ट के लिए यूनीक होना चाहिए. साथ ही, आईडी को बदला नहीं जा सकता. सेट अप के बाद इसे बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है; आम तौर पर, आपको उसके होने की कोई परवाह नहीं होती. ज़्यादातर कोडलैब में, आपको प्रोजेक्ट आईडी का रेफ़रंस देना पड़ता है और आम तौर पर इसकी पहचान PROJECT_ID के रूप में की जाती है. इसलिए, अगर आपको यह पसंद नहीं आता है, तो कोई भी कोड जनरेट करें. इसके अलावा, खुद का भी कोड बनाकर देखा जा सकता है कि वह उपलब्ध है या नहीं. फिर यह "फ़्रोज़न" होता है प्रोजेक्ट बनने के बाद.
  • तीसरी वैल्यू, प्रोजेक्ट नंबर है, जिसका इस्तेमाल कुछ एपीआई करते हैं. दस्तावेज़ में इन तीनों वैल्यू के बारे में ज़्यादा जानें.
  1. इसके बाद, आपको क्लाउड संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग की सुविधा चालू करनी होगी. इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. इस ट्यूटोरियल के अलावा किसी अन्य प्लैटफ़ॉर्म पर बिलिंग न करने के लिए, संसाधनों को बंद करने के लिए, "साफ़-सफ़ाई" का पालन करें कोडलैब के आखिर में दिए गए निर्देश देखें. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.

Cloud Shell शुरू करना

Google Cloud को आपके लैपटॉप से, कहीं से भी ऑपरेट किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जा रहा है. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

GCP कंसोल में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर क्लाउड शेल आइकॉन पर क्लिक करें:

bce75f34b2c53987.png

प्रावधान करने और एनवायरमेंट से कनेक्ट होने में कुछ ही समय लगेगा. उसके पूरा हो जाने पर, आपको कुछ ऐसा दिखाई देगा:

f6ef2b5f13479f3a.png

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

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

Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट आईडी सेट अप किया गया हो

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
PROJECT_ID=[YOUR-PROJECT-NAME]
echo $PROJECT_ID

एपीआई चालू करना

सभी ज़रूरी सेवाएं चालू करें

gcloud services enable compute.googleapis.com
gcloud services enable logging.googleapis.com
gcloud services enable monitoring.googleapis.com

3. Cloud Storage बकेट बनाना

Cloud Console में, नेविगेशन मेन्यू > क्लाउड स्टोरेज > ब्राउज़र. बकेट बनाएं पर क्लिक करें:

baf3d3c74282ecba.png

बकेट का नाम रखने के नियम:

  • बकेट के नाम में संवेदनशील जानकारी शामिल न करें, क्योंकि बकेट नेमस्पेस दुनिया भर में और सभी को दिखाई देता है.
  • बकेट के नाम में सिर्फ़ अंग्रेज़ी के छोटे अक्षर, संख्याएं, डैश (-), अंडरस्कोर (_), और बिंदु (.) होने चाहिए. बिंदुओं वाले नाम के लिए पुष्टि करनी होगी.
  • बकेट के नाम किसी संख्या या अक्षर से शुरू और खत्म होने चाहिए.
  • बकेट के नामों में 3 से 63 वर्ण होने चाहिए. बिंदुओं वाले नाम में ज़्यादा से ज़्यादा 222 वर्ण हो सकते हैं, लेकिन बिंदु से अलग किए गए हर कॉम्पोनेंट में 63 से ज़्यादा वर्ण नहीं हो सकते.
  • बकेट के नामों को डॉट-दशमलव नोटेशन में IP पते के रूप में नहीं दिखाया जा सकता (उदाहरण के लिए, 192.168.5.4).
  • बकेट के नाम "goog" से शुरू नहीं हो सकते उपसर्ग.
  • बकेट के नामों में "google" नहीं हो सकता या "google" की गलत स्पेलिंग को बंद कर दें.
  • साथ ही, डीएनएस के नियमों का पालन करने और आने वाले समय में साथ काम करने के लिए, आपको अंडरस्कोर (_) का इस्तेमाल नहीं करना चाहिए. साथ ही, किसी अन्य पीरियड या डैश से पहले कोई पीरियड नहीं लगाना चाहिए. उदाहरण के लिए, ".." या "-" हो. या ".-" DNS नामों में मान्य नहीं हैं.

जारी रखें पर क्लिक करें.

जगह किस तरह की है: इलाका

जगह: अपनी जगह से दूर का इलाका चुनें

जारी रखें पर क्लिक करें.

डिफ़ॉल्ट स्टोरेज क्लास: स्टैंडर्ड

जारी रखें पर क्लिक करें.

'सार्वजनिक ऐक्सेस रोकें' में जाकर, इस बकेट पर सार्वजनिक ऐक्सेस को रोकने की सुविधा लागू करें चेकबॉक्स से सही का निशान हटाएं .

ऐक्सेस कंट्रोल में जाकर, फ़ाइन ग्रेनेड को चुनें.

जारी रखें पर क्लिक करें.

बकेट कॉन्फ़िगर करने के बाद, बनाएं पर क्लिक करें:

बस, आपने अभी-अभी Cloud Storage बकेट बनाई है!

4. अपने बकेट में कोई ऑब्जेक्ट अपलोड करना

अब किसी ऑब्जेक्ट को बकेट में अपलोड करें.

सबसे पहले, इस इमेज को Cloud Shell में अस्थायी इंस्टेंस में डाउनलोड करें. नीचे दिए गए उदाहरण में, Google के होम पेज से Google इमेज का इस्तेमाल किया गया है.

Cloud Shell से

wget --output-document google.png https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png

उस स्थान से चित्र अपलोड करने के लिए gsutil cp आदेश का उपयोग करें जहां आपने उसे अपने द्वारा बनाई गई बकेट में सहेजा था:

Cloud Shell से

gsutil cp google.png gs://YOUR-BUCKET-NAME

अब डाउनलोड की गई इमेज हटाएं:

Cloud Shell से

rm google.png

अपने ऑब्जेक्ट का पता लगाएं और दाईं ओर दिए गए तीन बिंदुओं पर क्लिक करें और अनुमतियों को सार्वजनिक करने के लिए उनमें बदलाव करें.

821aad82d8633922.png

30a975d3ad22d33d.png

5. लोड बैलेंसर बनाएं

इसके बाद, हम एक एचटीटीपी लोड बैलेंसर बनाएंगे.

नेटवर्किंग >> पर जाएं नेटवर्क सेवाएं >> लोड बैलेंसिंग >> लोड बैलेंसर बनाएं >> एचटीटीपी लोड बैलेंसर >> मेरी वर्चुअल मशीन (वीएम) पर इंटरनेट >> क्लासिक एचटीटीपी या एचटीटीपीएस लोड बैलेंसर

सबसे पहले, बनाए जाने वाले लोड बैलेंसर का नाम रखें.

बैकएंड बकेट बनाएं

एक नया बैकएंड बकेट बनाएं, जो कि अभी-अभी बनाया गया बकेट हो. इसके बाद, 'चालू किया गया सीडीएन' और 'कैश मेमोरी में सेव किया गया स्टैटिक कॉन्टेंट' चुनें. 'बनाएं' पर क्लिक करें.

ed392a56538d499e.png

होस्ट और पाथ रूल बनाएं

बाईं ओर, होस्ट और पाथ रूल पर जाएं. हम एक सामान्य होस्ट/पाथ के नियम का इस्तेमाल करेंगे और कोई भी अनुरोध बकेट को भेजेंगे.

7c1a664e0d1f15b0.png

फ़्रंटएंड कॉन्फ़िगरेशन बनाएं

फ़्रंटएंड कॉन्फ़िगरेशन चुनें. फ़्रंटएंड कॉन्फ़िगरेशन के लिए हम एचटीटीपी (हालांकि, आपके पास सर्टिफ़िकेट होने पर भी एचटीटीपीएस काम करेगा) और एक छोटा आईपी पता इस्तेमाल करेंगे. साथ ही, हम यह पक्का करेंगे कि आपने प्रीमियम टीयर नेटवर्क चुना हो.

2597a5e63d618622.png

'बनाएं' पर क्लिक करें

लोड बैलेंसर आईपी पता पाएं

कंसोल से लोड बैलेंसर का आईपी पता पाएं. इसके लिए, अपने प्रोजेक्ट के लोड बैलेंसर की सूची में मौजूद लोड बैलेंसर के नाम पर क्लिक करें.

9b757362d806e835.png

लोड बैलेंसर के बारे में क्वेरी करें

कुछ मिनट बाद, अपलोड किए गए ऑब्जेक्ट के लिए लोड बैलेंसर से क्वेरी करने की कोशिश करें. आपको लोड बैलेंसर का आईपी पता और इमेज का नाम डालना होगा. इस निर्देश की संरचना इस तरह है:

टर्मिनल से

curl -svo /dev/null http://LOAD_BALANCER_IP/google.png

आउटपुट

armanrye-macbookpro% curl -svo /dev/null http://34.98.81.123/google.png
*   Trying 34.98.81.123...
* TCP_NODELAY set
* Connected to 34.98.81.123 (34.98.81.123) port 80 (#0)
> GET /google.png HTTP/1.1
> Host: YOUR_IP
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< X-GUploader-UploadID: ADPycdtoILI76KVsvBvdVGvSfzaxys1m3zYqCepBrmJxAI48ni24cWCRIdNu-53PX3DS6iycxp6xwFbMpwtcHHZQUQmEBxAgng
< Expires: Mon, 13 Dec 2021 22:58:26 GMT
< Date: Mon, 13 Dec 2021 21:58:26 GMT
< Cache-Control: public, max-age=3600
< Last-Modified: Mon, 13 Dec 2021 21:45:57 GMT
< ETag: "8f9327db2597fa57d2f42b4a6c5a9855"
< x-goog-generation: 1639431957957903
< x-goog-metageneration: 2
< x-goog-stored-content-encoding: identity
< x-goog-stored-content-length: 5969
< Content-Type: image/png
< x-goog-hash: crc32c=TeiHTA==
< x-goog-hash: md5=j5Mn2yWX+lfS9CtKbFqYVQ==
< x-goog-storage-class: STANDARD
< Accept-Ranges: bytes
< Content-Length: 5969
< Server: UploadServer

पुष्टि करें कि आपका कॉन्टेंट, सीडीएन या लोड बैलेंसिंग मॉनिटरिंग की मदद से सीडीएन से दिखाया जा रहा हो. आपका हिट अनुपात 100% के आस-पास हो सकता है. अगर आपको कुछ क्वेरी चलाने हैं, तो ये काम किए जा सकते हैं

टर्मिनल से

#for i in `seq 1 50`; do curl http://%loadbalncer-IP%/google.png; done

Cloud सीडीएन के ज़रिए दिखाए गए कॉन्टेंट की पुष्टि करें

Network Services >> पर जाकर, पुष्टि करें कि सीडीएन से ट्रैफ़िक मिल रहा है CDN

a52d0ba4c084aa05.png

6. GCS (जीसीएस) से ऑब्जेक्ट मिटाएं

अब कैश मेमोरी में डेटा अपने-आप भर गया है. अब बकेट से ऑब्जेक्ट को मिटाएं. इस बात का भी ध्यान रखें कि हम नीति को कैश मेमोरी पर लागू कर रहे हैं, बैकएंड पर नहीं.

Cloud Storage >> पर जाएं %bucket नाम% >> चीज़ें

इमेज चुनें और उसे मिटाएं.

a1cc1bb9a0ff41df.png

7. सीडीएन कैश मेमोरी के लिए, Edge की सुरक्षा नीति बनाएं

नेटवर्क सिक्योरिटी >> पर जाएं Cloud Armor और 'नीति बनाएं' पर क्लिक करें

इन्हें चुनें

नीति टाइप: Edge की सुरक्षा नीति

डिफ़ॉल्ट कार्रवाई: अस्वीकार करें

7a12374be33026fd.png

b7c4efc091272358.png

77ddbcddd07b65d2.png

अपनी बैकएंड बकेट पर नीति लागू करें.

8. Edge की सुरक्षा नीति की पुष्टि करें

हमने बैक-एंड बकेट के लिए, Edge की सुरक्षा नीति बना ली है. अब हम इस बात की पुष्टि करते हैं कि यह सही तरीके से काम कर रहा है या नहीं.

सुरक्षा नीति देखें

कुछ मिनट बाद, आपके पास यह देखने का विकल्प होगा कि Cloud आर्मर की नीति लागू है या नहीं. कमांड लाइन से, नीचे दिए गए कमांड को चलाने से आपको एक 403 कोड मिलेगा

टर्मिनल से

curl -svo /dev/null http://LOAD_BALANCER_IP/google.png

आउटपुट

curl -svo /dev/null http://34.98.81.123/google.png
*   Trying 34.98.81.123...
* TCP_NODELAY set
* Connected to 34.98.81.123 (34.98.81.123) port 80 (#0)
> GET /google.png HTTP/1.1
> Host: YOUR_IP
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 403 Forbidden
< X-GUploader-UploadID: ADPycdtS6FtJOGIsiWYDrAAE8VFeQuNutcvbGoQe2t8EZxsuspVtmCjyiTv_P3CNktroHMOGFXkTCfG-Jj-rUO60ZGPpEbpqcw
< Content-Type: application/xml; charset=UTF-8
< Content-Length: 111
< Date: Mon, 13 Dec 2021 23:09:35 GMT
< Expires: Mon, 13 Dec 2021 23:09:35 GMT
< Cache-Control: private, max-age=0
< Server: UploadServer
<

लॉग की जांच करें

इसके बाद, लागू की गई किनारे वाली सुरक्षा नीति देखने के लिए लॉग देखें. ऑपरेशन >> पर जाएं लॉग किया जा रहा है >> लॉग एक्सप्लोरर

नीचे दिया गया स्निपेट क्वेरी में डालें और 'रन' पर क्लिक करें

14972af5ae6c182a.png

resource.type:(http_load_balancer) AND jsonPayload.enforcedEdgeSecurityPolicy.name:(%SECURITY_POLICY_NAME%)

403 रिस्पॉन्स और लागू की गई सुरक्षा नीति को नोट करें

cddc48ca93ad79ca.png

सुरक्षा नीति हटाना

सुरक्षा नीति हटाएं और कैश मेमोरी से ऑब्जेक्ट के बारे में क्वेरी करें.

नेटवर्क सिक्योरिटी >> पर जाएं क्लाउड आर्मर >> %POLICY NAME% >> टारगेट पर जाएं और टारगेट बकेट हटाएं.

350655729a89eb33.png

नीति के हटाए जाने की पुष्टि करें

कुछ मिनट बाद, स्टोरेज बकेट में संसाधन के लिए एक और कर्ल भेजें. इस बार आपको 200 जवाब मिलेंगे.

टर्मिनल से

curl -svo /dev/null http://LOAD_BALANCER_IP/google.png

आउटपुट

armanrye-macbookpro% curl -svo /dev/null http://34.98.81.123/google.png

*   Trying 34.98.81.123...
* TCP_NODELAY set
* Connected to 34.98.81.123 (34.98.81.123) port 80 (#0)
> GET /google.png HTTP/1.1
> Host: YOUR_IP
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< X-GUploader-UploadID: ADPycdtI7f49P3MSuZSZ8vl6RwfwmnIDJ59EeSKp7UPvLPawdaiRHXiNWLtseQTxUxceWOvSLvpYmT3pWVkV4qeIP7M
< Date: Mon, 13 Dec 2021 23:06:46 GMT
< Last-Modified: Mon, 13 Dec 2021 21:45:57 GMT
< ETag: "8f9327db2597fa57d2f42b4a6c5a9855"
< x-goog-generation: 1639431957957903
< x-goog-metageneration: 2
< x-goog-stored-content-encoding: identity
< x-goog-stored-content-length: 5969
< Content-Type: image/png
< x-goog-hash: crc32c=TeiHTA==
< x-goog-hash: md5=j5Mn2yWX+lfS9CtKbFqYVQ==
< x-goog-storage-class: STANDARD
< Accept-Ranges: bytes
< Content-Length: 5969
< Server: UploadServer
< Age: 1621
< Cache-Control: public,max-age=3600
<
{ [775 bytes data]
* Connection #0 to host 34.98.81.123 left intact
* Closing connection 0

बधाई हो! आपने इस लैब को Cloud Armor Edge की सुरक्षा नीतियों के हिसाब से पूरा कर लिया है.

©2020 Google LLC सभी अधिकार सुरक्षित हैं. Google और Google का लोगो, Google LLC के ट्रेडमार्क हैं. अन्य सभी कंपनी और उत्पाद नाम उनसे संबद्ध कंपनियों के ट्रेडमार्क हो सकते हैं.

9. लैब क्लीन अप

नेटवर्क सिक्योरिटी >> पर जाएं क्लाउड आर्मर >> %POLICY NAME% और हटाएं चुनें

21eefb5f375e8fee.png

Cloud Storage पर जाएं. आपने जो बकेट बनाई है उसे चुनें और 'मिटाएं' पर क्लिक करें

ef2fa8d45c1d3452.png

नेटवर्किंग >> पर जाएं नेटवर्क सेवाएं >> लोड बैलेंसिंग. अपना बनाया हुआ लोड बैलेंसर चुनें और 'मिटाएं' पर क्लिक करें.

ee2e78c10f4104eb.png

10. बधाई हो!

आपने Cloud Armor कोडलैब की मदद से डिफ़ेंडिंग एज कैश मेमोरी का इस्तेमाल पूरा कर लिया है!

इसमें हमने इन विषयों के बारे में बताया

  • क्लाउड स्टोरेज बकेट और उससे जुड़े क्लाउड लोड बैलेंसर को सेट अप करने का तरीका
  • Cloud Armor Edge की सुरक्षा नीति बनाने का तरीका
  • इस बात की पुष्टि कैसे करें कि Edge की सुरक्षा नीति सही तरीके से काम कर रही है या नहीं.

अगले चरण

  • कंप्यूट इंजन रिसॉर्स की मदद से कैश हिट का इस्तेमाल करके, Edge की सुरक्षा नीति सेट अप करके देखें.