अपने Firebase ML Android ऐप्लिकेशन के क्लाउड क्रेडेंशियल को सुरक्षित रखना

अगर आपका Android ऐप्लिकेशन, Firebase ML के किसी क्लाउड एपीआई का इस्तेमाल करता है, तो ऐप्लिकेशन को प्रोडक्शन में लॉन्च करने से पहले, आपको कुछ और कदम उठाने चाहिए. इससे, एपीआई को बिना अनुमति के ऐक्सेस करने से रोका जा सकता है.

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

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

1. अपने प्रोडक्शन ऐप्लिकेशन, Firebase के साथ रजिस्टर करें

सबसे पहले, अपने प्रोडक्शन ऐप्लिकेशन को Firebase के साथ रजिस्टर करें.

  1. पक्का करें कि आपके पास अपने ऐप्लिकेशन के SHA-1 हस्ताक्षर हैं. इससे संदर्भ लें अपने क्लाइंट की पुष्टि करना देखें.

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

  3. नीचे आपके ऐप्लिकेशन कार्ड तक स्क्रोल करें. इसके बाद, अपना Android ऐप्लिकेशन चुनें.

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

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

इसके बाद, Cloud Vision के ऐक्सेस की अनुमति न देने के लिए, अपनी मौजूदा एपीआई कुंजियां कॉन्फ़िगर करें एपीआई:

  1. अपना क्रेडेंशियल पेज खोलें Google Cloud कंसोल. जब कहा जाए, तब अपना प्रोजेक्ट चुनें.

  2. सूची में मौजूद हर मौजूदा एपीआई पासकोड के लिए, बदलाव करने वाला व्यू खोलें.

  3. एपीआई से जुड़ी पाबंदियां सेक्शन में, प्रतिबंधित कुंजी चुनें. इसके बाद, उन सभी एपीआई की सूची बनाएं जिनका ऐक्सेस आपको एपीआई पासकोड से चाहिए. पक्का करें कि इसमें Cloud Vision API को शामिल नहीं करना होगा.

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

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

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

3. सिर्फ़ डीबग एपीआई पासकोड बनाना और उसका इस्तेमाल करना

आखिर में, सिर्फ़ डेवलपमेंट के लिए इस्तेमाल करने के लिए नई एपीआई पासकोड बनाएं. Firebase ML यह कर सकते हैं जहां ऐप्लिकेशन हो वहां Google Cloud की सेवाओं को ऐक्सेस करने के लिए इस एपीआई पासकोड का इस्तेमाल करें पुष्टि नहीं की जा सकती, जैसे कि एम्युलेटर पर चलाते समय.

  1. डेवलपमेंट के लिए इस्तेमाल की जाने वाली नई एपीआई पासकोड बनाएं:

    1. अपना क्रेडेंशियल पेज खोलें Google Cloud कंसोल. जब कहा जाए, तब अपना प्रोजेक्ट चुनें.

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

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

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

    2. डीबग मेनिफ़ेस्ट में, यह एलान जोड़ें:

      <application>
      <meta-data
          android:name="com.firebase.ml.cloud.ApiKeyForDebug"
          android:value="your-debug-api-key" />
      </application>
  3. अपने ऐप्लिकेशन में, सर्टिफ़िकेट के फ़िंगरप्रिंट मैचिंग का इस्तेमाल करने के लिए Firebase ML को कॉन्फ़िगर करें प्रोडक्शन में अपने क्लाइंट की पुष्टि करने और एपीआई पासकोड का इस्तेमाल करने के लिए—डीबग कुंजी—सिर्फ़ डीबग बिल्ड में:

    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);

अगले चरण

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