حماية بيانات اعتماد السحابة الإلكترونية لتطبيق Firebase ML Apple

إذا كان تطبيقك المتوافق مع أجهزة Apple يستخدم إحدى واجهات برمجة تطبيقات السحابة الإلكترونية في Firebase ML، عليك اتّخاذ بعض الخطوات الإضافية قبل إطلاق تطبيقك في قناة الإصدار العلني لمنع الوصول غير المصرَّح به إلى واجهة برمجة التطبيقات.

1- تقليل نطاق مفاتيح واجهة برمجة التطبيقات الحالية

أولاً، اضبط مفاتيح واجهة برمجة التطبيقات الحالية لمنع الوصول إلى واجهة برمجة تطبيقات Cloud Vision:

  1. افتح صفحة بيانات الاعتماد في وحدة تحكُّم Google Cloud. اختَر مشروعك عندما يُطلب منك ذلك.

  2. افتح طريقة عرض التعديل لكل مفتاح حالي لواجهة برمجة التطبيقات في القائمة.

  3. في قسم قيود واجهة برمجة التطبيقات، اختَر تقييد المفتاح، ثم أضِف إلى القائمة جميع واجهات برمجة التطبيقات التي تريد أن يحصل مفتاح واجهة برمجة التطبيقات على إذن الوصول إليها. احرِص على عدم تضمين Cloud Vision API.

    عند ضبط قيود واجهة برمجة التطبيقات لمفتاح واجهة برمجة التطبيقات، يعني ذلك أنّك تُعلن بوضوح عن واجهات برمجة التطبيقات التي يمكن للمفتاح الوصول إليها. بشكلٍ تلقائي، عندما يكون الخيار عدم تقييد المفتاح محدّدًا في قسم قيود واجهة برمجة التطبيقات، يمكن استخدام مفتاح واجهة برمجة التطبيقات للوصول إلى أي واجهة برمجة تطبيقات مفعّلة للمشروع.

لن تمنح مفاتيح واجهة برمجة التطبيقات الحالية إذن الوصول إلى خدمات الذكاء الاصطناعي في السحابة الإلكترونية، ولكن سيظل كل مفاتيح الوصول صالحة لأي واجهات برمجة تطبيقات أضفتها إلى قائمة قيود واجهة برمجة التطبيقات.

يُرجى العلم أنّه في حال تفعيل أي واجهات برمجة تطبيقات إضافية في المستقبل، عليك إضافتها إلى قائمة قيود واجهة برمجة التطبيقات لمفتاح واجهة برمجة التطبيقات الساري.

2- إنشاء مفتاح واجهة برمجة تطبيقات جديد لاستخدامه مع Firebase ML

بعد ذلك، أنشئ مفتاح واجهة برمجة تطبيقات جديدًا لتطبيق Firebase ML يسمح فقط بطلبات البيانات من واجهة برمجة التطبيقات Cloud Vision API:

  1. ارجع إلى صفحة بيانات الاعتماد. تأكد من استمرار اختيار مشروع Firebase.

  2. انقر على إنشاء بيانات اعتماد > مفتاح واجهة برمجة التطبيقات. دوِّن مفتاح واجهة برمجة التطبيقات الجديد، ثم انقر على تقييد المفتاح.

  3. في قسم قيود واجهة برمجة التطبيقات، اختَر تقييد المفتاح، ثم أضِف إلى القائمة فقط واجهة برمجة التطبيقات Cloud Vision API.

لا يمنح مفتاح واجهة برمجة التطبيقات هذا إذن الوصول إلا إلى Cloud Vision API، ويمكن لشركة Firebase ML استخدامه للوصول إلى النماذج المستندة إلى السحابة الإلكترونية.

