با قوانین امنیتی 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 شامل عبارات تطبیقی ​​است که اسناد 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 مستقر کنید.

به‌روزرسانی‌های قوانین امنیتی 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 your .rules file
firebase deploy --only firestore:rules

مراحل بعدی