किसी एक्सटेंशन की तय कार्रवाइयां करने के लिए, Firebase हर इंस्टेंस को मंज़ूरी देता है ने प्रोजेक्ट और उसके डेटा तक सीमित ऐक्सेस सेवा खाता.
सेवा खाता क्या होता है?
सेवा खाता एक विशेष प्रकार का Google उपयोगकर्ता खाता है. यह एक ऐसा सिस्टम है जो Google सेवाओं को अधिकृत एपीआई कॉल कर सकते हैं.
एक्सटेंशन इंस्टॉल करने के दौरान, Firebase इनके लिए एक सेवा खाता बनाता है एक्सटेंशन भी है. किसी एक्सटेंशन के इंस्टॉल किए गए हर इंस्टेंस का अपना सेवा खाता होता है. अगर किसी एक्सटेंशन इंस्टेंस को अनइंस्टॉल किया जाता है, तो Firebase उस एक्सटेंशन का सेवा खाता मिटा देता है.
एक्सटेंशन के लिए बनाए गए सेवा खाते इस फ़ॉर्मैट में होते हैं:
ext-extension-instance-id@project-id.iam.gserviceaccount.com
Firebase, एक्सटेंशन के सेवा खाते को खास भूमिकाएं (अनुमतियों के बंडल) असाइन करके, किसी प्रोजेक्ट और उसके डेटा के लिए एक्सटेंशन के ऐक्सेस को सीमित करता है. एक्सटेंशन बनाते समय, आपको
यह तय कर सकते हैं कि आपके एक्सटेंशन को किन भूमिकाओं की ज़रूरत है. इसके बाद,
वे भूमिकाएं और वजहें जिनके चलते आपके एक्सटेंशन को आपके extension.yaml
में इन भूमिकाओं की ज़रूरत है
फ़ाइल (इस पेज के सबसे नीचे दिया गया उदाहरण देखें).
यह तय करना कि आपके एक्सटेंशन को किन भूमिकाओं की ज़रूरत है
एक्सटेंशन बनाते समय, यह तय किया जाता है कि एक्सटेंशन को चलाने की ज़रूरत है.
इंस्टॉल करने के दौरान, Firebase सीएलआई, उपयोगकर्ता से कहा जाता है कि वह हर भूमिका के लिए दिया गया ऐक्सेस लेवल है. अगर आपका एक्सटेंशन, इससे ज़्यादा भूमिकाओं का अनुरोध करता है तो उपयोगकर्ताओं के इसे इंस्टॉल करने की संभावना कम हो जाती है.
पता लगाएं कि आपका एक्सटेंशन किसी प्रॉडक्ट के साथ इंटरैक्ट करता है या नहीं:
अगर आपका एक्सटेंशन किसी प्रॉडक्ट के साथ इंटरैक्ट करता है, तो आपको अपने एक्सटेंशन को उस प्रॉडक्ट का ऐक्सेस देना होगा.
उदाहरण के लिए, अगर आपका एक्सटेंशन किसी Realtime Database इंस्टेंस में डेटा लिखता है, तो आपके एक्सटेंशन को Realtime Database भूमिका की ज़रूरत है (खास तौर पर,
firebasedatabase.admin
).अगर आपका एक्सटेंशन किसी प्रॉडक्ट से ट्रिगर होने वाले इवेंट को सिर्फ़ सुनता है, तो आपके एक्सटेंशन को उस प्रॉडक्ट से जुड़ी भूमिका नहीं चाहिए.
उदाहरण के लिए, अगर आपका एक्सटेंशन किसी Realtime Database इंस्टेंस में डेटा लिखने पर ट्रिगर होता है (लेकिन डेटाबेस में कुछ नहीं लिखता), तो आपके एक्सटेंशन को Realtime Database भूमिका की ज़रूरत नहीं है.
आपका एक्सटेंशन किन प्रॉडक्ट पर इंटरैक्ट करता है, यह पता लगाने के बाद यह तय करना होगा कि उस खास इंटरैक्शन के लिए किस भूमिका की ज़रूरत है. कुछ सूचनाएं मिल रही हैं कार्रवाई या कार्रवाइयों के सेट के आधार पर, प्रॉडक्ट अलग-अलग भूमिकाएं देते हैं प्रदर्शन किया.
उदाहरण के लिए, मान लें कि आपका एक्सटेंशन किसी Cloud Storage बकेट के साथ इंटरैक्ट करता है.
storage.objectCreator
भूमिका की मदद से, एक्सटेंशन किसी Cloud Storage बकेट में ऑब्जेक्ट बनाएगा. हालांकि, इस भूमिका की मदद से, एक्सटेंशन ऑब्जेक्ट को न तो देख पाएगा, न मिटा पाएगा और न ही उसमें बदलाव कर पाएगा. एक्सटेंशन को ये अतिरिक्त कार्रवाइयां करने की अनुमति देने के लिए, आपको इसके लिएstorage.objectAdmin
भूमिका असाइन करनी होगी.
इस पेज पर सबसे नीचे दिए गए सेक्शन में, काम करने वाली उन सभी भूमिकाओं के बारे में जानें जिन्हें अपने एक्सटेंशन के सेवा खाते को असाइन किया जा सकता है. हर भूमिका के ब्यौरे और दी गई अनुमतियों के बारे में जानने के लिए, Firebase दस्तावेज़ या Google Cloud दस्तावेज़ पर जाएं. Google Cloud Console में, भूमिकाएं भी देखी जा सकती हैं आईएएम और एडमिन पैनल.
किसी एक्सटेंशन को भूमिकाएं असाइन करने का तरीका
roles
सेक्शन में, आपके एक्सटेंशन के काम करने के लिए ज़रूरी IAM भूमिकाओं की सूची बनाएं
आपकी extension.yaml
फ़ाइल में से.
यहां एक ऐसे एक्सटेंशन का उदाहरण दिया गया है जो दिए गए Firebase Realtime Database पाथ. ट्रिगर होने पर, एक्सटेंशन उपयोगकर्ता के खाते के ईमेल पते को अपडेट करता है (Firebase Authentication के साथ इंटरैक्शन) और सूचना भेजता है (Firebase Cloud Messaging के साथ इंटरैक्शन). इन बातों पर ध्यान दें:
- हालांकि, यह एक्सटेंशन किसी Realtime Database इवेंट से ट्रिगर करता है, लेकिन
सूची में
firebasedatabase.admin
की भूमिका नहीं है (सुनना इंटरैक्शन). - एक्सटेंशन, Authentication और Cloud Messaging के साथ इंटरैक्ट करता है, इसलिए
एक्सटेंशन को उन प्रॉडक्ट को ऐक्सेस करने के लिए भूमिकाओं की ज़रूरत है (
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 (ज़रूरी है) |
स्ट्रिंग | उस आईएएम की भूमिका का नाम, जो चलाने के लिए एक्सटेंशन |
reason (ज़रूरी है) |
स्ट्रिंग |
एक्सटेंशन को ऐक्सेस की ज़रूरत क्यों है, इस बारे में कम शब्दों में जानकारी भूमिका ने अनुमति दी है ज़रूरत के मुताबिक जानकारी दें, ताकि उपयोगकर्ता यह समझ सके कि एक्सटेंशन, भूमिका का इस्तेमाल कैसे करता है. |
resource (ज़रूरी नहीं) |
स्ट्रिंग |
इस भूमिका को किस संसाधन की IAM नीति में जोड़ा जाना चाहिए. अगर इसे छोड़ दिया जाता है, तो
डिफ़ॉल्ट रूप से
|
भूमिकाओं का दायरा कम करना
एक्सटेंशन को कम से कम अधिकारों के सिद्धांत का पालन करना चाहिए. साथ ही, सिर्फ़ उन रिसॉर्स के ऐक्सेस का अनुरोध करना चाहिए जिनकी उन्हें ज़रूरत है.
role.resource
फ़ील्ड का इस्तेमाल करके, किसी एक्सटेंशन के ऐक्सेस को सीमित किया जा सकता है.
उदाहरण के लिए, अगर आपके एक्सटेंशन को Cloud Storage बकेट में ऑब्जेक्ट लिखने की ज़रूरत है,
तो यह काम किया जा सकता है:
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}
).
एक्सटेंशन के लिए इस्तेमाल की जा सकने वाली भूमिकाएं
यहां दी गई टेबल में, Firebase के साथ इंटरैक्ट करने के लिए इस्तेमाल की जा सकने वाली IAM भूमिकाओं की सूची दी गई है प्रॉडक्ट. इस टेबल में मौजूद ज़्यादातर भूमिकाएं, Firebase प्रॉडक्ट-लेवल की भूमिकाएं हैं. हालांकि, कुछ भूमिकाओं को सीधे Google Cloud मैनेज करता है. खास तौर पर, Cloud Firestore और Cloud Storage.
Firebase के प्रॉडक्ट
अगर आपका एक्सटेंशन इनके साथ इंटरैक्ट करता है, तो... | इनमें से कोई एक भूमिका असाइन करें... |
---|---|
Cloud Firestore |
datastore.ImportExportAdmin datastore.indexAdmin datastore.owner datastore.user datastore.viewer |
Cloud Storage for Firebase |
Storage.admin Storage.objectAdmin Storage.objectCreator Storage.objectViewer |
Firebase App Distribution |
firebaseappdistro.admin firebaseappdistro.viewer |
Firebase Authentication |
firebaseauth.admin firebaseauth.viewer |
Firebase A/B Testing |
firebaseabt.admin firebaseabt.viewer |
Firebase Cloud Messaging |
firebaseसूचना.admin firebaseNotifications.viewer |
Firebase Crashlytics |
firebasecrashlytics.admin firebasecrashlytics.viewer |
Firebase Hosting |
firebasehosting.admin firebasehosting.viewer |
Firebase In-App Messaging |
firebaseinappmessaging.admin firebaseinappmessaging.viewer |
Firebase ML |
firebaseml.admin firebaseml.viewer |
Firebase Performance Monitoring |
firebaseperformance.viewer firebaseperformance.reader firebaseperformance.write |
Firebase Realtime Database |
firebasedatabase.admin firebasedatabase.Viewer |
सुरक्षा के नियम |
firebaserules.viewer firebaserules.developer firebaserules.deployer |
Google Analytics |
firebaseanalytics.admin firebaseanalytics.viewer |
Google Cloud के प्रॉडक्ट
इसमें इन भूमिकाओं के बारे में जानें: Google Cloud के दस्तावेज़.
अगर आपका एक्सटेंशन इनसे इंटरैक्ट करता है... | इनमें से कोई एक भूमिका असाइन करें... |
---|---|
कार्रवाइयां |
actions.Admin actions.Viewer |
Apigee |
apigee.analyticsAgent apigee.analyticsEditor apigee.analyticsViewer apigee.apiCreator apigee.deployer apigee.developerAdmin apigee.readOnlyAdmin apigee.synchronizerManager |
App Engine |
appengine.appAdmin appengine.appViewer appengine.codeViewer appengine.Deployer appengine.serviceAdmin |
AutoML |
Automl.Editor Automl.predictor Automl.viewer |
BigQuery |
bigquery.connectionAdmin bigquery.कनेक्शन उपयोगकर्ता bigquery.dataEditor bigquery.dataOwner bigquery.dataViewer bigquery.jobUser bigquery.metadataViewer bigquery.readsessionUser bigquery.user |
Cloud Bigtable |
Bigtable.reader Bigtable.user Bigtable.viewer |
बिलिंग | Billing.viewer |
Hangout चैट |
chat.owner चैट.रीडर |
क्लाउड ऐसेट |
Cloudasset.owner Cloudasset.viewer |
Cloud Data Fusion |
datafusion.admin datafusion.viewer |
Cloud Debugger |
Clouddebugger.agent Clouddebugger.user |
Cloud Functions |
CloudFunctions.invoker CloudFunctions.viewer |
क्लाउड आईएपी |
iap.admin iap.httpsResourceAccessor iap.settingsAdmin iap.tunnelResourceAccessor |
Cloud IoT |
Cloudiot.deviceController Cloudiot.Editor Cloudiot.provisioner Cloudiot.viewer |
Stackdriver Profiler |
Cloudprofiler.agent Cloudprofiler.user |
Cloud Scheduler |
CloudScheduler.admin CloudScheduler.jobRunner CloudScheduler.viewer |
Cloud Security Scanner |
Cloudsecurityscanner.संपादक Cloudsecurityscanner.बैकअप पूरा करने वाले Cloudsecurityscanner.viewer |
Cloud SQL |
Cloudsql.client Cloudsql.Editor Cloudsql.viewer |
Cloud Trace |
Cloudtrace.admin Cloudtrace.agent Cloudtrace.user |
डेटाफ़्लो |
dataflow.developer dataflow.viewer dataflow.worker |
Dialogflow |
डायलॉगflow.admin डायलॉगflow.client डायलॉगflow.reader |
Cloud का डेटा लीक होने की रोकथाम |
dlp.reader dlp.user |
रिपोर्ट करते समय गड़बड़ी हुई |
errorReporting.user errorReporting.viewer गड़बड़ी की रिपोर्ट करने.में लिखने की सुविधा |
Eventarc |
eventarc.publisher eventarc.eventReceiver |
Cloud Filestore |
file.Editor फ़ाइल व्यूअर |
लॉगिंग |
logging.configWriter logging.logWriter logging.privateLogViewer logging.viewer |
मशीन लर्निंग इंजन |
ml.developer ml.jobOwner ml.modelOwner ml.modelUser ml.operationOwner ml.viewer |
निगरानी |
monitoring.editor monitoring.metricWriter monitoring.viewer |
एआई नोटबुक |
notebooks.admin notebooks.viewer |
Pub/Sub |
pubsub.Editor pubsub.publisher pubsub.subscriber pubsub.viewer |
Memorystore Redis |
redis.Editor redis.viewer |
Cloud Run | Run.invoker |
स्रोत |
सोर्स.रीडर source.author |
Cloud Spanner |
spanner.databaseAdmin spanner.databaseReader spanner.databaseUser spanner.viewer |
सेवा उपयोग | serviceusage.apiKeysMetadataViewer |
Cloud Storage की ट्रांसफ़र सेवा |
Storagetransfer.user स्टोरेज ट्रांसफ़र.व्यूअर |
क्लाउड ट्रांसकोडर |
ट्रांसकोडर.एडमिन ट्रांसकोडर.viewer |
Vertex AI | aiplatform.user |
अन्य |
आइडेंटिटी टूलकिट.एडमिन आइडेंटिटी टूलकिट.व्यूअर |