درباره استفاده و مدیریت کلیدهای API برای Firebase بیاموزید

یک کلید API یک رشته منحصر به فرد است که برای هدایت درخواست‌ها به پروژه Firebase شما هنگام تعامل با Firebase و سرویس‌های Google استفاده می‌شود. این صفحه اطلاعات اولیه در مورد کلیدهای API و همچنین بهترین روش‌ها برای استفاده و مدیریت کلیدهای API با برنامه‌های Firebase را توضیح می‌دهد.

اطلاعات کلی در مورد کلیدهای API و Firebase

کلیدهای API برای Firebase با کلیدهای API معمولی متفاوت هستند

برخلاف نحوه استفاده از کلیدهای API، کلیدهای API برای سرویس‌های Firebase برای کنترل دسترسی به منابع پشتیبان استفاده نمی‌شوند . که فقط با قوانین امنیتی Firebase (برای کنترل اینکه کدام کاربران می توانند به منابع دسترسی داشته باشند) و App Check (برای کنترل برنامه هایی که می توانند به منابع دسترسی داشته باشند) قابل انجام است.

معمولاً باید به دقت از کلیدهای API محافظت کنید (مثلاً با استفاده از سرویس خزانه یا تنظیم کلیدها به عنوان متغیرهای محیطی). با این حال، کلیدهای API برای سرویس‌های Firebase برای گنجاندن در کد یا فایل‌های پیکربندی تأییدشده مناسب هستند.

اگرچه کلیدهای API برای سرویس‌های Firebase برای گنجاندن در کد ایمن هستند، چند مورد خاص وجود دارد که باید محدودیت‌هایی را برای کلید API خود اعمال کنید. برای مثال، اگر از Firebase ML، Firebase Authentication با روش ورود به سیستم ایمیل/گذرواژه یا Google Cloud API قابل پرداخت استفاده می‌کنید. در ادامه این صفحه درباره این موارد بیشتر بدانید.

ایجاد کلیدهای API

یک پروژه Firebase می‌تواند کلیدهای API زیادی داشته باشد، اما هر کلید API فقط می‌تواند با یک پروژه Firebase مرتبط باشد.

کلیدهای API به طور خودکار توسط Firebase برای برنامه های Firebase شما ایجاد می شوند

وقتی یکی از کارهای زیر را انجام می دهید، Firebase به طور خودکار کلیدهای API را برای پروژه شما ایجاد می کند:

  • یک پروژه Firebase ایجاد کنید > Browser key به طور خودکار ایجاد شد
  • یک برنامه Firebase Apple ایجاد کنید > iOS key به طور خودکار ایجاد می شود
  • یک برنامه Android Firebase ایجاد کنید > Android key به طور خودکار ایجاد شود

همچنین می توانید کلیدهای API خود را در کنسول Google Cloud ایجاد کنید، به عنوان مثال برای توسعه یا اشکال زدایی . در مورد زمانی که ممکن است بعداً در این صفحه توصیه شود، بیشتر بیاموزید.

پیدا کردن کلیدهای API

می‌توانید تمام کلیدهای API پروژه خود را در APIs & Services > پنل اعتبارنامه‌ها در کنسول Google Cloud مشاهده و مدیریت کنید.

همچنین در مکان‌های زیر می‌توانید بیابید کدام کلید API به طور خودکار با برنامه Firebase مطابقت دارد . به طور پیش‌فرض، همه برنامه‌های Firebase پروژه شما برای یک پلتفرم (Apple vs Android vs Web) از یک کلید API استفاده می‌کنند.

  • Firebase Apple Apps - کلید API منطبق خودکار برنامه را در فایل پیکربندی Firebase، GoogleService-Info.plist ، در قسمت API_KEY پیدا کنید.

  • Firebase Android Apps — کلید API منطبق خودکار یک برنامه را در فایل پیکربندی Firebase، google-services.json ، در قسمت current_key پیدا کنید.

  • برنامه های وب Firebase - کلید API مطابق خودکار یک برنامه را در شی پیکربندی Firebase، در قسمت apiKey پیدا کنید.

استفاده از کلید API

کلیدهای API برای شناسایی پروژه Firebase شما هنگام تعامل با سرویس‌های Firebase/Google استفاده می‌شوند. به طور خاص، از آنها برای مرتبط کردن درخواست های API با پروژه شما برای سهمیه و صورتحساب استفاده می شود. آنها همچنین برای دسترسی به داده های عمومی مفید هستند.

به عنوان مثال، شما می توانید به صراحت از یک کلید API با ارسال مقدار آن به یک فراخوانی REST API به عنوان پارامتر پرس و جو استفاده کنید. این مثال نشان می‌دهد که چگونه می‌توانید به API کوتاه‌کننده پیوند پیوندهای پویا درخواست بدهید:

POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY

