اگر برنامه اپل شما از یکی از APIهای ابری Firebase ML استفاده میکند، قبل از اینکه برنامه خود را در محیط تولید راهاندازی کنید، باید اقدامات دیگری را برای جلوگیری از دسترسی غیرمجاز به API انجام دهید.
۱. کاهش دامنه کلیدهای API موجود
ابتدا، کلیدهای API موجود خود را پیکربندی کنید تا دسترسی به API Cloud Vision را غیرفعال کنید:
صفحه Credentials کنسول Google Cloud را باز کنید. در صورت درخواست، پروژه خود را انتخاب کنید.
برای هر کلید API موجود در لیست، نمای ویرایش را باز کنید.
در بخش محدودیتهای API ، گزینه Restrict key را انتخاب کنید، سپس تمام APIهایی را که میخواهید کلید API به آنها دسترسی داشته باشد، به لیست اضافه کنید. مطمئن شوید که API مربوط به Cloud Vision را اضافه نمیکنید .
وقتی محدودیتهای API یک کلید API را پیکربندی میکنید، به صراحت APIهایی را که کلید به آنها دسترسی دارد، اعلام میکنید. به طور پیشفرض، وقتی در بخش محدودیتهای API ، گزینه «کلید را محدود نکنید» انتخاب شده باشد، میتوان از کلید API برای دسترسی به هر API فعال شده برای پروژه استفاده کرد.
اکنون، کلیدهای API موجود شما به سرویسهای ابری ML دسترسی نخواهند داد، اما هر کلید برای هر API که به لیست محدودیتهای API آن اضافه کردهاید، به کار خود ادامه خواهد داد.
توجه داشته باشید که اگر در آینده APIهای دیگری را فعال کنید، باید آنها را به لیست محدودیتهای API برای کلید API مربوطه اضافه کنید.
۲. یک کلید API جدید برای استفاده با Firebase ML ایجاد کنید
در مرحله بعد، یک کلید API جدید برای Firebase ML ایجاد کنید که فقط امکان تماس با Cloud Vision API را فراهم کند:
به صفحه اعتبارنامهها برگردید. مطمئن شوید که پروژه Firebase شما هنوز انتخاب شده است.
روی ایجاد اعتبارنامهها > کلید API کلیک کنید. کلید API جدید را یادداشت کنید، سپس روی محدود کردن کلید کلیک کنید.
در بخش محدودیتهای API ، کلید Restrict را انتخاب کنید، سپس فقط API مربوط به Cloud Vision را به لیست اضافه کنید.
این کلید API فقط به Cloud Vision API دسترسی میدهد و میتواند توسط Firebase ML برای دسترسی به مدلهای مبتنی بر ابر استفاده شود.
۳. توصیه میشود: سهمیهی API مربوط به Cloud Vision را کاهش دهید
برای کاهش عواقب یک کلید لو رفته، باید سهمیه هر کاربر Cloud Vision API را از تنظیمات پیشفرض آن کاهش دهید. برای انجام این کار:
صفحه سهمیههای API مربوط به Cloud Vision را در کنسول Google Cloud باز کنید. در صورت درخواست، پروژه خود را انتخاب کنید.
در بخش درخواستها ، سهمیه درخواستها در هر دقیقه برای هر کاربر را روی مقداری معقول برای برنامه خود تنظیم کنید. برای مثال، اگر برنامه شما شامل آپلود تصویر یک سند برای دریافت متن آن است، بعید است که یک کاربر این کار را بیش از هر چند ثانیه یک بار انجام دهد، بنابراین سهمیه 30-40 احتمالاً ایمن خواهد بود.
توجه داشته باشید که در این متن، منظور از «درخواست به ازای هر کاربر» درخواستهایی است که از یک آدرس IP واحد ارسال میشوند. اگر انتظار دارید چندین کاربر همزمان از پشت یک NAT از برنامه شما استفاده کنند، ممکن است لازم باشد این موضوع را در نظر بگیرید.
۴. با استفاده از کلید API Firebase ML خود، APIهای ابری را فراخوانی کنید
در نهایت، در برنامه خود، Firebase ML را برای استفاده از کلید API جدید خود پیکربندی کنید.
از آنجا که کلید API Firebase ML امکان دسترسی غیرمجاز به API کلود ویژن را فراهم میکند، محرمانه نگه داشتن کلید برای جلوگیری از استفاده غیرمجاز و اعمال هزینه به حساب صورتحساب شما بسیار مهم است. برای انجام این کار، باید از قرار دادن کلید API خود در فایل باینری برنامه خودداری کنید. در عوض، در زمان اجرای برنامه، تأیید کنید که یک کاربر معتبر وارد سیستم شده است و تنها پس از آن، کلید API را از یک سرور بازیابی کنید.
حتی در صورت رعایت این موارد، امکان لو رفتن کلید API وجود دارد. شما باید اقداماتی را برای کاهش عواقب لو رفتن کلید انجام دهید، مانند کاهش سهمیه هر کاربر API همانطور که در بالا توضیح داده شد، اجرای سیاستهای چرخش کلید و صدور کلیدهای مختلف برای گروههای مختلف کاربران.
بعد از اینکه برنامه شما با خیال راحت کلید API را به دست آورد، وقتی میخواهید یک API Firebase ML Cloud را فراخوانی کنید، کلید را مشخص کنید:
سویفت
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، به چکلیست راهاندازی مراجعه کنید.