1. परिचय
Google Cloud Armor Edge Security Policies की मदद से, Google Cloud CDN और Google Cloud Storage पर कैश मेमोरी में सेव किए गए ऑब्जेक्ट का ऐक्सेस सीमित किया जा सकता है. ऐसा करने की वजहों के उदाहरणों में ये शामिल हैं: यह पक्का करना कि आपके उपयोगकर्ता, उन देशों/इलाकों में स्टोरेज बकेट में मौजूद ऑब्जेक्ट को ऐक्सेस न करें जहां ऐसा करने पर पाबंदी है या यह पक्का करना कि मीडिया डिस्ट्रिब्यूशन, उन देशों/इलाकों के हिसाब से फ़िल्टर हो जहां आपके पास ऐसा करने का लाइसेंस है.
इस लैब में, हम एक GCS बकेट बनाएंगे. इसमें एक इमेज अपलोड करेंगे. इसे लोड बैलेंसर से बाइंड करेंगे. इसके बाद, इस पर Cloud CDN और Edge Security की नीतियां लागू करेंगे.
आपको क्या सीखने को मिलेगा
- कैश किए जा सकने वाले कॉन्टेंट के साथ Cloud Storage बकेट सेट अप करने का तरीका
- कॉन्टेंट को सुरक्षित रखने के लिए, Edge की सुरक्षा नीति बनाने का तरीका
- यह पुष्टि कैसे करें कि Edge की सुरक्षा नीति उम्मीद के मुताबिक काम कर रही है
आपको इन चीज़ों की ज़रूरत होगी
- नेटवर्किंग की बुनियादी जानकारी और एचटीटीपी के बारे में जानकारी
- Unix/Linux कमांड लाइन की बुनियादी जानकारी
2. सेटअप और ज़रूरी शर्तें
अपने हिसाब से एनवायरमेंट सेट अप करना
- Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.



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

इसे चालू करने और एनवायरमेंट से कनेक्ट करने में सिर्फ़ कुछ सेकंड लगेंगे. यह प्रोसेस पूरी होने के बाद, आपको कुछ ऐसा दिखेगा:

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. साथ ही, यह 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 में, नेविगेशन मेन्यू > Cloud Storage > ब्राउज़र पर जाएं. बकेट बनाएं पर क्लिक करें:

बकेट का नाम रखने से जुड़े नियम:
- बकेट के नाम में संवेदनशील जानकारी शामिल न करें, क्योंकि बकेट का नेमस्पेस ग्लोबल होता है और यह सार्वजनिक तौर पर दिखता है.
- बकेट के नाम में सिर्फ़ अंग्रेज़ी के छोटे अक्षर, संख्याएं, डैश (-), अंडरस्कोर (_), और बिंदु (.) शामिल होने चाहिए. जिन नामों में बिंदु शामिल होते हैं उनके लिए पुष्टि करना ज़रूरी है.
- बकेट के नाम, किसी संख्या या अक्षर से शुरू और खत्म होने चाहिए.
- बकेट के नाम में 3 से 63 वर्ण होने चाहिए. जिन नामों में बिंदु होते हैं उनमें ज़्यादा से ज़्यादा 222 वर्ण हो सकते हैं. हालांकि, बिंदु से अलग किए गए हर कॉम्पोनेंट में 63 से ज़्यादा वर्ण नहीं हो सकते.
- बकेट के नामों को डॉटेड-डेसिमल नोटेशन में आईपी पते के तौर पर नहीं दिखाया जा सकता. उदाहरण के लिए, 192.168.5.4.
- बकेट के नाम, "goog" प्रीफ़िक्स से शुरू नहीं हो सकते.
- बकेट के नामों में "google" या "google" की स्पेलिंग में मामूली बदलाव करके नहीं लिखा जा सकता.
- साथ ही, डीएनएस के नियमों का पालन करने और आने वाले समय में काम करने की सुविधा के लिए, आपको अंडरस्कोर (_) का इस्तेमाल नहीं करना चाहिए. इसके अलावा, आपको एक साथ दो पीरियड या डैश का इस्तेमाल नहीं करना चाहिए. उदाहरण के लिए, ".." या "-." या ".-" डीएनएस नामों में मान्य नहीं हैं.
जारी रखें पर क्लिक करें.
जगह का टाइप: क्षेत्र
जगह: अपनी मौजूदा जगह से दूर का कोई इलाका चुनें
जारी रखें पर क्लिक करें.
डिफ़ॉल्ट स्टोरेज क्लास: स्टैंडर्ड
जारी रखें पर क्लिक करें.
सार्वजनिक ऐक्सेस को रोकने की सुविधा में जाकर, इस बकेट पर सार्वजनिक ऐक्सेस को रोकने की सुविधा लागू करें चेकबॉक्स से सही का निशान हटाएं.
ऐक्सेस कंट्रोल में जाकर, ज़्यादा बेहतर चुनें.
जारी रखें पर क्लिक करें.
बकेट कॉन्फ़िगर करने के बाद, बनाएं पर क्लिक करें:
बस इतना ही करना था — आपने 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
अपना ऑब्जेक्ट ढूंढें. इसके बाद, दाईं ओर मौजूद तीन बिंदुओं पर क्लिक करें और अनुमतियों को सार्वजनिक के तौर पर सेट करें.


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

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

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

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

