Firebase Security Rules
ใช้กฎการรักษาความปลอดภัยของ Firebase ที่ยืดหยุ่นและขยายได้เพื่อ รักษาความปลอดภัยของข้อมูลใน Cloud Firestore, Firebase Realtime Database และ Cloud Storage
Firebase Security Rules อยู่ระหว่างข้อมูลของคุณกับผู้ใช้ที่ไม่ประสงค์ดี คุณสามารถเขียนกฎที่เรียบง่ายหรือซับซ้อนเพื่อปกป้องข้อมูลของแอปในระดับรายละเอียดที่แอปของคุณต้องการ
Firebase Security Rules ใช้ ภาษาการกำหนดค่าที่ยืดหยุ่นและขยายได้เพื่อกำหนดข้อมูลที่ผู้ใช้ เข้าถึงได้สำหรับ Realtime Database, Cloud Firestore และ Cloud Storage Firebase Realtime Database Security Rules ใช้ประโยชน์จาก JSON ในคำจำกัดความของกฎ ขณะที่ Cloud Firestore Security Rules และ Firebase Security Rules สำหรับ Cloud Storage ใช้ประโยชน์จาก ภาษาเฉพาะที่สร้างขึ้นเพื่อรองรับโครงสร้างที่ซับซ้อนยิ่งขึ้นสำหรับกฎที่เฉพาะเจาะจง
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีตั้งค่า Rules สำหรับผลิตภัณฑ์ Firebase ที่เฉพาะเจาะจง ที่คุณใช้ในแอป และวิธีที่ลักษณะการทำงานของ Rules แตกต่างกันในผลิตภัณฑ์ Firebase
ความสามารถหลัก
| ความยืดหยุ่น | เขียนกฎที่กำหนดเองซึ่งสอดคล้องกับโครงสร้างและลักษณะการทำงานของแอป Rules ใช้ภาษาที่ช่วยให้คุณใช้ประโยชน์จากข้อมูลของคุณเอง เพื่อให้สิทธิ์เข้าถึง |
| แบบละเอียด | กฎของคุณอาจกว้างหรือแคบได้ตามต้องการ |
| การรักษาความปลอดภัยโดยอิสระ | เนื่องจากมีการกำหนด Rules นอกแอป (ในคอนโซล Firebase หรือ Firebase CLI) ไคลเอ็นต์ จึงไม่ต้องรับผิดชอบในการบังคับใช้การรักษาความปลอดภัย บั๊กจะไม่ทำให้ข้อมูลตกอยู่ในความเสี่ยง และ ข้อมูลของคุณจะได้รับการปกป้องอยู่เสมอ |
วิธีการทำงาน
Firebase Security Rulesทํางานโดยการจับคู่รูปแบบกับเส้นทางฐานข้อมูล แล้วใช้ เงื่อนไขที่กําหนดเองเพื่ออนุญาตให้เข้าถึงข้อมูลในเส้นทางเหล่านั้น Rules ทั้งหมดในผลิตภัณฑ์ Firebase มีคอมโพเนนต์การจับคู่เส้นทางและคำสั่งแบบมีเงื่อนไข ที่อนุญาตให้เข้าถึงการอ่านหรือเขียน คุณต้องกำหนด Rules สำหรับ ผลิตภัณฑ์ Firebase แต่ละรายการที่คุณใช้ในแอป
สำหรับ Cloud Firestore และ Cloud Storage Rules ให้ใช้ไวยากรณ์ต่อไปนี้
service <<name>> {
// Match the resource path.
match <<path>> {
// Allow the request if the following conditions are true.
allow <<methods>> : if <<condition>>
}
}
สำหรับ Realtime Database, Rules ที่อิงตาม JSON ให้ใช้ไวยากรณ์ต่อไปนี้
{
"rules": {
"<<path>>": {
// Allow the request if the condition for each method is true.
".read": <<condition>>,
".write": <<condition>>
}
}
}
Rules จะมีผลเป็นใบแจ้งยอด OR ไม่ใช่ใบแจ้งยอด AND
ดังนั้น หากกฎหลายข้อตรงกับเส้นทาง และเงื่อนไขใดก็ตามที่ตรงกันให้สิทธิ์เข้าถึง Rules ให้สิทธิ์เข้าถึงข้อมูลในเส้นทางนั้น
ดังนั้น หากกฎแบบกว้างให้สิทธิ์เข้าถึงข้อมูล คุณจะจำกัดด้วย
กฎที่เฉพาะเจาะจงมากขึ้นไม่ได้ อย่างไรก็ตาม คุณสามารถหลีกเลี่ยงปัญหานี้ได้โดยตรวจสอบว่าRulesไม่ทับซ้อนกันมากเกินไป Firebase Security Rules แจ้งว่าเส้นทางที่ตรงกันของคุณมีส่วนที่ทับซ้อนกัน
เป็นคำเตือนของคอมไพเลอร์
Firebase Security Rules ยังใช้ประโยชน์จาก Authentication เพื่อให้สิทธิ์ตามผู้ใช้ได้ด้วย และเงื่อนไขที่คุณตั้งค่าอาจเป็นแบบพื้นฐานหรือซับซ้อนอย่างยิ่งก็ได้ ดูข้อมูลเพิ่มเติม เกี่ยวกับRules ภาษาและพฤติกรรม ก่อนเริ่มเขียนRules
เส้นทางการติดตั้งใช้งาน
| ผสานรวม SDK ของผลิตภัณฑ์ | ตั้งค่า Cloud Firestore, Cloud Storage หรือ Realtime Database สำหรับ แอป | |
| เขียนFirebase Security Rules | ดูข้อมูลเพิ่มเติมเกี่ยวกับ วิธีการทำงานของRulesและ ตั้งค่าRulesพื้นฐานบางอย่าง | |
| ทดสอบ Firebase Security Rules | ใช้โปรแกรมจำลอง Realtime Database และ Cloud Firestore เพื่อทดสอบลักษณะการทำงานของแอป และตรวจสอบกฎก่อนที่จะนํากฎไปใช้ในเวอร์ชันที่ใช้งานจริง | |
| ทําให้ Firebase Security Rules ใช้งานได้ | ใช้Firebaseคอนโซลหรือ FirebaseCLI เพื่อนำกฎไปใช้งานจริง |
ขั้นตอนถัดไป
- ทำความเข้าใจFirebase Security Rulesภาษา
- ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของ Firebase Security Rules
- ดูข้อผิดพลาดที่พบบ่อยซึ่งคุณควรหลีกเลี่ยง