अपने 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 की अन्य सुविधाओं का इस्तेमाल करते समय, आपके ऐप्लिकेशन को लॉन्च करने के लिए तैयार कर रहा है.