Bắt đầu với Quy tắc bảo mật của Cloud Firestore

Với Quy tắc bảo mật của Cloud Firestore, bạn có thể tập trung vào việc xây dựng trải nghiệm người dùng tuyệt vời mà không cần phải quản lý cơ sở hạ tầng hoặc viết mã ủy quyền và xác thực phía máy chủ.

Các quy tắc bảo mật cung cấp khả năng kiểm soát truy cập và xác thực dữ liệu theo định dạng đơn giản nhưng mang tính biểu cảm. Để xây dựng hệ thống truy cập dựa trên vai trò và người dùng nhằm giữ an toàn cho dữ liệu của người dùng, bạn cần sử dụng Xác thực Firebase với Quy tắc bảo mật của Cloud Firestore.

Quy tắc bảo mật phiên bản 2

Kể từ tháng 5 năm 2019, phiên bản 2 của quy tắc bảo mật Cloud Firestore hiện đã có sẵn. Phiên bản 2 của quy tắc thay đổi hành vi của các ký tự đại diện đệ quy {name=**} . Bạn phải sử dụng phiên bản 2 nếu định sử dụng truy vấn nhóm tuyển tập . Bạn phải chọn tham gia phiên bản 2 bằng cách tạo rules_version = '2'; dòng đầu tiên trong quy tắc bảo mật của bạn:

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

Quy tắc viết

Bạn sẽ viết và quản lý Quy tắc bảo mật của Cloud Firestore phù hợp với mô hình dữ liệu bạn tạo cho cơ sở dữ liệu mặc định và từng cơ sở dữ liệu bổ sung trong dự án của bạn.

Tất cả các Quy tắc bảo mật của Cloud Firestore bao gồm các câu lệnh match , xác định các tài liệu trong cơ sở dữ liệu của bạn và allow các biểu thức kiểm soát quyền truy cập vào các tài liệu đó:

service cloud.firestore {
  match /databases/{database}/documents {
    match /<some_path>/ {
      allow read, write: if <some_condition>;
    }
  }
}

Mọi yêu cầu cơ sở dữ liệu từ thư viện máy khách web/di động Cloud Firestore đều được đánh giá theo các quy tắc bảo mật của bạn trước khi đọc hoặc ghi bất kỳ dữ liệu nào. Nếu các quy tắc từ chối quyền truy cập vào bất kỳ đường dẫn tài liệu nào được chỉ định thì toàn bộ yêu cầu sẽ không thành công.

Dưới đây là một số ví dụ về các bộ quy tắc cơ bản. Mặc dù các quy tắc này hợp lệ nhưng chúng không được khuyến nghị cho các ứng dụng sản xuất:

Yêu cầu xác thực

// 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;
    }
  }
}

Phủ nhận tất cả

// Deny read/write access to all users under any conditions
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

Chấp nhận tất cả

// 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;
    }
  }
}

Đường dẫn {document=**} được sử dụng trong các ví dụ trên khớp với bất kỳ tài liệu nào trong toàn bộ cơ sở dữ liệu. Tiếp tục xem hướng dẫn cấu trúc các quy tắc bảo mật để tìm hiểu cách khớp các đường dẫn dữ liệu cụ thể và làm việc với dữ liệu phân cấp.

Quy tắc kiểm tra

Cloud Firestore cung cấp trình mô phỏng quy tắc mà bạn có thể sử dụng để kiểm tra bộ quy tắc của mình. Bạn có thể truy cập trình mô phỏng từ tab Quy tắc trong phần Cloud Firestore của bảng điều khiển Firebase.

Trình mô phỏng quy tắc cho phép bạn mô phỏng các lần đọc, ghi và xóa được xác thực và không được xác thực. Khi mô phỏng một yêu cầu được xác thực, bạn có thể tạo và xem trước mã thông báo xác thực từ nhiều nhà cung cấp khác nhau. Các yêu cầu mô phỏng chạy dựa trên bộ quy tắc trong trình chỉnh sửa của bạn chứ không phải bộ quy tắc hiện được triển khai của bạn.

Triển khai quy tắc

Trước khi có thể bắt đầu sử dụng Cloud Firestore từ ứng dụng di động của mình, bạn sẽ cần triển khai các quy tắc bảo mật. Bạn có thể triển khai các quy tắc trong bảng điều khiển Firebase, sử dụng Firebase CLI hoặc với API REST quản lý Cloud Firestore.

Các bản cập nhật cho Quy tắc bảo mật của Cloud Firestore có thể mất tới một phút để ảnh hưởng đến các truy vấn và trình nghe mới. Tuy nhiên, có thể mất tối đa 10 phút để các thay đổi được phổ biến đầy đủ và ảnh hưởng đến bất kỳ người nghe đang hoạt động nào.

Sử dụng bảng điều khiển Firebase

Để thiết lập và triển khai bộ quy tắc đầu tiên, đối với cơ sở dữ liệu mặc định trong dự án của bạn, hãy mở tab Quy tắc trong phần Cloud Firestore của bảng điều khiển Firebase.

Viết quy tắc của bạn trong trình chỉnh sửa trực tuyến, sau đó nhấp vào Xuất bản .

Sử dụng CLI Firebase

Bạn cũng có thể triển khai các quy tắc bằng Firebase CLI . Việc sử dụng CLI cho phép bạn duy trì các quy tắc của mình dưới sự kiểm soát phiên bản bằng mã ứng dụng của bạn và các quy tắc triển khai như một phần của quy trình triển khai hiện tại của bạn.

// 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

Tăng cường bảo mật cho Cloud Storage

Ứng dụng của bạn sẽ được hưởng lợi từ các tính năng cơ sở dữ liệu mạnh mẽ của Cloud Firestore cũng như các tính năng quản lý và lưu trữ tệp của Cloud Storage. Khi được sử dụng cùng nhau, các sản phẩm này cũng giúp tăng cường bảo mật ứng dụng vì Cloud Firestore có thể nắm bắt các yêu cầu ủy quyền mà Quy tắc bảo mật Firebase có thể sử dụng cho cả hai sản phẩm. Để biết thêm, hãy xem hướng dẫn về Lưu trữ đám mây .

Bước tiếp theo