Làm quen với Quy tắc bảo mật của Cloud Firestore

Với Cloud Firestore Security Rules, 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 quản lý cơ sở hạ tầng hoặc viết mã xác thực và uỷ quyền phía máy chủ.

Quy tắc bảo mật cung cấp quyền kiểm soát truy cập và xác thực dữ liệu ở định dạng đơn giản nhưng dễ hiểu. Để 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ò nhằm đảm bảo an toàn cho dữ liệu của người dùng, bạn cần sử dụng Firebase Authentication với Cloud Firestore Security Rules.





Để được trợ giúp AI, hãy sao chép câu lệnh bên dưới vào tác nhân lập trình AI (như Gemini trong Android Studio, Antigravity, Claude Code, Codex và Cursor). Bạn có thể tuỳ chỉnh câu lệnh và lặp lại với tác nhân. Truy cập vào bài viết Kỹ năng của tác nhân Firebase để biết thông tin chi tiết về cách cài đặt.

Help me use Firebase in my app.
1. Make sure that **Firebase agent skills** are installed and updated. For Claude Code, Codex, or Cursor agents, help me install the Firebase plugin. For other agents, run `npx skills add firebase/agent-skills`. Always try to use **Firebase agent skills** for Firebase-related tasks.
2. Help me write, validate, and deploy Firebase Security Rules to protect my app's Firestore data.

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 các quy tắc này thay đổi hành vi của ký tự đại diện đệ quy {name=**}. Bạn phải sử dụng phiên bản 2 nếu dự định sử dụng truy vấn nhóm tập hợp. Bạn phải chọn sử dụng phiên bản 2 bằng cách đặt rules_version = '2'; làm dòng đầu tiên trong quy tắc bảo mật:

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

Quy tắc viết

Bạn sẽ viết và quản lý Cloud Firestore Security Rules phù hợp với mô hình dữ liệu mà 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.

Tất cả Cloud Firestore Security Rules đều bao gồm các câu lệnh match (xác định 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 về cơ sở dữ liệu từ thư viện ứng dụng web/di động Cloud Firestore đều được đánh giá theo quy tắc bảo mật của bạn trước khi đọc hoặc ghi dữ liệu. 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ề bộ quy tắc cơ bản. Mặc dù các quy tắc này hợp lệ, nhưng bạn không nên dùng 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 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. Hãy tiếp tục xem hướng dẫn về cách tạo cấu trúc cho quy tắc bảo mật để tìm hiểu cách so 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.

Đang thử nghiệm quy tắc

Cloud Firestore cung cấp một trình mô phỏng quy tắc mà bạn có thể dùng để kiểm thử bộ quy tắc của mình. Bạn có thể truy cập vào trình mô phỏng trong cả Cloud Console và 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 thao tác đọc, ghi và xoá đã xác thực và chưa xác thực. Khi mô phỏng một yêu cầu đã xác thực, bạn có thể tạo và xem trước mã xác thực từ nhiều nhà cung cấp. Yêu cầu mô phỏng chạy theo bộ quy tắc trong trình chỉnh sửa, chứ không phải bộ quy tắc đã triển khai.

Kiểm tra quy tắc trong Google Cloud Console

Trình mô phỏng quy tắc trong Google Cloud Console được cung cấp cho Firestore ở Chế độ gốc trong cả phiên bản Standard và Enterprise.

Các quyền bắt buộc

Để kiểm thử các quy tắc bảo mật trong Google Cloud Console, bạn cần có quyền IAM sau:

  • firebaserules.rulesets.test

Cách mô phỏng yêu cầu cơ sở dữ liệu trong Google Cloud Console:

  1. Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).
  2. Nhấp vào mã nhận dạng của cơ sở dữ liệu mà bạn muốn kiểm tra.
  3. Trong trình đơn điều hướng, hãy nhấp vào Bảo mật.
  4. Nhấp vào thẻ Trình mô phỏng.
  5. Trong danh sách thả xuống Simulation type (Loại mô phỏng), hãy chọn một loại thao tác: get (lấy), create (tạo), update (cập nhật) hoặc delete (xoá).
  6. Trong trường Vị trí, hãy nhập đường dẫn tài liệu mà bạn muốn kiểm tra (ví dụ: users/user_123).
  7. (Không bắt buộc) Đối với các yêu cầu create (tạo) và update (cập nhật), hãy nhấp vào Build document (Tạo tài liệu) để định cấu hình tải trọng tài liệu mô phỏng.
  8. (Không bắt buộc) Để mô phỏng một yêu cầu đã xác thực, hãy bật chế độ Xác thực, chọn một nhà cung cấp dịch vụ xác thực (chẳng hạn như google.com hoặc Ẩn danh) rồi định cấu hình các trường tải trọng mã thông báo.
  9. Nhấp vào Chạy.

