حماية بيانات اعتماد 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 لاستخدام مطابقة الملف المرجعي للشهادة بهدف مصادقة العميل في قناة الإصدار العلني واستخدام مفاتيح واجهة برمجة التطبيقات، وهو مفتاح debugging ، في عمليات الإنشاء المخصّصة للاختبار فقط:

    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 الأخرى.