للمساعدة في تخفيف عواقب استخدام مفتاح تم اختراقه، عليك خفض حصة كل مستخدم من واجهة برمجة التطبيقات Cloud Vision API عن الإعداد التلقائي. لإجراء ذلك:

  1. افتح صفحة حصص واجهات برمجة التطبيقات في Cloud Vision في وحدة التحكّم Google Cloud. اختَر مشروعك عندما يُطلب منك ذلك.

  2. في قسم الطلبات، اضبط حصة الطلبات في الدقيقة لكل مستخدم على قيمة معقولة لتطبيقك. على سبيل المثال، إذا كان تطبيقك يتضمن upload a picture of a document to get back its text، من غير المرجّح أن ينفّذ مستخدم ذلك أكثر من مرّة كل بضع ثوانٍ، لذا من المرجّح أن تكون الحصة من 30 إلى 40.

    يُرجى العلم أنّ "الطلبات لكل مستخدم" تشير في هذا السياق إلى الطلبات الواردة من عنوان IP واحد. قد تحتاج إلى مراعاة ذلك إذا كنت تتوقّع أن يستخدم عدة مستخدمين تطبيقك في الوقت نفسه من خلال شبكة تحويل عنوان (NAT).

4. استدعاء واجهات برمجة تطبيقات Cloud باستخدام مفتاح واجهة برمجة التطبيقات Firebase ML

أخيرًا، في تطبيقك، اضبط Firebase ML لاستخدام مفتاح واجهة برمجة التطبيقات الجديد.

بما أنّ مفتاح واجهة برمجة التطبيقات Firebase ML يسمح بالوصول غير المعتمَد إلى واجهة برمجة التطبيقات Cloud Vision، من المهم الحفاظ على سرية المفتاح لمنع الاستخدام غير المصرَّح به وتحميل رسوم على حساب الفوترة. ولإجراء ذلك، عليك الامتناع عن تضمين مفتاح واجهة برمجة التطبيقات في البرنامج الثنائي لتطبيقك. بدلاً من ذلك، يجب التحقّق من تسجيل دخول مستخدم معروف صالح أثناء وقت تشغيل التطبيق، وبعد ذلك فقط، استرداد مفتاح واجهة برمجة التطبيقات من الخادم.

حتى عند اتّباع هذه الممارسات، من الممكن أن يتم اختراق مفتاح واجهة برمجة التطبيقات. عليك اتّخاذ خطوات للمساعدة في تخفيف عواقب اختراق المفتاح، مثل تقليل حصة واجهة برمجة التطبيقات لكل مستخدم كما هو موضّح أعلاه، وتنفيذ سياسات تغيير المفاتيح، وإصدار مفاتيح مختلفة لمجموعات مختلفة من المستخدمين.

بعد أن يحصل تطبيقك على مفتاح واجهة برمجة التطبيقات بأمان، حدِّد المفتاح عندما تريد استدعاء واجهة برمجة تطبيقات Firebase ML Cloud API:

Swift

if let cloudVisionKey = getYourApiKey() {  // See note above about securing your API key
    let options = VisionCloudDetectorOptions()
    options.apiKeyOverride = cloudVisionKey
    let cloudDetector = Vision.vision().cloudLandmarkDetector(options: options)
}

Objective-C

NSString *cloudVisionKey = [self getYourApiKey];  // See note above about securing your API key
if (cloudVisionKey != nil) {
    FIRVisionCloudDetectorOptions *options =
            [[FIRVisionCloudDetectorOptions alloc] init];
    options.APIKeyOverride = cloudVisionKey;
    FIRVisionCloudLandmarkDetector *landmarkDetector =
            [vision cloudLandmarkDetectorWithOptions:options];
}

بالإضافة إلى ذلك، عليك اتّباع النصائح العامة الواردة في مقالة تأمين مفتاح واجهة برمجة التطبيقات.

الخطوات التالية

اطّلِع على قائمة التحقّق من الإطلاق للحصول على معلومات عن تحضير تطبيقك للإطلاق عند استخدام ميزات Firebase الأخرى.