با استفاده از Cloud Firestore Security Rules ، میتوانید بدون نیاز به مدیریت زیرساخت یا نوشتن کد احراز هویت و مجوز سمت سرور، بر ایجاد یک تجربه کاربری عالی تمرکز کنید.
قوانین امنیتی، کنترل دسترسی و اعتبارسنجی دادهها را در قالبی ساده اما رسا ارائه میدهند. برای ساخت سیستمهای دسترسی مبتنی بر کاربر و مبتنی بر نقش که دادههای کاربران شما را ایمن نگه میدارند، باید از احراز هویت Firebase به همراه Cloud Firestore Security Rules استفاده کنید.
قوانین امنیتی نسخه ۲
از ماه مه ۲۰۱۹، نسخه ۲ قوانین امنیتی Cloud Firestore اکنون در دسترس است. نسخه ۲ این قوانین، رفتار کاراکترهای بازگشتی {name=**} را تغییر میدهد. اگر قصد استفاده از پرسوجوهای گروهی مجموعه را دارید، باید از نسخه ۲ استفاده کنید. باید با قرار دادن 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 دقیقه طول بکشد.
استفاده از کنسول فایربیس
برای تنظیم و استقرار اولین مجموعه قوانین خود، برای پایگاه داده پیشفرض در پروژه خود، تب قوانین را در بخش Cloud Firestore کنسول Firebase باز کنید.
قوانین خود را در ویرایشگر آنلاین بنویسید، سپس روی انتشار کلیک کنید.
از رابط خط فرمان فایربیس استفاده کنید
همچنین میتوانید قوانین را با استفاده از 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 مراجعه کنید.
مراحل بعدی
- یاد بگیرید که چگونه قوانین امنیتی را ساختاردهی کنید .
- شرایط قوانین امنیتی سفارشی را بنویسید.
- مرجع قوانین امنیتی را مطالعه کنید.