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