किसी एक्सटेंशन की तय कार्रवाइयां करने के लिए, Firebase हर इंस्टेंस को मंज़ूरी देता है ने प्रोजेक्ट और उसके डेटा तक सीमित ऐक्सेस सेवा खाता.
सेवा खाता क्या होता है?
सेवा खाता एक विशेष प्रकार का Google उपयोगकर्ता खाता है. यह एक ऐसा सिस्टम है जो Google सेवाओं को अधिकृत एपीआई कॉल कर सकते हैं.
एक्सटेंशन इंस्टॉल करने के दौरान, Firebase इनके लिए एक सेवा खाता बनाता है एक्सटेंशन भी है. एक्सटेंशन के इंस्टॉल किए गए हर इंस्टेंस का अपना सेवा खाता. अगर कोई एक्सटेंशन इंस्टेंस अनइंस्टॉल किया गया है, तो Firebase एक्सटेंशन का सेवा खाता.
एक्सटेंशन के लिए बनाए गए सेवा खाते इस फ़ॉर्मैट में होते हैं:
ext-extension-instance-id@project-id.iam.gserviceaccount.com
Firebase,
खास भूमिकाएं (अनुमतियों के बंडल)
एक्सटेंशन के सेवा खाते में बदल सकता है. एक्सटेंशन बनाते समय, आपको
यह तय कर सकते हैं कि आपके एक्सटेंशन को किन भूमिकाओं की ज़रूरत है. इसके बाद,
वे भूमिकाएं और वजहें जिनके चलते आपके एक्सटेंशन को आपके extension.yaml
में इन भूमिकाओं की ज़रूरत है
फ़ाइल (इस पेज के सबसे नीचे दिया गया उदाहरण देखें).
तय करें कि आपके एक्सटेंशन को किन भूमिकाओं की ज़रूरत है
एक्सटेंशन बनाते समय, यह तय किया जाता है कि एक्सटेंशन को चलाने की ज़रूरत है.
इंस्टॉल करने के दौरान, Firebase सीएलआई, उपयोगकर्ता को हर भूमिका के लिए दिया गया ऐक्सेस लेवल है. अगर आपका एक्सटेंशन, इससे ज़्यादा भूमिकाओं का अनुरोध करता है तो उपयोगकर्ताओं के इसे इंस्टॉल करने की संभावना कम हो जाती है.
पता लगाएं कि आपका एक्सटेंशन किसी प्रॉडक्ट के साथ इंटरैक्ट करता है या नहीं:
अगर आपका एक्सटेंशन किसी प्रॉडक्ट के साथ इंटरैक्ट करता है, तो आपको उस प्रॉडक्ट तक आपके एक्सटेंशन की पहुंच.
उदाहरण के लिए, अगर आपका एक्सटेंशन किसी रीयल टाइम डेटाबेस के इंस्टेंस पर डेटा लिखता है, तो तो आपके एक्सटेंशन को रीयलटाइम डेटाबेस भूमिका की ज़रूरत होती है (खास तौर पर,
firebasedatabase.admin
).अगर आपका एक्सटेंशन किसी प्रॉडक्ट सबमिट कर रहे हैं, तो आपके एक्सटेंशन को संबंधित भूमिका की ज़रूरत नहीं है उस प्रॉडक्ट के साथ.
उदाहरण के लिए, अगर आपका एक्सटेंशन किसी रीयलटाइम डेटाबेस में लिखने पर ट्रिगर होता है इंस्टेंस (लेकिन डेटाबेस में कुछ नहीं लिखता) का इस्तेमाल करता है, तो आपका एक्सटेंशन को रीयल टाइम डेटाबेस भूमिका की ज़रूरत नहीं होती.
आपका एक्सटेंशन किन प्रॉडक्ट पर इंटरैक्ट करता है, यह पता लगाने के बाद यह तय करना होगा कि उस खास इंटरैक्शन के लिए किस भूमिका की ज़रूरत है. कुछ सूचनाएं मिल रही हैं कार्रवाई या कार्रवाइयों के सेट के आधार पर, प्रॉडक्ट अलग-अलग भूमिकाएं देते हैं प्रदर्शन किया.
उदाहरण के लिए, मान लें कि आपका एक्सटेंशन, Cloud Storage के साथ इंटरैक्ट करता है बकेट.
storage.objectCreator
की भूमिका का इस्तेमाल करके, एक्सटेंशन ये काम कर पाएगा Cloud Storage बकेट में कोई ऑब्जेक्ट बनाएं, लेकिन वह भूमिका एक्सटेंशन का इस्तेमाल करके, ऑब्जेक्ट को देखा, मिटाया या ओवरराइट किया जा सकता है. एक्सटेंशन को चालू करने के लिए करने के लिए, आपको इसके बजाय,storage.objectAdmin
भूमिका का इस्तेमाल करें.
यहां दी गई सभी जानकारी देखने के लिए, इस पेज पर सबसे नीचे दिए गए सेक्शन पर जाएं इस्तेमाल की जा सकती हैं जिन्हें एक्सटेंशन की सेवा देने के लिए इस्तेमाल किया जा सकता है जोड़ें. हर भूमिका के ब्यौरे और दी गई अनुमतियों के बारे में जानने के लिए, यहां जाएं Firebase से जुड़ा दस्तावेज़ या Google Cloud के दस्तावेज़. Google Cloud Console में, भूमिकाएं भी देखी जा सकती हैं आईएएम और एडमिन पैनल.
किसी एक्सटेंशन को भूमिकाएं असाइन करने का तरीका
roles
सेक्शन में, आपके एक्सटेंशन के काम करने के लिए ज़रूरी IAM भूमिकाओं की सूची बनाएं
आपकी extension.yaml
फ़ाइल में से.
यहां एक ऐसे एक्सटेंशन का उदाहरण दिया गया है जो दिए गए Firebase रीयल टाइम डेटाबेस का पाथ. ट्रिगर किए जाने पर, एक्सटेंशन एक उपयोगकर्ता खाते को अपडेट कर देता है ईमेल (Firebase से पुष्टि करने की सुविधा के साथ इंटरैक्शन) और एक सूचना (इंटरैक्शन) भेजता है से लिंक किया गया है). इन बातों पर ध्यान दें:
- भले ही एक्सटेंशन किसी रीयलटाइम डेटाबेस इवेंट से ट्रिगर करता है, लेकिन
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 (ज़रूरी है) |
स्ट्रिंग | उस आईएएम की भूमिका का नाम, जो चलाने के लिए एक्सटेंशन |
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 और क्लाउड स्टोरेज).
Firebase प्रॉडक्ट
अगर आपका एक्सटेंशन इनसे इंटरैक्ट करता है... | इनमें से कोई एक भूमिका असाइन करें... |
---|---|
Cloud Firestore |
datastore.ImportExportAdmin datastore.indexAdmin datastore.owner datastore.user datastore.viewer |
Firebase के लिए Cloud Storage |
Storage.admin Storage.objectAdmin Storage.objectCreator Storage.objectViewer |
Firebase App Distribution |
firebaseappdistro.admin firebaseappdistro.viewer |
Firebase से पुष्टि करना |
firebaseauth.admin firebaseauth.viewer |
Firebase A/B टेस्टिंग |
firebaseabt.admin firebaseabt.viewer |
Firebase क्लाउड से मैसेज |
firebaseसूचना.admin firebaseNotifications.viewer |
Firebase Crashlytics |
firebasecrashlytics.admin firebasecrashlytics.viewer |
Firebase होस्टिंग |
firebasehosting.admin firebasehosting.viewer |
Firebase इन-ऐप्लिकेशन मैसेज |
firebaseinapp Messaging.admin firebaseinappMessages.viewer |
Firebase ML |
firebaseml.admin firebaseml.viewer |
Firebase प्रदर्शन मॉनिटर करना |
firebaseperformance.viewer firebaseperformance.reader firebaseperformance.write |
Firebase रीयल टाइम डेटाबेस |
firebasedatabase.admin firebasedatabase.Viewer |
सुरक्षा के नियम |
firebaserules.viewer firebaserules.developer firebaserules.deployer |
Google Analytics |
firebaseanalytics.admin firebaseanalytics.viewer |
Google Cloud के प्रॉडक्ट
इसमें इन भूमिकाओं के बारे में जानें: Google Cloud के दस्तावेज़.
अगर आपका एक्सटेंशन इनसे इंटरैक्ट करता है... | इनमें से कोई एक भूमिका असाइन करें... |
---|---|
कार्रवाइयां |
Actions.एडमिन कार्रवाइयां.दर्शक |
Apigee |
apigee.analyticsAgent apigee.analyticsEditor apigee.analyticsViewer apigee.apiCreator apigee.deployer apigee.developerAdmin apigee.readOnlyAdmin apigee.syncrManager |
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 |
स्टैकड्राइवर प्रोफ़ाइलर |
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 फ़ाइल व्यूअर |
लॉगिंग |
Log.configWriter लॉगिंग.logWriter लॉगिंग.privateLogViewer Loging.viewer |
मशीन लर्निंग इंजन |
ML.developer ml.jobOwner ml.modelOwner ml.modelUser ml.operationOwner ml.viewer |
निगरानी |
मॉनिटरिंग.एडिटर मॉनिटरिंग.metricWriter मॉनिटरिंग.व्यूअर |
एआई नोटबुक |
नोटबुक.एडमिन notebooks.viewer |
Pub/Sub |
pubsub.Editor pubsub.publisher pubsub.subscriber pubsub.viewer |
Memorystore रेडिस |
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 |
अन्य |
आइडेंटिटी टूलकिट.एडमिन आइडेंटिटी टूलकिट.व्यूअर |