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 phải quản lý cơ sở hạ tầng hoặc viết mã xác thực và mã uỷ quyền phía máy chủ.
Quy tắc bảo mật cung cấp quyền kiểm soát quyền truy cập và xác thực dữ liệu ở định dạng đơn giản nhưng biểu cảm. Để xây dựng hệ thống truy cập dựa trên người dùng và vai trò giúp bảo vệ dữ liệu của người dùng, bạn cần sử dụng Firebase Authentication với Cloud Firestore Security Rules.
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ó. Phiên bản 2 của 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 định sử dụng truy vấn nhóm bộ sưu tậ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 {
Viết quy tắc
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 của mình.
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) 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/thiết bị di động Cloud Firestore đều được đánh giá dựa trên 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 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 cấu trúc quy tắc bảo mật để
tìm hiểu cách khớp với 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ể dùng để kiểm thử bộ quy tắc. Bạn có thể truy cập vào trình mô phỏng này trong bảng điều khiển của Firebase trên thẻ Databases & Storage > Firestore > Rules.
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ã thông báo xác thực từ nhiều nhà cung cấp. 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.
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 quy tắc bảo mật. Bạn có thể triển khai quy tắc trong bảng điều khiển của Firebase, bằng cách sử dụng Giao diện dòng lệnh (CLI) của Firebase hoặc bằng API REST quản lý Cloud Firestore.
Các bản 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 mới và trình nghe. Tuy nhiên, có thể mất đến 10 phút để các thay đổi này được truyền tải đầy đủ 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 của bạn, hãy chuyển đến thẻ Databases & Storage > Firestore > Rules trong bảng điều khiển của Firebase.
Viết quy tắc trong trình chỉnh sửa trực tuyến, sau đó nhấp vào Publish (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 quy tắc bằng cách sử dụng Giao diện dòng lệnh (CLI) của Firebase. Việc sử dụng CLI cho phép bạn quản lý phiên bản của quy tắc bằng mã xử lý ứng dụng và triển khai 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 mạnh mẽ của cơ sở dữ liệu 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 tính bảo mật cho ứng dụng, vì Cloud Firestore có thể thu thập 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
- Tìm hiểu cách cấu trúc quy tắc bảo mật.
- Viết các điều kiện tuỳ chỉnh cho quy tắc bảo mật.
- Đọc tài liệu tham khảo về quy tắc bảo mật.