किसी एक्सटेंशन को उसके निर्दिष्ट कार्य करने के लिए, फायरबेस स्थापित एक्सटेंशन के प्रत्येक उदाहरण को एक सेवा खाते के माध्यम से प्रोजेक्ट और उसके डेटा तक सीमित पहुंच प्रदान करता है।
सेवा खाता क्या है?
सेवा खाता एक विशेष प्रकार का Google उपयोगकर्ता खाता है। यह एक गैर-मानवीय उपयोगकर्ता का प्रतिनिधित्व करता है जो Google सेवाओं के लिए अधिकृत एपीआई कॉल कर सकता है।
किसी एक्सटेंशन की स्थापना के दौरान, फायरबेस प्रोजेक्ट में एक्सटेंशन के लिए एक सेवा खाता बनाता है। एक्सटेंशन के प्रत्येक स्थापित इंस्टेंस का अपना सेवा खाता होता है। यदि किसी एक्सटेंशन इंस्टेंस को अनइंस्टॉल किया जाता है, तो फायरबेस एक्सटेंशन के सेवा खाते को हटा देता है।
एक्सटेंशन के लिए बनाए गए सेवा खाते इस प्रारूप में हैं:
ext- extension-instance-id @ project-id .iam.gserviceaccount.com
फायरबेस एक्सटेंशन के सेवा खाते में विशिष्ट भूमिकाएं (अनुमतियों के बंडल) निर्दिष्ट करके किसी प्रोजेक्ट और उसके डेटा तक एक्सटेंशन की पहुंच को सीमित करता है। जब आप एक एक्सटेंशन बनाते हैं, तो आप यह निर्धारित करते हैं कि आपके एक्सटेंशन को किन भूमिकाओं को संचालित करने की आवश्यकता है, फिर आप इन भूमिकाओं को सूचीबद्ध करते हैं और आपके एक्सटेंशन को इन भूमिकाओं की आवश्यकता का कारण आपकी extension.yaml
फ़ाइल में सूचीबद्ध करते हैं (इस पृष्ठ के नीचे उदाहरण देखें)।
निर्धारित करें कि आपके एक्सटेंशन को किन भूमिकाओं की आवश्यकता है
जब आप अपना एक्सटेंशन बनाते हैं, तो आप पहुंच का वह स्तर निर्धारित करते हैं जो आपके एक्सटेंशन को संचालित करने के लिए आवश्यक है।
इंस्टॉलेशन के दौरान, फायरबेस सीएलआई उपयोगकर्ता को प्रत्येक भूमिका द्वारा दिए गए एक्सेस स्तर को स्वीकार करने के लिए संकेत देता है। यदि आपका एक्सटेंशन वास्तव में आवश्यकता से अधिक भूमिकाओं का अनुरोध करता है, तो उपयोगकर्ताओं द्वारा इसे इंस्टॉल करने की संभावना कम हो सकती है।
निर्धारित करें कि क्या आपका एक्सटेंशन किसी उत्पाद के साथ इंटरैक्ट करता है:
यदि आपका एक्सटेंशन किसी उत्पाद के साथ इंटरैक्ट करता है , तो आपको अपने एक्सटेंशन को उस उत्पाद तक पहुंच प्रदान करने की आवश्यकता है।
उदाहरण के लिए, यदि आपका एक्सटेंशन रीयलटाइम डेटाबेस इंस्टेंस पर डेटा लिखता है , तो आपके एक्सटेंशन को रीयलटाइम डेटाबेस भूमिका (विशेष रूप से,
firebasedatabase.admin
) की आवश्यकता होती है।यदि आपका एक्सटेंशन किसी उत्पाद से किसी ट्रिगरिंग ईवेंट को सुनता है , तो आपके एक्सटेंशन को उस उत्पाद से जुड़ी किसी भूमिका की आवश्यकता नहीं है।
उदाहरण के लिए, यदि आपका एक्सटेंशन रीयलटाइम डेटाबेस इंस्टेंस पर लिखने पर ट्रिगर होता है (लेकिन डेटाबेस में कुछ भी नहीं लिखता है), तो आपके एक्सटेंशन को रीयलटाइम डेटाबेस भूमिका की आवश्यकता नहीं है।
यह निर्धारित करने के बाद कि आपका एक्सटेंशन किन उत्पादों के साथ इंटरैक्ट करता है , आपको यह तय करना होगा कि उस विशिष्ट इंटरैक्शन के लिए कौन सी भूमिका आवश्यक है। कुछ उत्पाद क्रिया या निष्पादित क्रियाओं के समूह के आधार पर अलग-अलग भूमिकाएँ प्रदान करते हैं।
उदाहरण के लिए, मान लें कि आपका एक्सटेंशन क्लाउड स्टोरेज बकेट के साथ इंटरैक्ट करता है।
storage.objectCreator
भूमिका एक्सटेंशन को क्लाउड स्टोरेज बकेट में ऑब्जेक्ट बनाने की अनुमति देगी, लेकिन वह भूमिका एक्सटेंशन को ऑब्जेक्ट को देखने, हटाने या ओवरराइट करने की अनुमति नहीं देगी। उन अतिरिक्त क्रियाओं को करने के लिए एक्सटेंशन को सक्षम करने के लिए, आपको इसके बजायstorage.objectAdmin
भूमिका निर्दिष्ट करने की आवश्यकता है।
उन सभी समर्थित भूमिकाओं को देखने के लिए इस पृष्ठ के नीचे अनुभाग देखें जिन्हें आप अपने एक्सटेंशन के सेवा खाते को सौंप सकते हैं। प्रत्येक भूमिका के विवरण और दी गई अनुमतियों के बारे में जानने के लिए, फायरबेस दस्तावेज़ या Google क्लाउड दस्तावेज़ पर जाएँ। आप Google क्लाउड कंसोल के IAM और एडमिन पैनल में भी भूमिकाएँ देख सकते हैं।
किसी एक्सटेंशन को भूमिकाएँ कैसे निर्दिष्ट करें
अपने extension.yaml
फ़ाइल के roles
अनुभाग में आपके एक्सटेंशन को संचालित करने के लिए आवश्यक IAM भूमिकाओं की सूची बनाएं।
यहां एक एक्सटेंशन का उदाहरण दिया गया है जो निर्दिष्ट फायरबेस रीयलटाइम डेटाबेस पथ को सुनता है। ट्रिगर होने पर, एक्सटेंशन उपयोगकर्ता खाता ईमेल (फ़ायरबेस प्रमाणीकरण के साथ इंटरैक्शन) अपडेट करता है और एक अधिसूचना भेजता है (फ़ायरबेस क्लाउड मैसेजिंग के साथ इंटरैक्शन)। निम्नलिखित पर ध्यान दें:
- भले ही एक्सटेंशन रीयलटाइम डेटाबेस इवेंट से ट्रिगर होता है , फिर भी
firebasedatabase.admin
भूमिका सूचीबद्ध नहीं है (सुनने को इंटरैक्शन नहीं माना जाता है)। - चूंकि एक्सटेंशन प्रमाणीकरण और क्लाउड मैसेजिंग के साथ इंटरैक्ट करता है , इसलिए एक्सटेंशन को उन उत्पादों (क्रमशः
firebaseauth.admin
औरfirebasenotifications.admin
) तक पहुंचने के लिए भूमिकाओं की आवश्यकता होती है।
# extension.yaml
...
# Roles assigned to the extension's service account by Firebase during installation
roles:
- role: firebaseauth.admin
reason: Required to update the email address of the user account
- role: firebasenotifications.admin
reason: Required to send a notification that the email address has been updated
...
अपनी extension.yaml
फ़ाइल में, किसी एक्सटेंशन के सेवा खाते को भूमिका निर्दिष्ट करने के लिए निम्नलिखित फ़ील्ड का उपयोग करें:
मैदान | प्रकार | विवरण |
---|---|---|
role (आवश्यक) | डोरी | एक्सटेंशन को संचालित करने के लिए आवश्यक IAM भूमिका का नाम |
reason (आवश्यक) | डोरी | इस कारण का संक्षिप्त विवरण कि एक्सटेंशन को भूमिका द्वारा दी गई पहुंच की आवश्यकता क्यों है पर्याप्त विवरण प्रदान करना सुनिश्चित करें ताकि उपयोगकर्ता समझ सके कि एक्सटेंशन भूमिका का उपयोग कैसे करता है। |
resource (वैकल्पिक) | डोरी | इस भूमिका को किस संसाधन की IAM नीति में जोड़ा जाना चाहिए। यदि छोड़ा गया है, तो डिफ़ॉल्ट समर्थित मान |
भूमिकाओं का दायरा कम करें
एक्सटेंशन को कम से कम विशेषाधिकार के सिद्धांत का पालन करना चाहिए और केवल उन संसाधनों तक पहुंच का अनुरोध करना चाहिए जिनकी उन्हें आवश्यकता है। आप role.resource
फ़ील्ड का उपयोग करके किसी एक्सटेंशन की पहुंच के दायरे को सीमित कर सकते हैं। उदाहरण के लिए, यदि आपके एक्सटेंशन को क्लाउड स्टोरेज बकेट में ऑब्जेक्ट लिखने की आवश्यकता है, तो आप निम्नलिखित भूमिका का उपयोग कर सकते हैं:
roles:
- role: storage.objectCreator
reason: Needed in order to write
resource: projects/${PROJECT_ID}/buckets/${STORAGE_BUCKET}
यह एक्सटेंशन को केवल उस बकेट तक पहुंचने की अनुमति देता है जिसकी उसे आवश्यकता है, न कि उसी प्रोजेक्ट पर अन्य को।
यह फ़ील्ड प्रोजेक्ट्स ( projects/{project_id}
) और स्टोरेज बकेट ( projects/{project_id}/buckets/{bucket_id}
) का समर्थन करता है।
एक्सटेंशन के लिए समर्थित भूमिकाएँ
निम्न तालिका फायरबेस उत्पादों के साथ इंटरैक्ट करने के लिए समर्थित IAM भूमिकाओं को सूचीबद्ध करती है। इस तालिका में अधिकांश भूमिकाएँ फ़ायरबेस उत्पाद-स्तरीय भूमिकाएँ हैं, लेकिन कुछ को सीधे Google क्लाउड (विशेष रूप से, क्लाउड फ़ायरस्टोर और क्लाउड स्टोरेज ) द्वारा प्रबंधित किया जाता है।
फायरबेस उत्पाद
यदि आपका एक्सटेंशन इनके साथ इंटरैक्ट करता है... | इनमें से कोई एक भूमिका असाइन करें... |
---|---|
क्लाउड फायरस्टोर | datastore.importExportAdmin datastore.indexAdmin डेटास्टोर.मालिक datastore.user datastore.viewer |
फायरबेस के लिए क्लाउड स्टोरेज | भंडारण.व्यवस्थापक स्टोरेज.ऑब्जेक्टएडमिन भंडारण.वस्तुनिर्माता स्टोरेज.ऑब्जेक्ट व्यूअर |
फायरबेस ऐप वितरण | firebaseappdistro.admin firebaseappdistro.viewer |
फायरबेस प्रमाणीकरण | firebaseauth.admin firebaseauth.viewer |
फायरबेस ए/बी परीक्षण | firebaseabt.admin firebaseabt.viewer |
फायरबेस क्लाउड मैसेजिंग | firebasenotifications.admin firebasenotifications.viewer |
फायरबेस क्रैशलाइटिक्स | firebasecrashlytics.admin firebasecrashlytics.viewer |
फायरबेस होस्टिंग | firebasehosting.admin firebasehosting.viewer |
फायरबेस इन-ऐप मैसेजिंग | firebaseinappmessageing.admin firebaseinappmessageing.viewer |
फायरबेस एमएल | firebaseml.admin firebaseml.viewer |
फायरबेस प्रदर्शन निगरानी | firebaseperformance.viewer firebaseperformance.reader firebaseperformance.writer |
फायरबेस रीयलटाइम डेटाबेस | firebasedatabase.admin firebasedatabase.viewer |
सुरक्षा नियम | firebaserules.viewer firebaserules.डेवलपर firebaserules.नियोक्ता |
गूगल विश्लेषिकी | firebaseanalytics.admin firebaseanalytics.viewer |
Google क्लाउड उत्पाद
Google क्लाउड दस्तावेज़ में इन भूमिकाओं के बारे में जानें।
यदि आपका एक्सटेंशन इनके साथ इंटरैक्ट करता है... | इनमें से कोई एक भूमिका असाइन करें... |
---|---|
कार्रवाई | क्रियाएँ.व्यवस्थापक क्रियाएँ.दर्शक |
अपिजी | apigee.analyticsAgent apigee.analyticsEditor apigee.analyticsViewer apigee.apiCreator apigee.नियोक्ता apigee.developerAdmin apigee.readOnlyAdmin apigee.synchronizerManager |
ऐप इंजन | ऐपइंजन.ऐपएडमिन ऐपइंजन.ऐपव्यूअर ऐपइंजन.कोडव्यूअर एपइंजन.नियोक्ता ऐपइंजन.सर्विसएडमिन |
ऑटोएमएल | automl.editor automl.भविष्यवक्ता automl.viewer |
बिगक्वेरी | bigquery.connectionAdmin bigquery.connectionUser bigquery.dataEditor bigquery.dataOwner bigquery.dataViewer bigquery.jobUser bigquery.metadataViewer bigquery.readSessionUser bigquery.user |
क्लाउड बिगटेबल | बिगटेबल.रीडर bigtable.user bigtable.viewer |
बिलिंग | बिलिंग.दर्शक |
हैंगआउट चैट | चैट.मालिक चैट.पाठक |
क्लाउड एसेट | क्लाउडएसेट.मालिक Cloudasset.viewer |
क्लाउड डेटा फ़्यूज़न | डेटाफ्यूजन.एडमिन डेटाफ्यूज़न.दर्शक |
क्लाउड डिबगर | क्लाउडडिबगर.एजेंट Clouddebugger.user |
क्लाउड फ़ंक्शंस | Cloudfunctions.invoker क्लाउडफ़ंक्शन.दर्शक |
क्लाउड आईएपी | iap.व्यवस्थापक iap.httpsResourceAccessor iap.settingsAdmin iap.tunnelResourceAccessor |
क्लाउड IoT | Cloudiot.deviceController Cloudiot.संपादक Cloudiot.प्रावधानकर्ता Cloudiot.दर्शक |
स्टैकड्राइवर प्रोफाइलर | क्लाउडप्रोफाइलर.एजेंट क्लाउडप्रोफाइलर.उपयोगकर्ता |
क्लाउड शेड्यूलर | Cloudscheduler.admin Cloudscheduler.jobRunner क्लाउड शेड्यूलर.दर्शक |
क्लाउड सुरक्षा स्कैनर | क्लाउडसिक्योरिटीस्कैनर.एडिटर क्लाउडसिक्योरिटीस्कैनर.रनर क्लाउडसिक्योरिटीस्कैनर.व्यूअर |
क्लाउड एसक्यूएल | क्लाउडएसक्यूएल.क्लाइंट क्लाउडएसक्यूएल.एडिटर क्लाउडएसक्यूएल.व्यूअर |
बादल का पता | क्लाउडट्रेस.एडमिन क्लाउडट्रेस.एजेंट क्लाउडट्रेस.उपयोगकर्ता |
डेटा प्रवाह | dataflow.डेवलपर dataflow.viewer dataflow.कार्यकर्ता |
संवादप्रवाह | डायलॉगफ़्लो.एडमिन डायलॉगफ्लो.क्लाइंट डायलॉगफ्लो.रीडर |
क्लाउड डेटा हानि निवारण | डीएलपी.रीडर dlp.उपयोगकर्ता |
त्रुटि की सूचना देना | errorreporting.user त्रुटिरिपोर्टिंग.दर्शक त्रुटिरिपोर्टिंग.लेखक |
इवेंटआर्क | इवेंटआर्क.प्रकाशक इवेंटआर्क.इवेंटरिसीवर |
क्लाउड फाइलस्टोर | फ़ाइल.संपादक फ़ाइल.दर्शक |
लॉगिंग | लॉगिंग.configWriter लॉगिंग.लॉगराइटर लॉगिंग.प्राइवेटलॉगव्यूअर लॉगिंग.दर्शक |
मशीन लर्निंग इंजन | एमएल.डेवलपर एमएल.जॉबओनर एमएल.मॉडलमालिक एमएल.मॉडलउपयोगकर्ता एमएल.ऑपरेशनमालिक एमएल.दर्शक |
निगरानी | मॉनिटरिंग.संपादक मॉनिटरिंग.मैट्रिकराइटर निगरानी.दर्शक |
एआई नोटबुक | नोटबुक्स.एडमिन नोटबुक.दर्शक |
पब/उप | पबसब.संपादक पबसब.प्रकाशक पबसब.सब्सक्राइबर पबसब.दर्शक |
मेमोरीस्टोर रेडिस | redis.संपादक redis.viewer |
बादल भागो | run.invoker |
स्रोत | स्रोत.पाठक स्रोत.लेखक |
क्लाउड स्पैनर | स्पैनर.डेटाबेसएडमिन स्पैनर.डेटाबेसरीडर स्पैनर.डेटाबेस उपयोगकर्ता स्पैनर.दर्शक |
सेवा उपयोग | serviceusage.apiKeysMetadataViewer |
क्लाउड स्टोरेज ट्रांसफर सेवा | भंडारणस्थानांतरण.उपयोगकर्ता भंडारणस्थानांतरण.दर्शक |
क्लाउड ट्रांसकोडर | ट्रांसकोडर.एडमिन ट्रांसकोडर.दर्शक |
वर्टेक्स एआई | aiplatform.user |
अन्य | Identitytoolkit.admin पहचानटूलकिट.दर्शक |