هنگامی که برنامه شما با یک API Firebase تماس می گیرد، برنامه شما به طور خودکار در فایل پیکربندی Firebase یا شی کلید API پروژه شما جستجو می کند. با این حال، می توانید کلیدهای API خود را با استفاده از مکانیزم متفاوتی از جمله متغیرهای محیطی تنظیم کنید.

اعمال محدودیت برای کلیدهای API (توصیه می شود)

اگرچه لازم نیست یک کلید API برای سرویس های Firebase به عنوان یک راز تلقی شود، موارد خاصی وجود دارد (به زیر مراجعه کنید) که در آنها ممکن است بخواهید اقدامات بیشتری برای محافظت از پروژه خود در برابر سوء استفاده از کلید API انجام دهید.

اگر از احراز هویت مبتنی بر رمز عبور استفاده می کنید، سهمیه را تشدید کنید

اگر از احراز هویت Firebase مبتنی بر رمز عبور استفاده می‌کنید و شخصی کلید API شما را در دست می‌گیرد، تا زمانی که این داده‌ها توسط قوانین امنیتی Firebase محافظت می‌شوند، نمی‌توانند به هیچ یک از پایگاه داده پروژه Firebase یا داده‌های Cloud Storage شما دسترسی داشته باشند. با این حال، آنها می توانند از کلید API شما برای دسترسی به نقاط پایانی احراز هویت Firebase و درخواست احراز هویت در برابر پروژه شما استفاده کنند.

برای کاهش احتمال سوء استفاده شخصی از یک کلید API برای حمله brute force، می‌توانید سهمیه پیش‌فرض نقاط انتهایی identitytoolkit.googleapis.com را محدود کنید تا انتظارات ترافیک عادی برنامه شما را منعکس کند. توجه داشته باشید که اگر این سهمیه را تشدید کنید و برنامه شما به طور ناگهانی کاربرانی پیدا کند، ممکن است تا زمانی که سهمیه را افزایش ندهید، با خطاهای ورود مواجه شوید. می‌توانید سهمیه‌های API پروژه خود را در کنسول Google Cloud تغییر دهید.

از کلیدهای API جداگانه و محدود برای انواع خاصی از APIها استفاده کنید

اگرچه کلیدهای API مورد استفاده برای سرویس‌های Firebase معمولاً نیازی به مخفی بودن ندارند، باید اقدامات احتیاطی بیشتری را در مورد کلیدهای API مورد استفاده برای دسترسی به APIهای Google Cloud که به صورت دستی فعال کرده‌اید، انجام دهید.

اگر از Google Cloud API (در هر پلتفرمی) استفاده می‌کنید که به‌طور خودکار توسط Firebase فعال نمی‌شود (یعنی خودتان آن را فعال کرده‌اید)، باید کلیدهای API محدود و مجزا برای استفاده با آن APIها ایجاد کنید. اگر API برای سرویس Google Cloud قابل پرداخت باشد، این امر به ویژه مهم است.

به عنوان مثال، اگر از API های Cloud Vision Firebase ML در iOS استفاده می کنید، باید کلیدهای API جداگانه ای ایجاد کنید که فقط برای دسترسی به API های Cloud Vision استفاده می کنید.

با استفاده از کلیدهای API مجزا و محدود برای APIهای غیر Firebase، می‌توانید در صورت لزوم کلیدها را بچرخانید یا جایگزین کنید و بدون ایجاد اختلال در استفاده از سرویس‌های Firebase ، محدودیت‌های اضافی به کلیدهای API اضافه کنید .

استفاده از کلیدهای API مخصوص محیط (توصیه می شود)

اگر پروژه‌های Firebase مختلفی را برای محیط‌های مختلف راه‌اندازی می‌کنید، مانند مرحله‌بندی و تولید، مهم است که هر نمونه برنامه با پروژه Firebase مربوطه خود تعامل داشته باشد. به عنوان مثال، نمونه برنامه استیجینگ شما هرگز نباید با پروژه Firebase تولیدی شما صحبت کند. این همچنین به این معنی است که برنامه مرحله‌بندی شما باید از کلیدهای API مرتبط با پروژه مرحله‌بندی Firebase شما استفاده کند.

برای کاهش مشکلات ترویج تغییرات کد از توسعه به مرحله‌بندی تا تولید، به جای قرار دادن کلیدهای API در خود کد، آنها را به عنوان متغیرهای محیطی تنظیم کنید یا در یک فایل پیکربندی قرار دهید.

توجه داشته باشید که اگر از مجموعه شبیه ساز محلی Firebase برای توسعه همراه با Firebase ML استفاده می کنید، باید یک کلید API فقط اشکال زدایی ایجاد و استفاده کنید. دستورالعمل های ایجاد این نوع کلید در اسناد Firebase ML یافت می شود.

سوالات متداول