Firebase के लिए, एपीआई पासकोड इस्तेमाल और मैनेज करने के बारे में जानें

एपीआई कुंजी एक यूनीक स्ट्रिंग होती है. इसका इस्तेमाल, Firebase और Google की सेवाओं के साथ इंटरैक्ट करते समय, अनुरोधों को आपके Firebase प्रोजेक्ट पर भेजने के लिए किया जाता है. इस पेज पर, एपीआई पासकोड के बारे में बुनियादी जानकारी दी गई है. साथ ही, Firebase ऐप्लिकेशन के साथ एपीआई पासकोड का इस्तेमाल और उन्हें मैनेज करने के सबसे सही तरीके बताए गए हैं.

एपीआई कुंजियों और Firebase के बारे में सामान्य जानकारी

Firebase के लिए एपीआई पासकोड, सामान्य एपीआई पासकोड से अलग होते हैं

आम तौर पर, एपीआई पासकोड का इस्तेमाल जिस तरह से किया जाता है उससे अलग, Firebase सेवाओं के लिए एपीआई पासकोड का इस्तेमाल, बैकएंड संसाधनों के ऐक्सेस को कंट्रोल करने के लिए नहीं किया जाता है. ऐसा सिर्फ़ Firebase Security Rules (यह कंट्रोल करने के लिए कि एंड यूज़र कौनसे संसाधनों को ऐक्सेस कर सकते हैं) और Firebase App Check (यह कंट्रोल करने के लिए कि ऐप्लिकेशन कौनसे संसाधनों को ऐक्सेस कर सकते हैं) के साथ किया जा सकता है.

आम तौर पर, आपको एपीआई कुंजियों की सुरक्षा का पूरा ध्यान रखना होता है. उदाहरण के लिए, वॉल्ट सेवा का इस्तेमाल करके या कुंजियों को एनवायरमेंट वैरिएबल के तौर पर सेट करके. हालांकि, Firebase की सेवाओं के लिए एपीआई कुंजियों को कोड में शामिल किया जा सकता है या कॉन्फ़िगरेशन फ़ाइलों में चेक-इन किया जा सकता है.

Firebase की सेवाओं के लिए एपीआई कुंजियों को कोड में शामिल करना सुरक्षित होता है. हालांकि, आपको इनकी समीक्षा करनी चाहिए और इन पर ज़रूरी पाबंदियां और सीमाएं लागू करनी चाहिए.

एपीआई कुंजियां बनाना

एक Firebase प्रोजेक्ट में कई एपीआई कुंजियां हो सकती हैं. हालांकि, हर एपीआई कुंजी को सिर्फ़ एक Firebase प्रोजेक्ट से जोड़ा जा सकता है.

Firebase ऐप्लिकेशन के लिए, Firebase की ओर से अपने-आप बनाए गए एपीआई कुंजियां

जब इनमें से कोई कार्रवाई की जाती है, तो Firebase आपके प्रोजेक्ट के लिए एपीआई पासकोड अपने-आप बना देता है:

  • Firebase प्रोजेक्ट बनाएं > Browser key अपने-आप बन गया
  • Firebase Apple ऐप्लिकेशन बनाएं > iOS key अपने-आप बन गया
  • Firebase Android ऐप्लिकेशन बनाएं > Android key अपने-आप बन गया

Google Cloud कंसोल में अपनी एपीआई कुंजियां भी बनाई जा सकती हैं. उदाहरण के लिए, डेवलपमेंट या डीबग करने के लिए. इस बारे में ज़्यादा जानें कि इस पेज पर बाद में यह सुझाव कब दिया जा सकता है.

अपनी एपीआई कुंजियां ढूंढना

Google Cloud कंसोल में एपीआई और सेवाएं > क्रेडेंशियल पैनल में जाकर, अपने प्रोजेक्ट के सभी एपीआई पासकोड देखे और मैनेज किए जा सकते हैं.

आपको यह भी पता चल सकता है कि कौनसी एपीआई पासकोड, किसी Firebase ऐप्लिकेशन से अपने-आप मैच हो गई है. इसके लिए, यहां जाएं. डिफ़ॉल्ट रूप से, आपके प्रोजेक्ट के सभी Firebase ऐप्लिकेशन एक ही प्लैटफ़ॉर्म के लिए (Apple बनाम Android बनाम वेब) एक ही एपीआई कुंजी का इस्तेमाल करेंगे.

  • Firebase Apple ऐप्लिकेशन — अपने-आप मैच होने वाली एपीआई पासकोड को Firebase कॉन्फ़िगरेशन फ़ाइल, GoogleService-Info.plist में API_KEY फ़ील्ड में ढूंढें.

  • Firebase Android ऐप्लिकेशन — अपने-आप मैच होने वाली एपीआई कुंजी को Firebase कॉन्फ़िगरेशन फ़ाइल, google-services.json में current_key फ़ील्ड में ढूंढें.

  • Firebase वेब ऐप्लिकेशन — Firebase कॉन्फ़िगरेशन ऑब्जेक्ट में, अपने-आप मैच होने वाला एपीआई पासकोड ढूंढें. यह apiKey फ़ील्ड में मौजूद होता है.

