إذا كان تطبيق Apple يستخدم إحدى واجهات برمجة تطبيقات السحابة الإلكترونية في Firebase ML، قبل إطلاق التطبيق في مرحلة الإنتاج، فيجب اتخاذ بعض الخطوات الإضافية لمنع الوصول إلى واجهة برمجة التطبيقات.
1- تقليل نطاق مفاتيح واجهة برمجة التطبيقات الحالية
أولاً، يجب ضبط مفاتيح واجهة برمجة التطبيقات الحالية لمنع الوصول إلى Cloud Vision واجهة برمجة التطبيقات:
افتح صفحة بيانات الاعتماد في وحدة تحكّم "Google Cloud" اختَر مشروعك عندما يُطلب منك ذلك.
افتح عرض التعديل لكل مفتاح واجهة برمجة تطبيقات حالي في القائمة.
في القسم قيود واجهة برمجة التطبيقات، اختَر تقييد المفتاح، ثم أضِف البيانات إلى قائمة بجميع واجهات برمجة التطبيقات التي تريد أن يصل إليها مفتاح واجهة برمجة التطبيقات. يُرجى التأكد من أنّ: عدم تضمين Cloud Vision API
عند ضبط قيود واجهة برمجة التطبيقات لمفتاح واجهة برمجة التطبيقات، يتم للإعلان عن واجهات برمجة التطبيقات التي يمكن للمفتاح الوصول إليها. بشكل افتراضي، عندما لا تستخدم واجهة برمجة التطبيقات القيود على عدم تقييد المفتاح، يمكن تحديد مفتاح واجهة برمجة التطبيقات يُستخدم للوصول إلى أي واجهة برمجة تطبيقات تم تفعيلها للمشروع.
والآن، لن تمنح مفاتيح واجهة برمجة التطبيقات الحالية إمكانية الوصول إلى خدمات تعلُّم الآلة في السحابة الإلكترونية، ولكن ستمنح كل في العمل على أي واجهات برمجة تطبيقات أضفتها إلى قيود واجهة برمجة التطبيقات. الحالية.
يُرجى العِلم أنّه في حال تفعيل أي واجهات برمجة تطبيقات إضافية في المستقبل، يجب إضافتها إلى قائمة قيود واجهة برمجة التطبيقات لمفتاح واجهة برمجة التطبيقات الساري.
2- يمكنك إنشاء مفتاح واجهة برمجة تطبيقات جديد لاستخدامه مع Firebase ML.
بعد ذلك، يمكنك إنشاء مفتاح جديد لواجهة برمجة التطبيقات في Firebase ML يسمح فقط باستدعاءات واجهة Cloud Vision API:
ارجع إلى صفحة بيانات الاعتماد. تأكد من أن لا يزال مشروع Firebase محدّدًا.
انقر على إنشاء بيانات اعتماد > مفتاح واجهة برمجة التطبيقات. دوِّن مفتاح واجهة برمجة التطبيقات الجديد، ثم انقر على تقييد المفتاح.
في القسم قيود واجهة برمجة التطبيقات، اختَر تقييد المفتاح، ثم أضِف البيانات إلى اسرد فقط Cloud Vision API.
يمنح مفتاح واجهة برمجة التطبيقات هذا الإذن بالوصول إلى واجهة برمجة تطبيقات Cloud Vision فقط ويمكن استخدامه من خلال Firebase ML للوصول إلى النماذج المستنِدة إلى السحابة الإلكترونية.
3- إجراء ننصح به: تقليل حصة Cloud Vision API
للمساعدة في التخفيف من عواقب مفتاح مخترَق، يجب عليك تقليل الحصة لكل مستخدم في Cloud Vision API من الإعداد التلقائي: لإجراء ذلك:
افتح صفحة حصص واجهة برمجة التطبيقات في Cloud Vision في وحدة تحكّم "Google Cloud" اختَر مشروعك عندما يُطلب منك ذلك.
في قسم الطلبات، حدِّد حصة الطلبات في الدقيقة لكل مستخدم. إلى شيء معقول لتطبيقك. على سبيل المثال، إذا كان تطبيقك يتضمن تحميل صورة لمستند لاسترداد النص، فمن غير المرجح أن سيفعل المستخدم ذلك أكثر من مرة كل بضع ثوانٍ، لذا ستكون الحصة 30-40 من المحتمل أن تكون آمنة.
لاحظ أنه في هذا السياق، "الطلبات من كل مستخدم" يشير إلى طلبات من عنوان IP واحد. قد تحتاج إلى التفكير في هذا إذا كنت تتوقع على المستخدمين استخدام التطبيق في الوقت نفسه من وراء ترجمة عنوان الشبكة.
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 الأخرى.