1. खास जानकारी
यह लैब आपको Cloud Run सेवा के ऐक्सेस को सीमित करने का तरीका बताता है. साथ ही, सिर्फ़ कंपनी के परिसर या प्रोजेक्ट के VPC में चल रहे वर्कलोड से अनुरोधों को अनुमति देने का तरीका बताता है. ऐक्सेस कंट्रोल के दो लेवल इस्तेमाल किए जा सकते हैं: इन्ग्रेस डेटा ट्रैफ़िक की सेटिंग और पहचान और ऐक्सेस मैनेजमेंट (आईएएम) की नीतियां.
इन्ग्रेस डेटा ट्रैफ़िक की सेटिंग
इन्ग्रेस डेटा ट्रैफ़िक की सेटिंग की मदद से, अनुरोधों को उनके नेटवर्क के ऑरिजिन (इंटरनल या एक्सटर्नल) के आधार पर फ़िल्टर किया जा सकता है. डिफ़ॉल्ट रूप से, सभी अनुरोध पास होने की अनुमति होती है. इनमें सार्वजनिक इंटरनेट से मिलने वाले अनुरोध भी शामिल हैं.
IAM नीति
IAM नीतियों की मदद से, भेजने वाले की पहचान के आधार पर अनुरोधों को फ़िल्टर किया जा सकता है. साथ ही, आम तौर पर इनका इस्तेमाल, सेवा के लिए किए गए अनुरोधों की पुष्टि करने के लिए किया जाता है.
इस लैब में, आपको यह बताया जाएगा कि इन्ग्रेस डेटा ट्रैफ़िक की सेटिंग को कब और कैसे इस्तेमाल करना है.
कंपनी की इमारत में मौजूद होस्ट, VPC के ज़रिए कनेक्ट करते हैं
इस लैब में, हम कंपनी की इमारत में होने वाले वर्कलोड को सिम्युलेट करेंगे. कंपनी की इमारत में होस्ट को Cloud Run से कनेक्ट करने के लिए, आपको कंपनी की इमारत में होस्ट किए जाने वाले होस्ट के लिए निजी Google ऐक्सेस को कॉन्फ़िगर करना होगा. इसमें VPC नेटवर्क में, Cloud VPN गेटवे सेट अप करना भी शामिल है, जैसा कि नीचे बताया गया है.
VPC में जंप सर्वर का इस्तेमाल करके, कंपनी की इमारत में मौजूद वर्कलोड को सिम्युलेट करना
इस लैब में, जैसा कि यहां दिखाया गया है, VPC में Compute Engine वर्चुअल मशीन से अनुरोध भेजकर, कंपनी की इमारत में मौजूद होस्ट से अनुरोध भेजने की नकल की जा सकती है.
जंप सर्वर के तौर पर इस्तेमाल की जाने वाली Compute Engine वर्चुअल मशीन का नेटवर्क ऑरिजिन और Cloud VPN गेटवे एक ही होता है. इसलिए, कंपनी की इमारत में मौजूद वर्कलोड से अनुरोध भेजने के अनुरोध को सिम्युलेट करने के लिए, इस सुविधा का इस्तेमाल किया जा सकता है.
2. सेटअप और ज़रूरी शर्तें
अपने हिसाब से एनवायरमेंट सेटअप करें
- Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से Gmail या Google Workspace खाता नहीं है, तो आपको नया खाता बनाना होगा.
- प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों का डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करता. इसे कभी भी अपडेट किया जा सकता है.
- प्रोजेक्ट आईडी, Google Cloud के सभी प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे बदला नहीं जा सकता. इसे सेट करने के बाद बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है; आम तौर पर, आपको उसके होने की कोई परवाह नहीं होती. ज़्यादातर कोडलैब में, आपको प्रोजेक्ट आईडी का रेफ़रंस देना होगा. आम तौर पर, इसे
PROJECT_ID
के तौर पर पहचाना जाता है. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो किसी भी क्रम में एक और आईडी जनरेट किया जा सकता है. इसके अलावा, खुद भी आज़माया जा सकता है और देखें कि वह उपलब्ध है या नहीं. इस चरण के बाद इसे बदला नहीं जा सकता और प्रोजेक्ट के कुल समय तक बना रहेगा. - आपकी जानकारी के लिए, एक तीसरी वैल्यू यानी प्रोजेक्ट नंबर है. इसका इस्तेमाल कुछ एपीआई करते हैं. दस्तावेज़ में इन तीनों वैल्यू के बारे में ज़्यादा जानें.
- इसके बाद, आपको क्लाउड संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग चालू करनी होगी. इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. इस ट्यूटोरियल के अलावा, संसाधनों को बंद करने के लिए कि आपको बिलिंग न करनी पड़े. इसके लिए, अपने बनाए गए संसाधनों को मिटाएं या पूरा प्रोजेक्ट मिटाएं. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.
एनवायरमेंट का सेटअप
- बाद के निर्देशों में इस्तेमाल करने के लिए, प्रोजेक्ट आईडी पर एनवायरमेंट वैरिएबल सेट करें:
export PROJECT_ID=$(gcloud config get-value project)
export REGION=us-central1
export ZONE=us-central1-a
- इस लैब को एक्ज़ीक्यूट करने के लिए ज़रूरी एपीआई चालू करें.
gcloud services enable \
run.googleapis.com \
cloudbuild.googleapis.com \
compute.googleapis.com \
artifactregistry.googleapis.com
- सैंपल ऐप्लिकेशन रिपॉज़िटरी का क्लोन बनाएं और डायरेक्ट्री पर जाएं
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git
cd cymbal-eats/partner-registration-service
- Compute Engine और Cloud Run के लिए डिफ़ॉल्ट क्षेत्र और ज़ोन सेट करना
gcloud config set compute/region ${REGION}
gcloud config set run/region ${REGION}
gcloud config set compute/zone ${ZONE}
3. सेवा को डिप्लॉय करें
सबसे पहले, सेवा को डिप्लॉय करें और इसे सार्वजनिक तौर पर ऐक्सेस करें. आपके द्वारा यह सत्यापित करने के बाद कि आप अपने ब्राउज़र से अनुरोध भेज सकते हैं, हम सेवा को लॉक कर देंगे और केवल आंतरिक नेटवर्क स्रोतों से अनुरोधों की अनुमति देंगे.
जब आप निम्न आदेश चलाएं, तो इन निर्देशों का पालन करें:
- सोर्स कोड लोकेशन (...): पुष्टि करें कि आप पार्टनर-रजिस्ट्रेशन-सेवा डायरेक्ट्री में हैं और डिफ़ॉल्ट को स्वीकार करने के लिए, Enter दबाएं
- सेवा का नाम (partner-register-service): डिफ़ॉल्ट को स्वीकार करने के लिए enter दबाएं
- क्या [partner-registration-service] (y/N) को शुरू करने की अनुमति नहीं दी गई है? हां
gcloud run deploy
जब यह निर्देश पूरा होता है, तो यह आपकी Cloud Run सेवा के यूआरएल की सूची बनाता है. आउटपुट इस स्टोर पेज जैसा दिखेगा:
Service [partner-registration-service] revision [partner-registration-service-00001-haz] has been deployed and is serving 100 percent of traffic. Service URL: https://partner-registration-service-ssssssssss-uc.a.run.app
अपने ब्राउज़र में सेवा का यूआरएल खोलें. आपको यह आउटपुट दिखेगा:
Partner registration service: RUNNING
सेवा को सिर्फ़ अंदरूनी अनुरोधों के लिए सेट करें
अब आपको सिर्फ़ इंटरनल सोर्स से अनुरोधों को अनुमति देने के लिए, Cloud Run सेवा की इन्ग्रेस डेटा ट्रैफ़िक सेटिंग इस्तेमाल करनी होगी. इंटरनल सोर्स में, VPC नेटवर्क में ऐसे संसाधन शामिल होते हैं जो Cloud Run सेवा वाले प्रोजेक्ट (या VPC सर्विस कंट्रोल पेरीमीटर) में मौजूद होते हैं. इससे यह हमारे इस्तेमाल के उदाहरण के लिए सबसे सही होता है.
इसके अलावा, Google Cloud के अन्य प्रॉडक्ट से किए गए अनुरोधों को अंदरूनी माना जाता है, भले ही वे VPC का हिस्सा न हों. उन प्रॉडक्ट में Pub/Sub और Workflows के उदाहरण शामिल होते हैं.
इन सोर्स से किए गए अनुरोध Google नेटवर्क के अंदर रहते हैं, भले ही वे run.app यूआरएल पर आपकी सेवा ऐक्सेस करते हों. साथ ही, सार्वजनिक ऐक्सेस के इस्तेमाल पर पाबंदी है.
सिर्फ़ अंदरूनी अनुरोधों को अनुमति देने के लिए सेवा को अपडेट करें:
gcloud run services update partner-registration-service --ingress=internal
सेवा का यूआरएल दोबारा खोलने पर, यह दिखेगा "गड़बड़ी: अनुमति नहीं है - ऐक्सेस नहीं है"
आपका ब्राउज़र, Google Cloud प्रोजेक्ट के लिए ऑरिजिन के इंटरनल नहीं, बल्कि किसी बाहरी नेटवर्क ऑरिजिन से अनुरोध भेजता है. इसलिए, आपको ऐसा होना चाहिए. आपकी सेवा अब ज़्यादा सुरक्षित है.
4. जंप सर्वर के तौर पर Compute Engine की वर्चुअल मशीन बनाना
अगला चरण, जंप सर्वर के तौर पर इस्तेमाल करने के लिए, VPC में एक Compute Engine इंस्टेंस बनाकर, Cloud VPN गेटवे की मदद से, कंपनी की इमारत में मौजूद सर्वर से अनुरोधों को सिम्युलेट करना है:
gcloud compute instances create jump-server --scopes=https://www.googleapis.com/auth/cloud-platform
इस निर्देश का आउटपुट कुछ ऐसा होना चाहिए:
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS jump-server us-central1-a n1-standard-1 10.128.0.10 34.170.108.8 RUNNING
Compute Engine इंस्टेंस से सेवा को अनुरोध भेजें
अब आपको वर्चुअल मशीन पर एक टर्मिनल खोलना होगा और सीधे VPC नेटवर्क में मौजूद मशीन से अनुरोध भेजना होगा.
अगर यहां दिया गया निर्देश आपको Cloud Shell में एसएसएच सेट अप करने के लिए कहता है, तो इन निर्देशों का पालन करें:
gcloud compute ssh jump-server
इस निर्देश की मदद से Cloud Run सेवा का यूआरएल पाएं:
gcloud run services describe partner-registration-service --region us-central1
आउटपुट की पहली कुछ लाइनें इस तरह दिखनी चाहिए:
✔ Service partner-registration-service in region us-central1 URL: https://partner-registration-service-ssssssssss-uc.a.run.app Ingress: internal
अब यूआरएल को कॉपी करें और कर्ल का इस्तेमाल करके Compute Engine इंस्टेंस से अनुरोध भेजें. यह अनुरोध पूरा हो जाना चाहिए, क्योंकि वीएम इंस्टेंस आपके प्रोजेक्ट के VPC नेटवर्क में चलता है - यह एक इंटरनल सोर्स है.
export SERVICE_URL=https://
curl ${SERVICE_URL}
आउटपुट में यह लिखा होना चाहिए:
Partner registration service: RUNNING
5. IAM पर आधारित ऐक्सेस कंट्रोल की सुविधा क्या है?
इस लैब से पता चलता है कि इन्ग्रेस डेटा ट्रैफ़िक की सेटिंग को कब और कैसे इस्तेमाल करना चाहिए. अगर कंपनी की इमारत में मौजूद वर्कलोड को Cloud Run से कनेक्ट करना है, तो इन्ग्रेस डेटा ट्रैफ़िक की सेटिंग सबसे ज़रूरी कदम है.
IAM पर आधारित ऐक्सेस कंट्रोल को लागू करने में ज़्यादा मेहनत लगती है. खास तौर पर, ऐसा तब होता है, जब कॉल करने के लिए कंपनी की इमारत में होस्ट का इस्तेमाल किया जा रहा हो:
- आईएएम के लिए ज़रूरी है कि आप होस्ट पर, लंबे समय तक चलने वाले सेवा खाते के क्रेडेंशियल मैनेज करें
- सेवा खाते के क्रेडेंशियल का इस्तेमाल करके अनुरोधों पर हस्ताक्षर करने के लिए, IAM को कोड में बदलाव करने होते हैं.
Google का सुझाव है कि ऐक्सेस कंट्रोल के लिए, कई स्तर पर काम करें. इन्ग्रेस डेटा ट्रैफ़िक की सेटिंग का इस्तेमाल करके, सिर्फ़ इंटरनल होस्ट को ऐक्सेस देना ज़रूरी है. हालांकि, सिर्फ़ इंटरनल होस्ट को ऐक्सेस करने की अनुमति देने पर, सिर्फ़ इतना ही नहीं!
6. बधाई हो!
बधाई हो, आपने कोडलैब पूरा कर लिया है!
आने वाले समय में मिलने वाली सुविधाएं:
Cymbal Eagles के अन्य कोडलैब एक्सप्लोर करें:
- Eventarc की मदद से Cloud Workflows को ट्रिगर करना
- Cloud Storage से इवेंट प्रोसेसिंग ट्रिगर करना
- Cloud Run की मदद से Private CloudSQL से कनेक्ट करना
- Cloud Run की मदद से, पूरी तरह से मैनेज किए जा रहे डेटाबेस से कनेक्ट करना
- पहचान अवेयर प्रॉक्सी (IAP) की मदद से बिना सर्वर वाले सुरक्षित ऐप्लिकेशन
- क्लाउड शेड्यूलर की मदद से, Cloud Run जॉब ट्रिगर करना
- Cloud Run के लिए सुरक्षित तरीके से डिप्लॉय करना
- GKE Autopilot की मदद से निजी AlloyDB से कनेक्ट करना
व्यवस्थित करें
इस ट्यूटोरियल में इस्तेमाल किए गए संसाधनों के लिए, आपके Google Cloud खाते पर शुल्क न लगे. इसके लिए, उस प्रोजेक्ट को मिटा दें जिसमें संसाधन शामिल हैं या प्रोजेक्ट को बनाए रखें और अलग-अलग संसाधनों को मिटाएं.
प्रोजेक्ट मिटाया जा रहा है
बिलिंग हटाने का सबसे आसान तरीका, ट्यूटोरियल के लिए बनाए गए प्रोजेक्ट को मिटाना है.
काम के रेफ़रंस
यहां कुछ और संसाधन दिए गए हैं. इनकी मदद से, Cloud Run पर ऐक्सेस कंट्रोल की दो लेयर के बारे में ज़्यादा जानकारी पाई जा सकती है.