با Cloud Firestore Security Rules ، میتوانید بدون نیاز به مدیریت زیرساخت یا نوشتن کد احراز هویت و مجوز سمت سرور، بر ایجاد یک تجربه کاربری عالی تمرکز کنید.
قوانین امنیتی کنترل دسترسی و اعتبارسنجی داده ها را در قالبی ساده و در عین حال گویا فراهم می کند. برای ساختن سیستمهای دسترسی مبتنی بر کاربر و نقش که دادههای کاربران شما را ایمن نگه میدارد، باید از احراز هویت Firebase با Cloud Firestore Security Rules استفاده کنید.
قوانین امنیتی نسخه 2
از ماه می 2019، نسخه 2 قوانین امنیتی Cloud Firestore اکنون در دسترس است. نسخه 2 قوانین رفتار حروف عام بازگشتی {name=**}
را تغییر میدهد. اگر قصد استفاده از پرس و جوهای گروه مجموعه را دارید، باید از نسخه 2 استفاده کنید. شما باید با ایجاد rules_version = '2';
خط اول در قوانین امنیتی شما:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
قوانین نوشتن
شما Cloud Firestore Security Rules متناسب با مدل داده ای که برای پایگاه داده پیش فرض و هر پایگاه داده اضافی در پروژه خود ایجاد می کنید، می نویسید و مدیریت می کنید.
همه Cloud Firestore Security Rules شامل عبارات match
است که اسناد را در پایگاه داده شما شناسایی می کند و به عباراتی allow
که دسترسی به آن اسناد را کنترل می کنند:
service cloud.firestore {
match /databases/{database}/documents {
match /<some_path>/ {
allow read, write: if <some_condition>;
}
}
}
هر درخواست پایگاه داده از یک کتابخانه موبایل/کلاینت وب Cloud Firestore بر اساس قوانین امنیتی شما قبل از خواندن یا نوشتن هر داده ای ارزیابی می شود. اگر قوانین دسترسی به هر یک از مسیرهای سند مشخص شده را رد کنند، کل درخواست با شکست مواجه می شود.
در زیر چند نمونه از مجموعه قوانین اساسی آورده شده است. در حالی که این قوانین معتبر هستند، آنها برای برنامه های تولید توصیه نمی شوند:
احراز هویت مورد نیاز است
// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
همه را انکار کنید
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
اجازه همه
// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this rule set in production; it allows
// anyone to overwrite your entire database.
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
مسیر {document=**}
مورد استفاده در مثالهای بالا با هر سندی در کل پایگاه داده مطابقت دارد. برای یادگیری نحوه تطبیق مسیرهای داده خاص و کار با داده های سلسله مراتبی، به راهنمای ساختاربندی قوانین امنیتی ادامه دهید.
قوانین تست
Cloud Firestore یک شبیهساز قوانین ارائه میکند که میتوانید از آن برای آزمایش مجموعه قوانین خود استفاده کنید. می توانید از تب Rules در بخش Cloud Firestore کنسول Firebase به شبیه ساز دسترسی داشته باشید.
شبیهساز قوانین به شما امکان میدهد خواندن، نوشتن و حذف احراز هویت و احراز هویت نشده را شبیهسازی کنید. هنگامی که یک درخواست احراز هویت شده را شبیه سازی می کنید، می توانید توکن های احراز هویت را از ارائه دهندگان مختلف بسازید و پیش نمایش کنید. درخواست های شبیه سازی شده بر خلاف مجموعه قوانین در ویرایشگر شما اجرا می شوند، نه مجموعه قوانین مستقر فعلی شما.
استقرار قوانین
قبل از اینکه بتوانید از Cloud Firestore از برنامه تلفن همراه خود استفاده کنید، باید قوانین امنیتی را اعمال کنید. میتوانید قوانین را در کنسول Firebase، با استفاده از Firebase CLI یا با REST API مدیریت Cloud Firestore مستقر کنید.
بهروزرسانیهای Cloud Firestore Security Rules میتواند تا یک دقیقه طول بکشد تا بر جستارها و شنوندگان جدید تأثیر بگذارد. با این حال، انتشار کامل تغییرات و تأثیر بر شنوندگان فعال ممکن است تا 10 دقیقه طول بکشد.
از کنسول Firebase استفاده کنید
برای تنظیم و استقرار اولین مجموعه قوانین خود، برای پایگاه داده پیش فرض در پروژه خود، تب Rules را در بخش Cloud Firestore کنسول Firebase باز کنید.
قوانین خود را در ویرایشگر آنلاین بنویسید، سپس روی انتشار کلیک کنید.
از Firebase CLI استفاده کنید
همچنین می توانید قوانین را با استفاده از Firebase CLI مستقر کنید. استفاده از CLI به شما این امکان را می دهد که قوانین خود را با کد برنامه خود تحت کنترل نسخه نگه دارید و قوانین را به عنوان بخشی از فرآیند استقرار موجود خود مستقر کنید.
// Set up Firestore in your project directory, creates a .rules file
firebase init firestore
// Edit the generated .rules file to your desired security rules
// ...
// Deploy rules for all configured databases
firebase deploy --only firestore
افزایش امنیت برای Cloud Storage
برنامه های شما از ویژگی های پایگاه داده قوی Cloud Firestore و ویژگی های ذخیره سازی و مدیریت فایل Cloud Storage بهره مند می شوند. استفاده از این محصولات با هم، امنیت برنامه را نیز تقویت می کند، زیرا Cloud Firestore می تواند الزامات مجوز قابل استفاده توسط قوانین امنیتی Firebase را برای هر دو محصول دریافت کند. برای اطلاعات بیشتر، راهنمای Cloud Storage را ببینید.
مراحل بعدی
- نحوه ساختاربندی قوانین امنیتی را بیاموزید.
- شرایط قوانین امنیتی سفارشی را بنویسید.
- مرجع قوانین امنیتی را بخوانید.