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

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

1. تقليل نطاق مفاتيح API الموجودة

أولاً، قم بتكوين مفاتيح API الموجودة لديك لعدم السماح بالوصول إلى Cloud Vision API:

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

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

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

    عندما تقوم بتكوين قيود واجهة برمجة التطبيقات (API) لمفتاح واجهة برمجة التطبيقات (API)، فإنك تعلن بوضوح عن واجهات برمجة التطبيقات (APIs) التي يمكن للمفتاح الوصول إليها. افتراضيًا، عندما يتم تحديد مفتاح عدم تقييد في قسم قيود واجهة برمجة التطبيقات ، يمكن استخدام مفتاح واجهة برمجة التطبيقات للوصول إلى أي واجهة برمجة تطبيقات ممكّنة للمشروع.

الآن، لن تمنح مفاتيح واجهة برمجة التطبيقات (API) الموجودة لديك حق الوصول إلى خدمات ML السحابية، ولكن سيستمر كل مفتاح في العمل مع أي واجهات برمجة تطبيقات قمت بإضافتها إلى قائمة قيود واجهة برمجة التطبيقات (API) الخاصة به.

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

2. قم بإنشاء مفتاح API جديد للاستخدام مع Firebase ML

بعد ذلك، قم بإنشاء مفتاح API جديد لـ Firebase ML الذي يسمح فقط بالاتصال بـ Cloud Vision API:

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

  2. انقر فوق إنشاء بيانات اعتماد > مفتاح API . قم بتدوين مفتاح API الجديد، ثم انقر فوق Restrict key .

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

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

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

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

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

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

4. اتصل بـ Cloud APIs باستخدام مفتاح Firebase ML API الخاص بك

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

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

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

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

سويفت

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)
}

ج موضوعية

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];
}

بالإضافة إلى ذلك، يجب عليك اتباع النصائح العامة في تأمين مفتاح API .

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

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