Làm quen 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 một 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 ghi phía máy chủ mã xác thực và uỷ quyền.

Quy tắc bảo mật giúp kiểm soát quyền truy cập và xác thực dữ liệu một cách đơn giản định dạng biểu cảm. Để xây dựng hệ thống truy cập dựa trên người dùng và dựa trên vai trò giúp của người dùng an toàn cho dữ liệu, bạn cần phải sử dụng Firebase Xác thực bằng 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 sẵn có. Phiên bản 2 của các quy tắc này thay đổi hành vi của toán tử đệ quy ký tự đại diện {name=**}. Bạn phải sử dụng phiên bản 2 nếu định sử dụng truy vấn nhóm thu thập. Bạn phải chọn tham gia phiên bản 2 bằng cách đặt rules_version = '2'; làm dòng đầu tiên trong hoạt động bảo mật quy tắc:

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

Ghi quy tắc

Bạn sẽ viết và quản lý các Quy tắc bảo mật trên Cloud Firestore được điều chỉnh theo mô hình dữ liệu mà bạn tạo cơ sở dữ liệu mặc định và từng cơ sở dữ liệu bổ sung trong dự án.

Tất cả Quy tắc bảo mật của Cloud Firestore đều bao gồm các câu lệnh match. Các câu lệnh này xác định các tài liệu trong cơ sở dữ liệu của bạn và biểu thức allow 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 ứng dụng web/dành cho thiết bị di động Cloud Firestore đều được đánh giá dựa trên các quy tắc bảo mật của mình 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 cấp quyền truy cập đến 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ề bộ quy tắc cơ bản. Mặc dù các quy tắc này hợp lệ, nhưng không được đề xuất cho các ứng dụng phát hành công khai:

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

Từ chối 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;
    }
  }
}

Cho phép 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 mọi tài liệu trong toàn bộ cơ sở dữ liệu. Tiếp tục chuyển đến hướng dẫn về cấu trú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.

Kiểm thử quy tắc

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

Trình mô phỏng quy tắc cho phép bạn mô phỏng các lần đọc đã xác thực và chưa được xác thực, ghi và xoá. 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. Chạy các yêu cầu được mô phỏng 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.

Triển khai quy tắc

Trước khi có thể bắt đầu sử dụng Cloud Firestore trên ứng dụng di động, bạn cần có để 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 của Firebase bằng cách sử dụng Firebase CLI hoặc với API REST quản lý của Cloud Firestore.

Nội dung cập nhật đối với Quy tắc bảo mật của Cloud Firestore có thể mất tới một phút mới ảnh hưởng đến các truy vấn mới và người nghe. Tuy nhiên, có thể mất tới 10 phút để các thay đổi có hiệu lực hoàn toàn và ảnh hưởng đến mọi trình nghe đang hoạt động.

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

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

Viết các 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 Giao diện dòng lệnh (CLI) của Firebase

Bạn cũng có thể triển khai các quy tắc bằng Firebase Giao diện dòng lệnh (CLI). Việc sử dụng CLI cho phép bạn luôn các quy tắc của bạn trong việc kiểm soát phiên bản bằng mã xử lý ứng dụng và triển khai các quy tắc dưới dạng của quá trình triển khai hiện tại.

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

Các ứng dụng của bạn sẽ được hưởng lợi từ các tính năng mạnh mẽ của cơ sở dữ liệu 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. Đã dùng cùng với 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 về việc uỷ quyền mà Quy tắc bảo mật của Firebase có thể sử dụng cho cả hai sản phẩm. Để biết thêm thông tin, hãy xem hướng dẫn về Cloud Storage.

Các bước tiếp theo