Bảng đánh giá cho biết yêu cầu được cho phép hay bị từ chối, các mục báo cáo chi tiết cho từng điều kiện được đánh giá và các điểm nổi bật ở cấp dòng trong trình soạn thảo mã.

Kiểm thử các quy tắc trong bảng điều khiển của Firebase

Để kiểm thử các quy tắc trong bảng điều khiển của Firebase, hãy chuyển đến thẻ Databases & Storage (Cơ sở dữ liệu và bộ nhớ) > Firestore > Rules (Quy tắc). Nhấp vào Rules Playground (Sân chơi quy tắc) để mở phần cài đặt trình mô phỏng, chọn các lựa chọn mô phỏng rồi nhấp vào Run (Chạy).

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, bạn 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 của Firebase, trong Google Cloud Console, bằng cách sử dụng Giao diện dòng lệnh (CLI) của Firebase hoặc bằng Cloud Firestore API REST quản lý.

Nội dung cập nhật cho Cloud Firestore Security Rules có thể mất đến 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 đến 10 phút để áp dụng đầy đủ các thay đổi 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 chuyển đến thẻ Databases & Storage (Cơ sở dữ liệu và bộ nhớ) > Firestore > Rules (Quy tắc) trong bảng điều khiển của Firebase.

Nếu tạo nhiều cơ sở dữ liệu cho dự án, bạn có thể triển khai Cloud Firestore Security Rules cho từng cơ sở dữ liệu. Trong bảng điều khiển của Firebase, hãy sử dụng bộ chọn cơ sở dữ liệu để chuyển đổi giữa cơ sở dữ liệu mặc định và bất kỳ cơ sở dữ liệu bổ sung nào.

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

Sử dụng Google Cloud Console

Bạn có thể quản lý và triển khai Cloud Firestore Security Rules ngay trong Google Cloud Console. Trình chỉnh sửa quy tắc có sẵn cho Firestore ở Chế độ gốc trong cả phiên bản Standard và Enterprise.

Các quyền bắt buộc

Để quản lý và triển khai các quy tắc bảo mật trong Google Cloud Console, bạn cần có các quyền IAM sau:

  • firebaserules.releases.create
  • firebaserules.releases.delete
  • firebaserules.releases.update
  • firebaserules.rulesets.create
  • firebaserules.rulesets.delete
  • firebaserules.rulesets.list
  • firebaserules.rulesets.test (bắt buộc để sử dụng trình mô phỏng quy tắc)

Cách triển khai quy tắc trong Google Cloud Console:

  1. Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).
  2. Nhấp vào mã nhận dạng của cơ sở dữ liệu mà bạn muốn quản lý.
  3. Trong trình đơn điều hướng, hãy nhấp vào Bảo mật.
  4. Nhấp vào thẻ Quy tắc Firestore.
  5. Trong trình chỉnh sửa quy tắc, hãy xem các quy tắc của bạn. Để chỉnh sửa, hãy nhấp vào Bộ quy tắc mới hoặc Sao chép bộ quy tắc, sau đó sửa đổi quy tắc của bạn.
  6. Nhấp vào Xuất bản để triển khai các thay đổi.

Bạn cũng có thể xem các nhóm quy tắc trước đó trong dòng thời gian và sao chép hoặc khôi phục các nhóm quy tắc đó.

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 Giao diện dòng lệnh (CLI) của Firebase. Việc sử dụng CLI cho phép bạn giữ các quy tắc trong chế độ quản lý phiên bản bằng mã xử lý ứng dụng và triển khai các quy tắc trong quy trình triển khai hiện có.

// 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 và 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 cho ứng dụng, vì Cloud Firestore có thể nắm bắt các yêu cầu 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