با قوانین امنیتی Cloud Firestore شروع کنید

با قوانین امنیتی Cloud Firestore، می‌توانید بدون نیاز به مدیریت زیرساخت یا نوشتن کد احراز هویت و مجوز سمت سرور، بر ایجاد یک تجربه کاربری عالی تمرکز کنید.

قوانین امنیتی کنترل دسترسی و اعتبارسنجی داده ها را در قالبی ساده و در عین حال گویا فراهم می کند. برای ساختن سیستم‌های دسترسی مبتنی بر کاربر و نقش‌محور که داده‌های کاربران شما را ایمن نگه می‌دارد، باید از احراز هویت Firebase با قوانین امنیتی Cloud Firestore استفاده کنید.

قوانین امنیتی نسخه 2

از ماه می 2019، نسخه 2 قوانین امنیتی Cloud Firestore اکنون در دسترس است. نسخه 2 قوانین رفتار حروف عام بازگشتی {name=**} تغییر می‌دهد. اگر قصد استفاده از پرس و جوهای گروه مجموعه را دارید، باید از نسخه 2 استفاده کنید. شما باید با ایجاد rules_version = '2'; خط اول در قوانین امنیتی شما:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

قوانین نوشتن

شما قوانین امنیتی Cloud Firestore را متناسب با مدل داده ای که برای پایگاه داده پیش فرض و هر پایگاه داده اضافی در پروژه خود ایجاد می کنید، می نویسید و مدیریت می کنید.

همه قوانین امنیتی Cloud Firestore شامل عبارات 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 می‌تواند تا یک دقیقه طول بکشد تا بر جستارها و شنوندگان جدید تأثیر بگذارد. با این حال، انتشار کامل تغییرات و تأثیر بر شنوندگان فعال ممکن است تا 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 Firestore و ویژگی های ذخیره سازی و مدیریت فایل Cloud Storage بهره مند خواهند شد. استفاده از این محصولات با هم، امنیت برنامه را نیز تقویت می کند، زیرا Cloud Firestore می تواند الزامات مجوز قابل استفاده توسط قوانین امنیتی Firebase را برای هر دو محصول دریافت کند. برای اطلاعات بیشتر، راهنمای ذخیره‌سازی ابری را ببینید.

مراحل بعدی