حماية بيانات اعتماد السحابة الإلكترونية لتطبيق 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 فقط ويمكن استخدامه من خلال Firebase ML للوصول إلى النماذج المستنِدة إلى السحابة الإلكترونية.

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

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

  2. في قسم الطلبات، حدِّد حصة الطلبات في الدقيقة لكل مستخدم. إلى شيء معقول لتطبيقك. على سبيل المثال، إذا كان تطبيقك يتضمن تحميل صورة لمستند لاسترداد النص، فمن غير المرجح أن سيفعل المستخدم ذلك أكثر من مرة كل بضع ثوانٍ، لذا ستكون الحصة 30-40 من المحتمل أن تكون آمنة.

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

4. طلب بيانات Cloud APIs باستخدام مفتاح واجهة برمجة التطبيقات 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 الأخرى.