حماية بيانات اعتماد Google Cloud لتعلُّم الآلة من Firebase

إذا كان تطبيق 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 الأخرى.