एपीआई पासकोड का इस्तेमाल करना

Firebase के लिए एपीआई कुंजियों का इस्तेमाल, Firebase या Google की सेवाओं के साथ इंटरैक्ट करते समय आपके Firebase प्रोजेक्ट की पहचान करने के लिए किया जाता है. खास तौर पर, इनका इस्तेमाल कोटा और बिलिंग के लिए, एपीआई के अनुरोधों को आपके प्रोजेक्ट से जोड़ने के लिए किया जाता है. ये सार्वजनिक डेटा को ऐक्सेस करने के लिए भी काम आते हैं.

ज़्यादातर डेवलपर और इस्तेमाल के उदाहरणों के लिए, आपको इन एपीआई कुंजियों के साथ सीधे तौर पर इंटरैक्ट करने की ज़रूरत नहीं होती. इसके बजाय, जब आपका ऐप्लिकेशन किसी ऐसे Firebase API को कॉल करता है जिसके लिए मोबाइल या वेब क्लाइंट से मिली एपीआई कुंजी की ज़रूरत होती है, तो आपका ऐप्लिकेशन अपने-आप आपके ऐप्लिकेशन के Firebase कॉन्फ़िगरेशन में एपीआई कुंजी खोजेगा. जब आपने अपने ऐप्लिकेशन को Firebase से कनेक्ट किया था, तब यह कॉन्फ़िगरेशन आपके ऐप्लिकेशन के कोडबेस में जोड़ दिया गया था.

ध्यान दें कि Firebase के विकल्पों या एनवायरमेंट वैरिएबल का इस्तेमाल करके, अपने ऐप्लिकेशन में ऐप्लिकेशन की एपीआई कुंजी दी जा सकती है.

इसके अलावा, Firebase सेवाओं के लिए कुछ REST API के लिए, आपको एपीआई कुंजी की वैल्यू को कॉल में क्वेरी पैरामीटर के तौर पर साफ़ तौर पर पास करना पड़ सकता है. इस उदाहरण में, Firebase Authentication एपीआई का इस्तेमाल करके अनुरोध करने का तरीका बताया गया है:

https://identitytoolkit.googleapis.com/v1/accounts:signInWithCustomToken?key=API_KEY

एपीआई कुंजियों पर सही पाबंदियां लागू करें और उनकी समीक्षा करें (सुझाया गया)

हालांकि, Firebase सेवाओं के लिए एपीआई कुंजी को सीक्रेट के तौर पर रखना ज़रूरी नहीं है, लेकिन आपको इस सेक्शन में बताई गई पाबंदियां और सीमाएं देखनी और लागू करनी चाहिए.

उन एपीआई की समीक्षा करें जिन्हें Firebase API कुंजियों के लिए, अनुमति वाली सूची में अपने-आप जोड़ दिया गया है

जब Firebase आपके प्रोजेक्ट में कोई एपीआई पासकोड बनाता है, तो हम उस पासकोड में "एपीआई से जुड़ी पाबंदियां" अपने-आप जोड़ देते हैं. अनुमति वाली इस सूची में, Firebase से जुड़े ऐसे एपीआई जोड़े जाते हैं जिनके लिए क्लाइंट को कॉल के साथ एपीआई पासकोड देना होता है. ध्यान दें कि Firebase की सेवाओं का इस्तेमाल करने के लिए ज़रूरी ज़्यादातर एपीआई को, आपके एपीआई पासकोड के लिए अनुमति वाली सूची में शामिल करने की ज़रूरत नहीं होती.

Firebase, Firebase की सभी सेवाओं के लिए ज़रूरी एपीआई जोड़ता है. इसलिए, एपीआई कुंजी के लिए अनुमति वाली सूची में ऐसे प्रॉडक्ट के एपीआई शामिल हो सकते हैं जिनका इस्तेमाल नहीं किया जाता. एपीआई को अनुमति वाली सूची से हटाया जा सकता है. हालांकि, आपको यह पक्का करना होगा कि Firebase और Firebase की उन सेवाओं के लिए ज़रूरी एपीआई न हटाए जाएं जिनका इस्तेमाल किया जा रहा है. इसके लिए, Firebase से जुड़े उन एपीआई की सूची देखें जिन्हें हर सेवा / प्रॉडक्ट के लिए अनुमति वाली सूची में शामिल करना ज़रूरी है. ऐसा न करने पर, Firebase सेवाओं को कॉल करते समय आपको गड़बड़ियां मिलेंगी.

अगर पासवर्ड पर आधारित Authentication का इस्तेमाल किया जाता है, तो कोटा बढ़ाएं

अगर आपने पासवर्ड आधारित Firebase Authentication का इस्तेमाल किया है और किसी व्यक्ति को आपकी एपीआई कुंजी मिल जाती है, तो वह आपके Firebase प्रोजेक्ट के डेटाबेस या Cloud Storage डेटा को ऐक्सेस नहीं कर पाएगा. ऐसा तब तक होगा, जब तक इस डेटा को Firebase Security Rules से सुरक्षित रखा जाता है. हालांकि, वे आपकी एपीआई पासकोड का इस्तेमाल करके, Firebase के पुष्टि करने वाले एंडपॉइंट को ऐक्सेस कर सकते हैं. साथ ही, आपके प्रोजेक्ट के लिए पुष्टि करने के अनुरोध कर सकते हैं.

