Firebase Security Rules cung cấp biện pháp bảo vệ mạnh mẽ, 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 bằng Rules làm theo các bước trong hướng dẫn này, giúp bảo mật và bảo vệ ứng dụng của bạn 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 thời gian để xem lại
ngôn ngữ Firebase Security Rules cụ thể cho các sản phẩm Firebase mà bạn đang sử dụng.
Cloud Storage sử dụng siêu tập hợp
của Ngôn ngữ diễn đạt 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.
Hãy bắt đầu bằng cách tìm hiểu cú pháp cốt lõi của ngôn ngữ Firebase Security Rules.
Thiết lập Authentication
Nếu bạn chưa thực hiện, hãy thêm Firebase Authentication vào ứng dụng. 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 tính năng xác minh toàn diện.
Bạn có thể thiết lập thông tin xác thực bổ sung, tuỳ chỉnh 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 sắp xếp dữ liệu có thể ảnh hưởng đến cách bạn sắp xếp và triển khai quy tắc. Khi bạn xác định cấu trúc dữ liệu của mình, hãy cân nhắc ảnh hưởng của chúng đối với cấu trúc Rules của bạn.
Ví dụ: trong Cloud Storage, bạn có thể muốn bao gồm 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ủa bạn 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, tiêu chí truy cập lưu trữ trong Cloud Firestore tài liệu, rồi truy cập vào các tài liệu đó từ Cloud Storage Security Rules.
Khi bạn xác định cấu trúc dữ liệu và quy tắc, hãy lưu ý cách quy tắc phân tầng hoặc không phân 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ụ thể của hệ 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 các quy tắc của bạn
Để xem Rules hiện có, hãy sử dụng CLI Firebase hoặc Bảng điều khiển Firebase. Đảm bảo rằng bạn chỉnh sửa các quy tắc sử dụng cùng một phương pháp, một cách nhất quán để tránh ghi đè nhầm nội dung cập nhật. Nếu bạn không chắc chắn cho dù các quy tắc được xác định cục bộ có phản ánh những cập nhật gần đây nhất, Firebase bảng điều khiển luôn cho thấy phiên bản được triển khai gần đây nhất của Firebase Security Rules.
Để truy cập vào các quy tắc của bạn từ bảng điều khiển Firebase, hãy chọn dự án của bạn, sau đó nhấp vào Bộ nhớ trong bảng điều hướng bên trái. Nhấp vào biểu tượng Rules sau khi bạn đã truy cập vào đúng cơ sở dữ liệu hoặc bộ nhớ.
Để truy cập vào các quy tắc của bạn từ CLI Firebase, hãy chuyển đến tệp quy tắc đã ghi chú trong tệp firebase.json của bạn.
Viết các quy tắc cơ bản
Trong quá trình phát triển ứng dụng và tìm hiểu về Rules, hãy thử triển khai 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 của 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 Trò chơi quy tắc Firebase để nhanh chóng xác thực hành vi. Tuy nhiên, bạn nên kiểm thử kỹ lưỡng hơn bằng Local Emulator Suite trước khi triển khai các thay đổi cho phiên bản chính thức.
Triển khai quy tắc
Sử dụng bảng điều khiển Firebase hoặc CLI Firebase để triển khai các quy tắc của bạn sang phát hành công khai. Làm theo các bước được nêu trong Quản lý và triển khai Firebase Security Rules.