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

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

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

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

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

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

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

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

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

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

2. أنشئ مفتاح API جديدًا لاستخدامه مع Firebase ML

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

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

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

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

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

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

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

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

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

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

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

نظرًا لأن مفتاح Firebase ML API يسمح بالوصول غير المصرح به إلى Cloud Vision API ، فمن المهم الحفاظ على سرية المفتاح لمنع الاستخدام غير المصرح به ورسوم حساب الفوترة الخاص بك. للقيام بذلك ، يجب عليك الامتناع عن تضمين مفتاح 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 الأخرى.