ऐसा हो सकता है कि कोई व्यक्ति ब्रूट फ़ोर्स अटैक करने के लिए, एपीआई कुंजी का गलत इस्तेमाल करे. इससे बचने के लिए, identitytoolkit.googleapis.com एंडपॉइंट के डिफ़ॉल्ट कोटे को कम किया जा सकता है. इससे आपके ऐप्लिकेशन पर सामान्य ट्रैफ़िक की उम्मीदों को पूरा किया जा सकेगा. ध्यान रखें कि अगर आपने इस कोटे को कम कर दिया है और आपके ऐप्लिकेशन पर अचानक उपयोगकर्ताओं की संख्या बढ़ जाती है, तो आपको साइन-इन करने से जुड़ी गड़बड़ियां मिल सकती हैं. ऐसा तब तक होगा, जब तक आप कोटे को बढ़ा नहीं देते. Google Cloud कंसोल में जाकर, अपने प्रोजेक्ट के एपीआई कोटा बदले जा सकते हैं.

Firebase के अलावा किसी अन्य सेवा के लिए, अलग से प्रतिबंधित एपीआई कुंजियों का इस्तेमाल करें

आम तौर पर, Firebase सेवाओं के लिए इस्तेमाल किए जाने वाले एपीआई पासकोड को गोपनीय रखने की ज़रूरत नहीं होती. हालांकि, आपको उन एपीआई पासकोड के लिए कुछ अतिरिक्त सावधानियां बरतनी चाहिए जिनका इस्तेमाल अन्य Google Cloud एपीआई के साथ किया जाता है.

अगर किसी ऐसे Google Cloud API का इस्तेमाल किया जाता है जो Firebase सेवा / प्रॉडक्ट के लिए नहीं है, तो हमारा सुझाव है कि उन एपीआई के साथ इस्तेमाल करने के लिए, अलग से एपीआई पासकोड बनाएं. साथ ही, उन पर पाबंदियां लगाएं. अगर एपीआई, बिलिंग वाली Google Cloud सेवा के लिए है, तो यह खास तौर पर ज़रूरी है.

उदाहरण के लिए, अगर iOS पर Firebase ML और Cloud Vision API का इस्तेमाल किया जाता है, तो आपको अलग-अलग एपीआई पासकोड बनाने चाहिए. इनका इस्तेमाल सिर्फ़ Cloud Vision API को ऐक्सेस करने के लिए किया जाना चाहिए.

Firebase के अलावा अन्य एपीआई के लिए, पाबंदियों वाली अलग-अलग एपीआई कुंजियों का इस्तेमाल करके, ज़रूरत पड़ने पर कुंजियों को रोटेट या बदला जा सकता है. साथ ही, Firebase सेवाओं के इस्तेमाल में कोई रुकावट डाले बिना, एपीआई कुंजियों पर अतिरिक्त पाबंदियां लगाई जा सकती हैं.

एनवायरमेंट के हिसाब से एपीआई पासकोड इस्तेमाल करना (सुझाया गया)

अगर आपने अलग-अलग एनवायरमेंट, जैसे कि स्टेजिंग और प्रोडक्शन के लिए अलग-अलग Firebase प्रोजेक्ट सेट अप किए हैं, तो यह ज़रूरी है कि हर ऐप्लिकेशन इंस्टेंस, अपने Firebase प्रोजेक्ट से इंटरैक्ट करे. उदाहरण के लिए, आपके स्टेजिंग ऐप्लिकेशन इंस्टेंस को कभी भी प्रोडक्शन Firebase प्रोजेक्ट से कम्यूनिकेट नहीं करना चाहिए. इसका यह भी मतलब है कि आपके स्टेजिंग ऐप्लिकेशन को, स्टेजिंग Firebase प्रोजेक्ट से जुड़े एपीआई कुंजियों का इस्तेमाल करना होगा.

डेवलपमेंट से लेकर स्टेजिंग और प्रोडक्शन तक, कोड में किए गए बदलावों को प्रमोट करने से जुड़ी समस्याओं को कम करने के लिए, कोड में एपीआई कुंजियां शामिल करने के बजाय, उन्हें एनवायरमेंट वैरिएबल के तौर पर सेट करें या उन्हें कॉन्फ़िगरेशन फ़ाइल में शामिल करें.

ध्यान दें कि अगर आपको डेवलपमेंट के लिए Firebase Local Emulator Suite के साथ-साथ Firebase ML का इस्तेमाल करना है, तो आपको सिर्फ़ डीबग करने के लिए एपीआई पासकोड बनाना और उसका इस्तेमाल करना होगा. इस तरह की कुंजी बनाने के निर्देश, Firebase ML दस्तावेज़ में दिए गए हैं.

अक्सर पूछे जाने वाले सवाल और समस्या हल करना

अक्सर पूछे जाने वाले सवाल

समस्या का हल