Firebase Security Rules cung cấp khả năng bảo vệ mạnh mẽ và hoàn toàn có thể tuỳ chỉnh cho dữ liệu của bạn trong Cloud Firestore, Realtime Database, và Cloud Storage. Bạn có thể dễ dàng bắt đầu sử dụng Security Rules bằng cách làm theo các bước trong hướng dẫn này để bảo mật dữ liệu và bảo vệ ứng dụng khỏi những người dùng độc hại.
Tìm hiểu ngôn ngữ Firebase Security Rules
Trước khi bắt đầu viết quy tắc, bạn nên dành chút thời gian để xem lại
ngôn ngữ cụ thể của Firebase Security Rules cho các sản phẩm của Firebase mà bạn đang sử dụng.
Cloud Storage tận dụng một tập hợp siêu của Ngôn ngữ biểu thức thông thường (CEL) dựa trên match và allow các câu lệnh để đặt điều kiện truy cập tại một đường dẫn đã xác định.
Bắt đầu bằng cách tìm hiểu cú pháp cốt lõi của Firebase Security Rules ngôn ngữ.
Thiết lập Authentication
Nếu chưa thực hiện, hãy thêm Firebase Authentication vào ứng dụng của bạn. Firebase Authentication hỗ trợ nhiều phương thức xác thực phổ biến và tích hợp với Firebase Security Rules để cung cấp các khả năng xác minh toàn diện.
Bạn có thể thiết lập thông tin xác thực tuỳ chỉnh bổ sung cho ứng dụng của mình.
Tìm hiểu thêm về Firebase Security Rules và Firebase Authentication.
Xác định cấu trúc dữ liệu và quy tắc
Cách bạn cấu trúc dữ liệu có thể ảnh hưởng đến cách bạn cấu trúc và triển khai quy tắc. Khi xác định cấu trúc dữ liệu, hãy cân nhắc những tác động mà chúng có thể gây ra đối với cấu trúc Security Rules.
Ví dụ: trong Cloud Storage, bạn có thể muốn đưa vào một trường biểu thị vai trò cụ thể cho từng người dùng. Sau đó, các quy tắc có thể đọc trường đó và sử dụng trường đó để cấp quyền truy cập dựa trên vai trò. Bạn cũng có thể tạo cơ sở dữ liệu Cloud Firestore, lưu trữ tiêu chí truy cập trong tài liệu Cloud Firestore, sau đó truy cập vào các tài liệu đó từ Cloud Storage Security Rules.
Khi xác định kiến trúc dữ liệu và quy tắc, hãy lưu ý cách các quy tắc xếp tầng hoặc không xếp tầng, tuỳ thuộc vào sản phẩm của bạn. Với Realtime Database, các quy tắc hoạt động từ trên xuống, trong đó các quy tắc nông hơn sẽ ghi đè các quy tắc sâu hơn. Nếu một quy tắc cấp quyền đọc hoặc ghi tại một đường dẫn cụ thể, thì quy tắc đó cũng cấp quyền truy cập vào tất cả các nút con bên dưới. Ngược lại, với Cloud Firestore và Cloud Storage, các quy tắc chỉ áp dụng ở các cấp được chỉ định của hệ thống phân cấp dữ liệu, và bạn viết các quy tắc rõ ràng để kiểm soát quyền truy cập vào các cấp khác nhau.
Truy cập vào quy tắc
Để xem Security Rules hiện có, hãy sử dụng Firebase CLI hoặc Firebase console. Đảm bảo bạn chỉnh sửa quy tắc bằng cùng một phương thức một cách nhất quán để tránh vô tình ghi đè các bản cập nhật. Nếu bạn không chắc liệu các quy tắc được xác định cục bộ có phản ánh các bản cập nhật gần đây nhất hay không, thì bảng điều khiển Firebase luôn hiển thị phiên bản được triển khai gần đây nhất của Firebase Security Rules.
Để truy cập vào quy tắc từ bảng điều khiển Firebase, hãy chọn dự án của bạn, sau đó trong bảng điều hướng bên trái, hãy nhấp vào Bộ nhớ. Nhấp vào Security Rules sau khi bạn ở đúng cơ sở dữ liệu hoặc vùng lưu trữ.
Để truy cập vào quy tắc từ Firebase CLI, hãy chuyển đến tệp quy tắc được ghi chú trong tệp firebase.json.
Viết quy tắc cơ bản
Khi đang phát triển ứng dụng và tìm hiểu về Security Rules, hãy thử triển khai Security Rules để giải quyết một số trường hợp sử dụng cơ bản, bao gồm:
- Chỉ chủ sở hữu nội dung: Hạn chế quyền truy cập vào nội dung theo người dùng.
- Quyền truy cập hỗn hợp: Hạn chế quyền ghi theo người dùng, nhưng cho phép quyền đọc công khai.
- Quyền truy cập dựa trên thuộc tính: Hạn chế quyền truy cập vào một nhóm hoặc loại người dùng.
Kiểm thử quy tắc
Nếu đang thiết lập Firebase Security Rules trong bảng điều khiển Firebase, bạn có thể sử dụng Sân chơi quy tắc của Firebase để nhanh chóng xác thực hành vi. Tuy nhiên, bạn nên kiểm thử kỹ hơn bằng Local Emulator Suite trước khi triển khai các thay đổi cho bản phát hành chính thức.
Triển khai quy tắc
Sử dụng bảng điều khiển Firebase hoặc Firebase CLI để triển khai quy tắc cho bản phát hành chính thức. Làm theo các bước được nêu trong Quản lý và triển khai Firebase Security Rules.