شروع به کار با Firebase Security Rules

«قوانین امنیتی Firebase» محافظتی قوی و کاملاً قابل‌سفارشی‌سازی برای داده‌هایتان در Cloud Firestore، Realtime Database، و Cloud Storage ارائه می‌دهد. با دنبال کردن مراحل این راهنما، به‌راحتی می‌توانید کار با Security Rules را شروع کنید، داده‌هایتان را ایمن کنید، و از برنامه‌تان دربرابر کاربران مخرب محافظت کنید.

آشنایی با زبان Firebase Security Rules

قبل‌از شروع نوشتن قوانین، بهتر است مدتی را صرف مرور زبان خاص Firebase Security Rules برای محصولات Firebase که استفاده می‌کنید کنید. Realtime Database از نحو شبه جاوا اسکریپت و ساختار JSON برای Security Rules خود استفاده می‌کند.

با یادگیری نحو اصلی زبان Firebase Security Rules شروع کنید.

راه‌اندازی Authentication

اگر قبلاً این کار را نکرده‌اید، Firebase Authentication را به برنامه‌تان اضافه کنید. Firebase Authentication از بسیاری از روش‌های اصالت‌سنجی رایج پشتیبانی می‌کند و با «قوانین امنیتی Firebase» ادغام می‌شود تا قابلیت‌های درستی‌سنجی جامعی ارائه دهد.

می‌توانید اطلاعات اصالت‌سنجی سفارشی و اضافی برای برنامه‌تان تنظیم کنید.

درباره قوانین امنیتی Firebase و Firebase Authentication بیشتر بدانید.

مشخص کردن ساختارهای داده‌ها و قوانین

داده‌هایتان را به‌دقت ساختاربندی کنید تا با الزامات امنیتی‌تان مطابقت داشته باشد.

تعریف داده‌ها برای امنیت

نحوه ساختاردهی داده‌هایتان ممکن است بر نحوه ساختاردهی و اجرای قوانینتان تأثیر بگذارد. هنگام تعریف ساختارهای داده، پیامدهایی را که ممکن است بر ساختار Security Rules شما داشته باشند درنظر بگیرید.

برای مثال، در Realtime Database، ممکن است بخواهید فیلدی را اضافه کنید که نقش خاصی را برای هر کاربر نشان می‌دهد. سپس، قوانین شما می‌توانند آن فیلد را بخوانند و از آن برای اعطای دسترسی مبتنی بر نقش استفاده کنند.

هنگام تعریف معماری داده‌ها و قوانین، به یاد داشته باشید که قوانین بسته به محصول شما ممکن است به‌صورت آبشاری اعمال شوند یا نشوند. با Realtime Database، قوانین از بالا به پایین کار می‌کنند و قوانین سطحی‌تر قوانین عمیق‌تر را لغو می‌کنند. اگر قانونی اجازه‌های خواندن یا نوشتن را در مسیر خاصی اعطا کند، دسترسی به همه گره‌های فرزند زیر آن را نیز اعطا می‌کند. درمقابل، با Cloud Firestore و Cloud Storage، قوانین فقط در سطوح مشخصی از سلسله‌مراتب داده‌ها اعمال می‌شوند، و شما قوانین صریحی برای کنترل دسترسی به سطوح مختلف می‌نویسید.

دسترسی به قوانین

برای مشاهده Security Rules موجود، از Firebase CLI یا کنسول Firebase استفاده کنید. مطمئن شوید که قوانینتان را بااستفاده از همان روش، به‌طور مداوم، ویرایش می‌کنید تا از بازنویسی اشتباه به‌روزرسانی‌ها جلوگیری کنید. اگر مطمئن نیستید که قوانین تعریف‌شده محلی شما جدیدترین به‌روزرسانی‌ها را منعکس می‌کنند یا نه، کنسول Firebase همیشه جدیدترین نسخه مستقرشده از «قوانین امنیتی Firebase» را نشان می‌دهد.

برای دسترسی به قوانینتان از کنسول Firebase، پروژه‌تان را انتخاب کنید، سپس در پانل پیمایش سمت راست، روی Realtime Database کلیک کنید. وقتی در پایگاه داده یا سطل فضای ذخیره‌سازی صحیح قرار گرفتید، روی Security Rules کلیک کنید.

برای دسترسی به قوانینتان از Firebase CLI، به فایل قوانین ذکرشده در فایل firebase.json بروید.

نوشتن قوانین پایه

همان‌طور که درحال توسعه برنامه‌تان هستید و Security Rules را درک می‌کنید، Security Rules را برای رسیدگی به چند مورد استفاده پایه، ازجمله موارد زیر، پیاده‌سازی کنید:

  • فقط مالک محتوا: دسترسی به محتوا را براساس کاربر محدود کنید.
  • دسترسی مختلط: دسترسی نوشتن را برای کاربر محدود کنید، اما دسترسی خواندن را برای عموم مجاز کنید.
  • دسترسی مبتنی بر مشخصه: دسترسی به گروه یا نوع کاربر را محدود کنید.

آزمایش کردن قوانین

اگر «قوانین امنیتی Firebase» را در کنسول Firebase راه‌اندازی می‌کنید، می‌توانید از زمین بازی قوانین Firebase برای اعتبارسنجی سریع رفتار استفاده کنید. بااین‌حال، توصیه می‌کنیم قبل‌از استقرار تغییرات در دسته هدف تولید، آزمایش‌های کامل‌تری با Local Emulator Suite انجام دهید.

پیاده‌سازی قوانین

از کنسول Firebase یا Firebase CLI برای استقرار قوانینتان در تولید استفاده کنید. مراحل ذکرشده در مدیریت و استقرار قوانین امنیتی Firebase را دنبال کنید.