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

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. सेटअप और ज़रूरी शर्तें

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

Cloud Shell शुरू करें

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

GCP Console में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर मौजूद Cloud Shell आइकॉन पर क्लिक करें:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

baf3d3c74282ecba.png

बकेट का नाम रखने से जुड़े नियम:

  • बकेट के नाम में संवेदनशील जानकारी शामिल न करें, क्योंकि बकेट का नेमस्पेस ग्लोबल होता है और यह सार्वजनिक तौर पर दिखता है.
  • बकेट के नाम में सिर्फ़ अंग्रेज़ी के छोटे अक्षर, संख्याएं, डैश (-), अंडरस्कोर (_), और बिंदु (.) शामिल होने चाहिए. जिन नामों में बिंदु शामिल होते हैं उनके लिए पुष्टि करना ज़रूरी है.
  • बकेट के नाम, किसी संख्या या अक्षर से शुरू और खत्म होने चाहिए.
  • बकेट के नाम में 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

अपना ऑब्जेक्ट ढूंढें. इसके बाद, दाईं ओर मौजूद तीन बिंदुओं पर क्लिक करें और अनुमतियों को सार्वजनिक के तौर पर सेट करें.

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 CDN से दिखाए गए कॉन्टेंट की पुष्टि करना

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

a52d0ba4c084aa05.png

6. GCS से ऑब्जेक्ट मिटाना

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

Cloud Storage >> %bucket name% >> ऑब्जेक्ट पर जाएं

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

a1cc1bb9a0ff41df.png

7. अपने सीडीएन कैश के लिए Edge की सुरक्षा नीति बनाना

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

इनमें से कोई विकल्प चुनें

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

डिफ़ॉल्ट कार्रवाई: अनुमति नहीं दी गई

7a12374be33026fd.png

b7c4efc091272358.png

77ddbcddd07b65d2.png

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

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 देखने के लिए, लॉग की जांच की जा सकती है. कार्रवाइयां >> लॉगिंग >> लॉग एक्सप्लोरर पर जाएं

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

14972af5ae6c182a.png

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

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

cddc48ca93ad79ca.png

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

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

नेटवर्क सुरक्षा >> Cloud Armor >> %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 Security Policies से जुड़ा यह लैब पूरा कर लिया है.

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

9. लैब में बिना अनुमति के की गई गतिविधियों को मिटाना

नेटवर्क सुरक्षा >> Cloud Armor >> %POLICY NAME% पर जाएं और मिटाएं को चुनें

21eefb5f375e8fee.png

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

ef2fa8d45c1d3452.png

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

ee2e78c10f4104eb.png

10. बधाई हो!

आपने Cloud Armor की मदद से, एज कैश की सुरक्षा करने वाला कोडलैब पूरा कर लिया है!

हमने क्या-क्या बताया

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

अगले चरण

  • Compute Engine संसाधन से कैश हिट के साथ, Edge Security Policy सेट अप करने की कोशिश करें.