Firebase Security Rules มอบการป้องกันที่มีประสิทธิภาพและปรับแต่งได้อย่างเต็มรูปแบบสำหรับข้อมูลของคุณ Cloud Firestore, Realtime Database และ Cloud Storage คุณสามารถดู เริ่มต้นด้วย Rules ทำตามขั้นตอนในคู่มือนี้ ข้อมูลและปกป้องแอปของคุณจากผู้ใช้ที่เป็นอันตราย
ทําความเข้าใจภาษา Firebase Security Rules
ก่อนเริ่มเขียนกฎ คุณควรใช้เวลาสักครู่เพื่ออ่านFirebase Security Rulesภาษาเฉพาะสำหรับผลิตภัณฑ์ Firebase ที่คุณใช้
Cloud Storage ใช้ประโยชน์จากซูเปอร์เซ็ต
ของ Common Expression Language (CEL) ที่ใช้ match
และ allow
ที่กำหนดเงื่อนไขสำหรับการเข้าถึงตามเส้นทางที่กำหนด
เริ่มต้นด้วยการเรียนรู้ไวยากรณ์หลักของภาษา Firebase Security Rules
ตั้งค่า Authentication
หากยังไม่ได้ดำเนินการ ให้เพิ่ม Firebase Authentication ลงในแอป Firebase Authentication รองรับวิธีการตรวจสอบสิทธิ์ทั่วไปหลายวิธีและผสานรวมกับ Firebase Security Rules เพื่อให้สามารถยืนยันได้อย่างครอบคลุม
คุณสามารถตั้งค่าข้อมูลการตรวจสอบสิทธิ์ที่กำหนดเองเพิ่มเติมสำหรับแอปได้
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Firebase Security Rules และ Firebase Authentication
กําหนดโครงสร้างข้อมูลและกฎ
การจัดโครงสร้างข้อมูลอาจส่งผลต่อวิธีจัดโครงสร้างและใช้งานกฎ เมื่อคุณกำหนดโครงสร้างข้อมูล ให้พิจารณา หรือผลกระทบที่อาจเกิดขึ้นกับโครงสร้าง Rules
เช่น ใน Cloud Storage คุณอาจต้องการใส่ ฟิลด์ที่แสดงบทบาทเฉพาะสำหรับผู้ใช้แต่ละคน จากนั้นกฎจะอ่าน ช่องดังกล่าวและใช้เพื่อให้สิทธิ์เข้าถึงตามบทบาท นอกจากนี้คุณยังสร้าง ฐานข้อมูล Cloud Firestore, เกณฑ์การเข้าถึงที่เก็บใน Cloud Firestore จากนั้นเข้าถึงเอกสารเหล่านั้นจาก Cloud Storage Security Rules
ขณะที่คุณกำหนดโครงสร้างข้อมูลและกฎ โปรดคำนึงถึงสิ่งต่อไปนี้ การเรียงซ้อนหรือไม่เรียงซ้อนกัน ขึ้นอยู่กับผลิตภัณฑ์ของคุณ ด้วย Realtime Database จะทำงานจากบนลงล่าง และกฎที่ละเอียดกว่าจะลบล้างกฎที่ลึกกว่า หากมี กฎจะให้สิทธิ์อ่านหรือเขียนที่เส้นทางใดเส้นทางหนึ่ง จากนั้นก็จะให้สิทธิ์ เข้าถึงโหนดย่อยทั้งหมดภายใต้โหนดย่อยได้ ในทางตรงกันข้ามกับ Cloud Firestore และ Cloud Storage กฎจะใช้ในระดับที่ระบุของลำดับชั้นข้อมูลเท่านั้น และคุณเขียนกฎอย่างชัดแจ้งเพื่อควบคุมการเข้าถึงระดับต่างๆ
เข้าถึงกฎ
หากต้องการดู Rules ที่มีอยู่ ให้ใช้ Firebase CLI หรือ คอนโซล Firebase ตรวจสอบให้แน่ใจว่าคุณแก้ไขกฎโดยใช้วิธีการเดียวกัน อย่างสม่ำเสมอ เพื่อหลีกเลี่ยงการเขียนทับการอัปเดตโดยไม่ได้ตั้งใจ หากไม่แน่ใจ ว่ากฎที่กำหนดในเครื่องสอดคล้องกับการอัปเดตล่าสุดหรือไม่ คอนโซลจะแสดง Firebase Security Rules เวอร์ชันล่าสุดที่ใช้งานเสมอ
หากต้องการเข้าถึงกฎจากคอนโซล Firebase ให้เลือก โปรเจ็กต์ จากนั้นในแผงการนำทางด้านซ้าย ให้คลิก พื้นที่เก็บข้อมูล คลิก Rules เมื่อคุณอยู่ในฐานข้อมูลหรือที่เก็บข้อมูลบัケットที่ถูกต้อง
ในการเข้าถึงกฎจาก Firebase CLI ให้ไปที่ ในไฟล์กฎที่ระบุไว้ในไฟล์ firebase.json
เขียนกฎพื้นฐาน
ขณะพัฒนาแอปและทำความเข้าใจ Rules ให้ลองใช้ Rules เพื่อจัดการกับ Use Case พื้นฐาน 2-3 รายการต่อไปนี้
- เจ้าของเนื้อหาเท่านั้น: จำกัดการเข้าถึงเนื้อหาโดยผู้ใช้
- สิทธิ์การเข้าถึงแบบผสม: จำกัดสิทธิ์การเขียนตามผู้ใช้ แต่อนุญาตสิทธิ์การอ่านแบบสาธารณะ
- การเข้าถึงตามแอตทริบิวต์: จำกัดการเข้าถึงให้เฉพาะกับกลุ่มหรือประเภทผู้ใช้
ทดสอบกฎ
หากกำลังตั้งค่า Firebase Security Rules ในคอนโซล Firebase คุณสามารถใช้ พื้นที่สำหรับกฎ Firebase เพื่อตรวจสอบอย่างรวดเร็ว พฤติกรรมของคุณ อย่างไรก็ตาม เราขอแนะนำให้ทดสอบอย่างละเอียดมากขึ้นด้วย Local Emulator Suite ก่อนนำการเปลี่ยนแปลงไปใช้งานจริง
ทำให้กฎใช้งานได้
ใช้คอนโซล Firebase หรือ CLI ของ Firebase เพื่อทำให้กฎใช้งานได้ สำหรับเวอร์ชันที่ใช้งานจริง ทำตามขั้นตอนที่ระบุไว้ใน จัดการและทำให้ Firebase Security Rules ใช้งานได้