लोड बैलेंसर से क्वेरी करना
कुछ मिनट बाद, अपलोड किए गए ऑब्जेक्ट के लिए लोड बैलेंसर से क्वेरी करें. आपको लोड बैलेंसर का आईपी पता और इमेज का नाम पता होना चाहिए. निर्देश का स्ट्रक्चर इस तरह होता है:
टर्मिनल से
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 CDN से दिखाए गए कॉन्टेंट की पुष्टि करना
नेटवर्क सेवाएं >> सीडीएन पर जाकर, पुष्टि करें कि सीडीएन से ट्रैफ़िक मिल रहा है

6. GCS से ऑब्जेक्ट मिटाना
अब जब कैश मेमोरी भर गई है, तो आइए बकेट से ऑब्जेक्ट को मिटाते हैं. इससे यह पक्का होता है कि हम नीति को कैश मेमोरी पर लागू कर रहे हैं, न कि बैकएंड पर.
Cloud Storage >> %bucket name% >> ऑब्जेक्ट पर जाएं
इमेज को चुनें और उसे मिटाएं.

7. अपने सीडीएन कैश के लिए Edge की सुरक्षा नीति बनाना
नेटवर्क सुरक्षा >> Cloud Armor पर जाएं और नीति बनाएं पर क्लिक करें
इनमें से कोई विकल्प चुनें
नीति का टाइप: Edge की सुरक्षा नीति
डिफ़ॉल्ट कार्रवाई: अनुमति नहीं दी गई



नीति को अपने बैकएंड बकेट पर लागू करें.
8. Edge की सुरक्षा नीति की पुष्टि करना
हमने अपने बैक-एंड बकेट के सामने Edge की सुरक्षा नीति बना ली है. अब यह पुष्टि करते हैं कि यह नीति उम्मीद के मुताबिक काम कर रही है.
सुरक्षा नीति देखें
कुछ मिनट बाद, यह देखा जा सकेगा कि Cloud Armor की नीति लागू हो गई है. कमांड लाइन से, यह कमांड चलाने पर आपको 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 <
लॉग की जाँच करना
इसके बाद, लागू की गई Edge Security Policy देखने के लिए, लॉग की जांच की जा सकती है. कार्रवाइयां >> लॉगिंग >> लॉग एक्सप्लोरर पर जाएं
नीचे दिए गए स्निपेट को क्वेरी में डालें और 'चलाएं' पर क्लिक करें

resource.type:(http_load_balancer) AND jsonPayload.enforcedEdgeSecurityPolicy.name:(%SECURITY_POLICY_NAME%)
403 रिस्पॉन्स और लागू की गई सुरक्षा नीति के बारे में जानकारी

सुरक्षा नीति हटाना
सुरक्षा नीति हटाएं और कैश मेमोरी से ऑब्जेक्ट के बारे में क्वेरी करें.
नेटवर्क सुरक्षा >> Cloud Armor >> %POLICY NAME% >> टारगेट पर जाएं और टारगेट बकेट हटाएं.

नीति हटाए जाने की पुष्टि करना
कुछ मिनट बीत जाने के बाद, स्टोरेज बकेट में मौजूद संसाधन को दूसरा कर्ल भेजें. इस बार आपको 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 Security Policies से जुड़ा यह लैब पूरा कर लिया है.
©2020 Google LLC सभी अधिकार सुरक्षित हैं. Google और Google का लोगो, Google LLC के ट्रेडमार्क हैं. दूसरी सभी कंपनियां और प्रॉडक्ट के नाम, उन कंपनियों के ट्रेडमार्क हो सकते हैं जिनसे वे जुड़े हुए हैं.
9. लैब में बिना अनुमति के की गई गतिविधियों को मिटाना
नेटवर्क सुरक्षा >> Cloud Armor >> %POLICY NAME% पर जाएं और मिटाएं को चुनें

Cloud Storage पर जाएं. इसके बाद, बनाया गया बकेट चुनें और मिटाएं पर क्लिक करें

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

10. बधाई हो!
आपने Cloud Armor की मदद से, एज कैश की सुरक्षा करने वाला कोडलैब पूरा कर लिया है!
हमने क्या-क्या बताया
- क्लाउड स्टोरेज बकेट और उससे जुड़े क्लाउड लोड बैलेंसर को सेट अप करने का तरीका
- Cloud Armor Edge की सुरक्षा नीति बनाने का तरीका
- इस बात की पुष्टि कैसे करें कि Edge की सुरक्षा नीति उम्मीद के मुताबिक काम कर रही है.
अगले चरण
- Compute Engine संसाधन से कैश हिट के साथ, Edge Security Policy सेट अप करने की कोशिश करें.