1. खास जानकारी
इस लैब में, Cloud Run सेवा के ऐक्सेस को सीमित करने का तरीका बताया गया है. साथ ही, इसमें यह भी बताया गया है कि सिर्फ़ उन अनुरोधों को अनुमति कैसे दी जाए जो आपके प्रोजेक्ट के वीपीसी या परिसर में चल रहे वर्कलोड से आते हैं. ऐक्सेस कंट्रोल की दो लेयर का इस्तेमाल किया जा सकता है: इनग्रेस सेटिंग और Identity and Access Management (IAM) नीतियां.

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

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

Compute Engine की जिस वर्चुअल मशीन का इस्तेमाल जंप सर्वर के तौर पर किया जाएगा उसका नेटवर्क ओरिजिन, Cloud VPN Gateway के नेटवर्क ओरिजिन के जैसा ही है. इसलिए, इसका इस्तेमाल करके ऑन-प्रिमाइसेस वर्कलोड से अनुरोध भेजने का सिम्युलेशन किया जा सकता है.
2. सेटअप और ज़रूरी शर्तें
अपनी स्पीड से एनवायरमेंट सेट अप करना
- Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.



- प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे कभी भी अपडेट किया जा सकता है.
- प्रोजेक्ट आईडी, सभी Google Cloud प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे बदला नहीं जा सकता. Cloud Console, यूनीक स्ट्रिंग अपने-आप जनरेट करता है. आम तौर पर, आपको इससे कोई फ़र्क़ नहीं पड़ता कि यह क्या है. ज़्यादातर कोडलैब में, आपको प्रोजेक्ट आईडी का रेफ़रंस देना होगा. आम तौर पर, इसे
PROJECT_IDके तौर पर पहचाना जाता है. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो कोई दूसरा रैंडम आईडी जनरेट किया जा सकता है. इसके अलावा, आपके पास अपना नाम आज़माने का विकल्प भी है. इससे आपको पता चलेगा कि वह नाम उपलब्ध है या नहीं. इस चरण के बाद, इसे बदला नहीं जा सकता. यह प्रोजेक्ट की अवधि तक बना रहेगा. - आपकी जानकारी के लिए बता दें कि एक तीसरी वैल्यू भी होती है, जिसे प्रोजेक्ट नंबर कहते हैं. इसका इस्तेमाल कुछ एपीआई करते हैं. इन तीनों वैल्यू के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
- इसके बाद, आपको Cloud Console में बिलिंग चालू करनी होगी, ताकि Cloud संसाधनों/एपीआई का इस्तेमाल किया जा सके. इस कोडलैब को पूरा करने में ज़्यादा खर्च नहीं आएगा. इस ट्यूटोरियल के बाद बिलिंग से बचने के लिए, बनाए गए संसाधनों को बंद किया जा सकता है. इसके लिए, बनाए गए संसाधनों को मिटाएं या पूरे प्रोजेक्ट को मिटाएं. 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. सेवा को डिप्लॉय करना
सबसे पहले, सेवा को डिप्लॉय करें और उसे सार्वजनिक तौर पर उपलब्ध कराएं. जब यह पुष्टि हो जाएगी कि आपके ब्राउज़र से अनुरोध भेजे जा सकते हैं, तब हम सेवा को लॉक कर देंगे. इसके बाद, सिर्फ़ इंटरनल नेटवर्क सोर्स से मिले अनुरोधों को अनुमति दी जाएगी.
नीचे दी गई कमांड चलाने के दौरान, इन निर्देशों का पालन करें:
- सोर्स कोड की जगह (...): पुष्टि करें कि आप partner-registration-service डायरेक्ट्री में हैं और डिफ़ॉल्ट वैल्यू स्वीकार करने के लिए, Enter दबाएं
- सेवा का नाम (partner-registration-service): डिफ़ॉल्ट वैल्यू स्वीकार करने के लिए, Enter दबाएं
- क्या पुष्टि न किए गए लोगों को [partner-registration-service] को कॉल करने की अनुमति देनी है (y/N)? Y
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 सेवा के साथ एक ही प्रोजेक्ट (या वीपीसी सर्विस कंट्रोल पेरीमीटर) में होते हैं. इसलिए, यह हमारे इस्तेमाल के लिए सबसे सही है.
इसके अलावा, Google Cloud के अन्य प्रॉडक्ट से किए गए अनुरोधों को इंटरनल माना जाता है. भले ही, वे वीपीसी का हिस्सा न हों. इन प्रॉडक्ट में, Pub/Sub और Workflows शामिल हैं.
इन सोर्स से किए गए अनुरोध, Google नेटवर्क में ही रहते हैं. भले ही, वे run.app यूआरएल पर आपकी सेवा को ऐक्सेस करते हों. साथ ही, सार्वजनिक ऐक्सेस की अनुमति नहीं है.
सिर्फ़ इंटरनल अनुरोधों को अनुमति देने के लिए, सेवा को अपडेट करें:
gcloud run services update partner-registration-service --ingress=internal
अगर आपने सेवा का यूआरएल फिर से खोला, तो आपको "गड़बड़ी: अनुमति नहीं है - ऐक्सेस नहीं दिया गया" मैसेज दिखेगा
आपका ब्राउज़र, Google Cloud प्रोजेक्ट के इंटरनल ऑरिजिन से नहीं, बल्कि किसी बाहरी नेटवर्क ऑरिजिन से अनुरोध भेजता है. इसलिए, आपको यही नतीजा मिलेगा. आपकी सेवा अब ज़्यादा सुरक्षित है.
4. Compute Engine वर्चुअल मशीन को जंप सर्वर के तौर पर बनाना
अगला चरण, Cloud VPN गेटवे के ज़रिए किसी ऑन-प्रिमाइसेस सर्वर से अनुरोधों को सिम्युलेट करना है. इसके लिए, वीपीसी में एक Compute Engine इंस्टेंस बनाएं, ताकि उसे जंप सर्वर के तौर पर इस्तेमाल किया जा सके:
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 इंस्टेंस से सेवा को अनुरोध भेजना
अब वर्चुअल मशीन पर एक टर्मिनल खोलें और वीपीसी नेटवर्क में मौजूद मशीन से सीधे अनुरोध भेजें.
अगर इस कमांड से आपको 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
अब यूआरएल को कॉपी करें और curl का इस्तेमाल करके, Compute Engine इंस्टेंस से अनुरोध भेजें. यह अनुरोध पूरा हो जाएगा, क्योंकि वीएम इंस्टेंस आपके प्रोजेक्ट के वीपीसी नेटवर्क में चलता है. यह एक इंटरनल सोर्स है.
export SERVICE_URL=https://
curl ${SERVICE_URL}
आउटपुट में यह जानकारी होनी चाहिए:
Partner registration service: RUNNING
5. आईएएम पर आधारित ऐक्सेस कंट्रोल के बारे में क्या जानकारी है?
इस लैब में, आपको इनग्रेस सेटिंग इस्तेमाल करने का तरीका और समय बताया गया है. अगर आपको किसी ऑन-प्रिमाइसेस वर्कलोड को Cloud Run से कनेक्ट करना है, तो इनग्रेस सेटिंग का इस्तेमाल करना एक अच्छा विकल्प है.
आईएम पर आधारित ऐक्सेस कंट्रोल को लागू करने में ज़्यादा मेहनत लगती है. खास तौर पर, अगर कॉल किसी ऑन-प्रिमाइसेस होस्ट से किया जा रहा है:
- आईएएम के लिए, आपको होस्ट पर सेवा खाते के लंबे समय तक इस्तेमाल किए जा सकने वाले क्रेडेंशियल मैनेज करने होंगे
- सेवा खाते के क्रेडेंशियल का इस्तेमाल करके अनुरोधों पर हस्ताक्षर करने के लिए, IAM को कोड में बदलाव करने की ज़रूरत होती है.
Google, ऐक्सेस कंट्रोल के लिए कई स्तरों वाले तरीके का सुझाव देता है. सिर्फ़ इंटरनल होस्ट के लिए ऐक्सेस को सीमित करने के लिए, इनग्रेस सेटिंग का इस्तेमाल करना एक शानदार शुरुआत है. हालांकि, आपको यहीं नहीं रुकना चाहिए!
6. बधाई हो!
बधाई हो, आपने कोडलैब पूरा कर लिया है!
इसके बाद क्या होगा:
Cymbal Eats के अन्य कोडलैब देखें:
- Eventarc की मदद से Cloud Workflows को ट्रिगर करना
- Cloud Storage से इवेंट प्रोसेसिंग ट्रिगर करना
- Cloud Run से Private CloudSQL से कनेक्ट करना
- Cloud Run से पूरी तरह से मैनेज किए गए डेटाबेस से कनेक्ट करना
- पहचान के बारे में जानकारी रखने वाले प्रॉक्सी (आईएपी) की मदद से, सर्वरलेस ऐप्लिकेशन को सुरक्षित करना
- Cloud Scheduler की मदद से Cloud Run जॉब ट्रिगर करना
- Cloud Run पर सुरक्षित तरीके से डिप्लॉय करना
- GKE Autopilot से प्राइवेट AlloyDB इंस्टेंस से कनेक्ट करना
व्यवस्थित करें
इस ट्यूटोरियल में इस्तेमाल किए गए संसाधनों के लिए, अपने Google Cloud खाते से शुल्क न लिए जाने के लिए, संसाधनों वाला प्रोजेक्ट मिटाएं. इसके अलावा, प्रोजेक्ट को बनाए रखने और अलग-अलग संसाधनों को मिटाने का विकल्प भी है.
प्रोजेक्ट मिटाना
बिलिंग को बंद करने का सबसे आसान तरीका यह है कि ट्यूटोरियल के लिए बनाया गया प्रोजेक्ट मिटा दें.
काम के रेफ़रंस
यहां कुछ और संसाधन दिए गए हैं. इनसे आपको Cloud Run पर ऐक्सेस कंट्रोल की दो लेयर के बारे में ज़्यादा जानने में मदद मिलेगी.