اگر برنامه Apple شما از یکی از APIهای ابری Firebase ML استفاده می کند، قبل از اینکه برنامه خود را در مرحله تولید راه اندازی کنید، باید اقدامات دیگری را برای جلوگیری از دسترسی غیرمجاز API انجام دهید.
1. دامنه کلیدهای API موجود را کاهش دهید
ابتدا کلیدهای API موجود خود را پیکربندی کنید تا دسترسی به Cloud Vision API ممنوع شود:
صفحه اعتبارنامه کنسول Google Cloud را باز کنید. وقتی از شما خواسته شد، پروژه خود را انتخاب کنید.
برای هر کلید API موجود در لیست، نمای ویرایش را باز کنید.
در بخش محدودیتهای API ، Restrict key را انتخاب کنید، سپس همه APIهایی را که میخواهید کلید API به آنها دسترسی داشته باشد، به لیست اضافه کنید. اطمینان حاصل کنید که Cloud Vision API را شامل نمی شود.
وقتی محدودیتهای API کلید API را پیکربندی میکنید، به صراحت APIهایی را که کلید به آنها دسترسی دارد، اعلام میکنید. بهطور پیشفرض، زمانی که در بخش محدودیتهای API کلید Don't limited key انتخاب شده باشد، میتوان از یک کلید API برای دسترسی به هر API که برای پروژه فعال است استفاده کرد.
اکنون، کلیدهای API موجود شما امکان دسترسی به خدمات ابر ML را نمیدهند، اما هر کلید برای هر APIهایی که به لیست محدودیتهای API خود اضافه کردهاید به کار خود ادامه میدهد.
توجه داشته باشید که اگر در آینده هر API دیگری را فعال کنید، باید آنها را به لیست محدودیت های API برای کلید API قابل اجرا اضافه کنید.
2. یک کلید API جدید برای استفاده با Firebase ML ایجاد کنید
در مرحله بعد، یک کلید API جدید برای Firebase ML ایجاد کنید که فقط به Cloud Vision API اجازه تماس را می دهد:
به صفحه اعتبارنامه بازگردید. مطمئن شوید که پروژه Firebase شما هنوز انتخاب شده است.
روی ایجاد اعتبارنامه > کلید API کلیک کنید. کلید API جدید را یادداشت کنید، سپس روی Restrict key کلیک کنید.
در بخش محدودیتهای API ، Restrict key را انتخاب کنید، سپس فقط Cloud Vision API را به لیست اضافه کنید.
این کلید API فقط به Cloud Vision API دسترسی می دهد و می تواند توسط Firebase ML برای دسترسی به مدل های مبتنی بر ابر استفاده شود.
3. توصیه می شود: سهمیه Cloud Vision API را کاهش دهید
برای کمک به کاهش پیامدهای یک کلید در معرض خطر، باید سهمیه هر کاربر Cloud Vision API را از تنظیمات پیشفرض آن کاهش دهید. برای انجام این کار:
صفحه Cloud Vision API Quotas کنسول Google Cloud را باز کنید. وقتی از شما خواسته شد، پروژه خود را انتخاب کنید.
در بخش درخواستها ، سهمیه درخواستها در دقیقه برای هر کاربر را روی چیزی معقول برای برنامه خود تنظیم کنید. به عنوان مثال، اگر برنامه شما شامل آپلود تصویر یک سند برای بازگرداندن متن آن باشد، بعید است که کاربر این کار را بیش از هر چند ثانیه یک بار انجام دهد، بنابراین سهمیه 30-40 احتمالاً ایمن خواهد بود.
توجه داشته باشید که در این زمینه "درخواست برای هر کاربر" به درخواست هایی از یک آدرس IP واحد اشاره دارد. اگر انتظار دارید چندین کاربر به طور همزمان از برنامه شما از پشت NAT استفاده کنند، ممکن است لازم باشد این را در نظر بگیرید.
4. با استفاده از کلید Firebase ML API خود، APIهای Cloud را فراخوانی کنید
در نهایت، در برنامه خود، Firebase ML را برای استفاده از کلید API جدید خود پیکربندی کنید.
از آنجایی که کلید Firebase ML API امکان دسترسی غیرمجاز به Cloud Vision API را می دهد، مهم است که کلید را محرمانه نگه دارید تا از استفاده غیرمجاز و کسر هزینه از حساب صورتحساب خود جلوگیری کنید. برای انجام این کار، باید از قرار دادن کلید API خود در باینری برنامه خودداری کنید. در عوض، در زمان اجرای برنامه، بررسی کنید که یک کاربر خوب شناخته شده وارد سیستم شده باشد و تنها پس از آن، کلید 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)
}
هدف-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];
}
علاوه بر این، باید از توصیه های کلی در ایمن سازی یک کلید API پیروی کنید.
مراحل بعدی
برای اطلاعات در مورد آمادهسازی برنامه خود برای راهاندازی هنگام استفاده از سایر ویژگیهای Firebase، به چک لیست راهاندازی مراجعه کنید.