Firebase Security Rules มีการปกป้องข้อมูลใน Cloud Firestore, Realtime Database, และ Cloud Storage ที่มีประสิทธิภาพและปรับแต่งได้อย่างสมบูรณ์ คุณเริ่มต้นใช้งาน Security 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
กำหนดโครงสร้างข้อมูลและกฎ
วิธีที่คุณจัดโครงสร้างข้อมูลอาจส่งผลต่อวิธีที่คุณจัดโครงสร้างและใช้กฎ เมื่อกำหนดโครงสร้างข้อมูล ให้พิจารณา ผลกระทบที่โครงสร้างดังกล่าวอาจมีต่อโครงสร้าง Security Rules
ตัวอย่างเช่น ใน Cloud Storage คุณอาจต้องการรวม ช่องที่ระบุบทบาทที่เฉพาะเจาะจงสำหรับผู้ใช้แต่ละราย จากนั้นกฎจะอ่านช่องดังกล่าวและใช้เพื่อให้สิทธิ์เข้าถึงตามบทบาท นอกจากนี้ คุณยังสร้าง ฐานข้อมูล Cloud Firestore จัดเก็บเกณฑ์การเข้าถึงในเอกสาร Cloud Firestore แล้วเข้าถึงเอกสารเหล่านั้นจาก Cloud Storage Security Rules ได้ด้วย
เมื่อกำหนดสถาปัตยกรรมข้อมูลและกฎ ให้คำนึงถึงวิธีที่กฎจะเรียงซ้อนหรือไม่เรียงซ้อนกัน ทั้งนี้ขึ้นอยู่กับผลิตภัณฑ์ สำหรับ Realtime Database, กฎจะทำงานจากบนลงล่าง โดยกฎที่อยู่ระดับบนจะลบล้างกฎที่อยู่ระดับล่าง หากกฎให้สิทธิ์อ่านหรือเขียนในเส้นทางหนึ่ง กฎนั้นจะให้สิทธิ์เข้าถึงโหนดย่อยทั้งหมดในเส้นทางนั้นด้วย ในทางตรงกันข้าม สำหรับ Cloud Firestore และ Cloud Storage กฎจะมีผลเฉพาะในระดับที่ระบุของลำดับชั้นข้อมูล และคุณต้องเขียนกฎที่ชัดเจนเพื่อควบคุมการเข้าถึงในระดับต่างๆ
เข้าถึงกฎ
หากต้องการดู Security Rules ที่มีอยู่ ให้ใช้ Firebase CLI หรือคอนโซล Firebase ตรวจสอบว่าคุณแก้ไขกฎโดยใช้วิธีเดียวกันอย่างสม่ำเสมอเพื่อหลีกเลี่ยงการเขียนทับการอัปเดตโดยไม่ได้ตั้งใจ หากไม่แน่ใจ ว่ากฎที่กำหนดไว้ในเครื่องของคุณแสดงการอัปเดตล่าสุดหรือไม่ คอนโซล Firebase จะแสดงเวอร์ชันที่ใช้งานจริงล่าสุดของ Firebase Security Rules เสมอ
หากต้องการเข้าถึงกฎจากคอนโซล Firebase ให้เลือกโปรเจ็กต์ แล้วคลิก Storage ในแผงการนำทางด้านซ้าย คลิกSecurity Rules เมื่ออยู่ในฐานข้อมูลหรือบัคเก็ตพื้นที่เก็บข้อมูลที่ถูกต้อง
หากต้องการเข้าถึงกฎจาก Firebase CLI ให้ไปที่ ไฟล์กฎที่ระบุไว้ใน ไฟล์ firebase.json
เขียนกฎพื้นฐาน
เมื่อพัฒนาแอปและทำความเข้าใจ Security Rules ให้ลอง ใช้ Security Rules เพื่อจัดการกับ กรณีการใช้งานพื้นฐาน 2-3 กรณี ซึ่งรวมถึงกรณีต่อไปนี้
- เจ้าของเนื้อหาเท่านั้น: จำกัดการเข้าถึงเนื้อหาตามผู้ใช้
- การเข้าถึงแบบผสม: จำกัดสิทธิ์เข้าถึงในการเขียนตามผู้ใช้ แต่ให้สิทธิ์เข้าถึงในการอ่านแบบสาธารณะ
- การเข้าถึงตามแอตทริบิวต์: จำกัดการเข้าถึงกลุ่มหรือผู้ใช้ประเภทหนึ่ง
ทดสอบกฎ
หากคุณตั้งค่า Firebase Security Rules ในคอนโซล Firebase คุณสามารถใช้ Firebase Rules Playground เพื่อตรวจสอบลักษณะการทำงาน ได้อย่างรวดเร็ว อย่างไรก็ตาม เราขอแนะนำให้ทดสอบอย่างละเอียดมากขึ้นด้วย Local Emulator Suite ก่อนที่จะนำ การเปลี่ยนแปลงไปใช้จริง
นำกฎไปใช้จริง
ใช้คอนโซล Firebase หรือ Firebase CLI เพื่อนำกฎไปใช้จริง ทำตามขั้นตอนที่ระบุไว้ใน จัดการและนำFirebase Security Rulesไปใช้จริง