Catch up on highlights from Firebase at Google I/O 2023. Learn more

अपने फायरबेस एमएल एंड्रॉइड ऐप के क्लाउड क्रेडेंशियल को सुरक्षित रखें

यदि आपका Android ऐप Firebase ML के क्लाउड API में से किसी एक का उपयोग करता है, तो अपने ऐप को उत्पादन में लॉन्च करने से पहले, आपको अनधिकृत API एक्सेस को रोकने के लिए कुछ अतिरिक्त कदम उठाने चाहिए।

अपने उत्पादन ऐप्स के लिए, आप यह सुनिश्चित करेंगे कि केवल प्रमाणित ग्राहक ही क्लाउड सेवाओं तक पहुँच प्राप्त कर सकते हैं। (ध्यान दें कि केवल गैर-रूट किए गए उपकरण वर्णित विधि का उपयोग करके प्रमाणित कर सकते हैं।)

फिर, आप केवल-डीबग API कुंजी बनाएंगे जिसका उपयोग आप परीक्षण और विकास के दौरान सुविधा के लिए कर सकते हैं।

1. अपने उत्पादन ऐप्स को फायरबेस के साथ पंजीकृत करें

सबसे पहले, अपने उत्पादन ऐप्स को Firebase के साथ पंजीकृत करें।

  1. सुनिश्चित करें कि आपके पास आपके ऐप के SHA-1 हस्ताक्षर हैं। कैसे जानने के लिए अपने क्लाइंट को प्रमाणित करना देखें।

  2. Firebase कंसोल में अपनी प्रोजेक्ट सेटिंग पर जाएं, फिर सेटिंग टैब चुनें.

  3. योर ऐप्स कार्ड तक नीचे स्क्रॉल करें, फिर अपना Android ऐप चुनें।

  4. अपने ऐप की जानकारी में अपने ऐप का SHA-1 हस्ताक्षर जोड़ें।

2. अपनी एपीआई कुंजियों के दायरे को सीमित करें

अगला, क्लाउड विजन एपीआई तक पहुंच को अस्वीकार करने के लिए अपनी मौजूदा एपीआई कुंजियों को कॉन्फ़िगर करें:

  1. Google क्लाउड कंसोल का क्रेडेंशियल पेज खोलें। संकेत मिलने पर, अपनी परियोजना का चयन करें।

  2. सूची में प्रत्येक मौजूदा API कुंजी के लिए, संपादन दृश्य खोलें।

  3. एपीआई प्रतिबंध अनुभाग में, कुंजी को प्रतिबंधित करें का चयन करें, फिर सूची में उन सभी एपीआई को जोड़ें, जिन तक आप चाहते हैं कि एपीआई कुंजी की पहुंच हो। क्लाउड विजन एपीआई को शामिल नहीं करना सुनिश्चित करें।

    जब आप किसी API कुंजी के API प्रतिबंधों को कॉन्फ़िगर करते हैं, तो आप स्पष्ट रूप से उन API की घोषणा कर रहे होते हैं जिन तक कुंजी की पहुंच होती है. डिफ़ॉल्ट रूप से, जब एपीआई प्रतिबंध अनुभाग में चयनित कुंजी को प्रतिबंधित न करें , तो परियोजना के लिए सक्षम किसी भी एपीआई तक पहुंचने के लिए एपीआई कुंजी का उपयोग किया जा सकता है।

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

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

3. केवल-डीबग API कुंजी बनाएं और उसका उपयोग करें

अंत में, केवल विकास के लिए उपयोग की जाने वाली एक नई एपीआई कुंजी बनाएं। फायरबेस एमएल इस एपीआई कुंजी का उपयोग Google क्लाउड सेवाओं को उन वातावरणों में एक्सेस करने के लिए कर सकता है जहां ऐप प्रमाणीकरण संभव नहीं है, जैसे कि एमुलेटर पर चलते समय।

  1. विकास के लिए उपयोग की जाने वाली एक नई API कुंजी बनाएँ:

    1. Google क्लाउड कंसोल का क्रेडेंशियल पेज खोलें। संकेत मिलने पर, अपनी परियोजना का चयन करें।

    2. क्रेडेंशियल बनाएँ > API कुंजी पर क्लिक करें और नई API कुंजी पर ध्यान दें। यह कुंजी अप्रमाणित ऐप्स से API एक्सेस की अनुमति देती है, इसलिए इस कुंजी को गोपनीय रखें

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

    1. यदि आपके पास पहले से डिबग मैनिफ़ेस्ट नहीं है, तो फ़ाइल > नया > अन्य > Android मेनिफेस्ट फ़ाइल पर क्लिक करके और लक्ष्य स्रोत सेट से debug चयन करके एक डिबग मेनिफ़ेस्ट बनाएं।

    2. डिबग मेनिफेस्ट में, निम्नलिखित घोषणा जोड़ें:

      <application>
      <meta-data
          android:name="com.firebase.ml.cloud.ApiKeyForDebug"
          android:value="your-debug-api-key" />
      </application>
      
  3. अपने ऐप में, फायरबेस एमएल को उत्पादन में अपने ग्राहक को प्रमाणित करने के लिए प्रमाणपत्र फिंगरप्रिंट मिलान का उपयोग करने के लिए कॉन्फ़िगर करें और एपीआई कुंजियों का उपयोग करने के लिए-डीबग कुंजी-केवल डीबग बिल्ड में:

    Kotlin+KTX

    val optionsBuilder = FirebaseVisionCloudImageLabelerOptions.Builder()
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch()
    }
    
    // Set other options. For example:
    optionsBuilder.setConfidenceThreshold(0.8f)
    // ...
    
    // And lastly:
    val options = optionsBuilder.build()
    FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)

    Java

    FirebaseVisionCloudImageLabelerOptions.Builder optionsBuilder =
            new FirebaseVisionCloudImageLabelerOptions.Builder();
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch();
    }
    
    // Set other options. For example:
    optionsBuilder.setConfidenceThreshold(0.8f);
    // ...
    
    // And lastly:
    FirebaseVisionCloudImageLabelerOptions options = optionsBuilder.build();
    FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);

अगले कदम

अन्य फायरबेस सुविधाओं का उपयोग करते समय लॉन्च करने के लिए अपने ऐप को तैयार करने के बारे में जानकारी के लिए लॉन्च चेकलिस्ट देखें।