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

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

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

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

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

सबसे पहले, अपने प्रोडक्शन ऐप्स को फायरबेस के साथ पंजीकृत करें।

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

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

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

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

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

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

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

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

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

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

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

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

3. डिबग-ओनली एपीआई कुंजी बनाएं और उसका उपयोग करें

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

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

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

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

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

    1. यदि आपके पास पहले से डिबग मेनिफेस्ट नहीं है, तो फ़ाइल > नया > अन्य > एंड्रॉइड मेनिफेस्ट फ़ाइल पर क्लिक करके और लक्ष्य स्रोत सेट से 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);

अगले कदम

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