กฎการรักษาความปลอดภัยของ Cloud Firestore จะช่วยให้คุณมุ่งเน้นไปที่การสร้างประสบการณ์ของผู้ใช้ที่ยอดเยี่ยมได้โดยไม่ต้องจัดการโครงสร้างพื้นฐานหรือเขียนการตรวจสอบสิทธิ์และรหัสการให้สิทธิ์ฝั่งเซิร์ฟเวอร์
กฎความปลอดภัยมอบการควบคุมการเข้าถึงและการตรวจสอบข้อมูลในรูปแบบที่เรียบง่ายแต่มีความชัดเจน หากต้องการสร้างระบบการเข้าถึงตามบทบาทและตามบทบาทเพื่อรักษาความปลอดภัยให้กับข้อมูลของผู้ใช้ คุณต้องใช้การตรวจสอบสิทธิ์ Firebase กับกฎความปลอดภัยของ Cloud Firestore
กฎความปลอดภัยเวอร์ชัน 2
กฎความปลอดภัย Cloud Firestore เวอร์ชัน 2 พร้อมใช้งานแล้วตั้งแต่เดือนพฤษภาคม 2019 เป็นต้นไป กฎเวอร์ชัน 2 จะเปลี่ยนลักษณะการทำงานของ ไวลด์การ์ดแบบวนซ้ำ {name=**}
คุณต้องใช้เวอร์ชัน 2 หากวางแผนที่จะใช้การค้นหากลุ่มคอลเล็กชัน คุณต้องเลือกใช้เวอร์ชัน 2 โดยทำให้ rules_version = '2';
เป็นบรรทัดแรกในกฎความปลอดภัยดังนี้
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
กฎการเขียน
คุณจะเขียนและจัดการกฎความปลอดภัยของ Cloud Firestore ที่ปรับแต่งให้เหมาะกับโมเดลข้อมูลที่สร้างสำหรับฐานข้อมูลเริ่มต้นและฐานข้อมูลเพิ่มเติมแต่ละรายการในโปรเจ็กต์
กฎการรักษาความปลอดภัยของ Cloud Firestore ทั้งหมดประกอบด้วยคำสั่ง match
ซึ่งระบุเอกสารในฐานข้อมูล และนิพจน์ allow
ที่ควบคุมการเข้าถึงเอกสารเหล่านั้น
service cloud.firestore {
match /databases/{database}/documents {
match /<some_path>/ {
allow read, write: if <some_condition>;
}
}
}
คำขอฐานข้อมูลทุกรายการจากไลบรารีของไคลเอ็นต์เว็บ/อุปกรณ์เคลื่อนที่ใน Cloud Firestore จะได้รับการประเมินตามกฎความปลอดภัยก่อนที่จะอ่านหรือเขียนข้อมูล หากกฎปฏิเสธการเข้าถึงเส้นทางเอกสารที่ระบุ คำขอทั้งหมดจะล้มเหลว
ด้านล่างนี้คือตัวอย่างบางส่วนของชุดกฎพื้นฐาน แม้ว่ากฎเหล่านี้จะถูกต้อง แต่ไม่แนะนำให้ใช้สำหรับแอปพลิเคชันเวอร์ชันที่ใช้งานจริง
ต้องมีการตรวจสอบสิทธิ์
// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
ปฏิเสธทั้งหมด
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
อนุญาตทั้งหมด
// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this rule set in production; it allows
// anyone to overwrite your entire database.
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
เส้นทาง {document=**}
ที่ใช้ในตัวอย่างด้านบนตรงกับเอกสารในฐานข้อมูลทั้งหมด ไปยังคำแนะนำในการจัดโครงสร้างกฎความปลอดภัย เพื่อดูวิธีจับคู่เส้นทางข้อมูลที่เฉพาะเจาะจงและการทำงานกับข้อมูลลำดับชั้น
กฎการทดสอบ
Cloud Firestore มีเครื่องจำลองกฎที่คุณใช้ในการทดสอบชุดกฎได้ คุณเข้าถึงเครื่องจำลองได้จากแท็บกฎในส่วน Cloud Firestore ของคอนโซล Firebase
เครื่องมือจำลองกฎช่วยให้คุณจำลองการอ่าน การเขียน และลบที่ผ่านการตรวจสอบสิทธิ์และไม่ได้ตรวจสอบสิทธิ์ได้ เมื่อจำลองคำขอที่ตรวจสอบสิทธิ์แล้ว คุณจะสร้างและแสดงตัวอย่างโทเค็นการตรวจสอบสิทธิ์จากผู้ให้บริการรายต่างๆ ได้ คำขอที่จำลองจะทำงานกับชุดกฎในเครื่องมือแก้ไข ไม่ใช่ชุดกฎที่ใช้งานในปัจจุบัน
การใช้กฎ
คุณจะต้องทำให้กฎความปลอดภัยใช้งานได้ก่อนจึงจะเริ่มใช้ Cloud Firestore จากแอปบนอุปกรณ์เคลื่อนที่ได้ คุณทำให้กฎใช้งานได้ในคอนโซล Firebase โดยใช้ Firebase CLI หรือ REST API การจัดการ Cloud Firestore
การอัปเดตกฎความปลอดภัยของ Cloud Firestore อาจใช้เวลาถึง 1 นาทีจึงจะมีผลกับการค้นหาและผู้ฟังใหม่ อย่างไรก็ตาม ระบบอาจใช้เวลาถึง 10 นาทีเพื่อเผยแพร่การเปลี่ยนแปลงดังกล่าวโดยสมบูรณ์ และส่งผลต่อผู้ฟังที่ใช้งานอยู่
ใช้คอนโซล Firebase
หากต้องการตั้งค่าและทำให้กฎชุดแรกใช้งานได้ ให้เปิดแท็บกฎในส่วน Cloud Firestore ของคอนโซล Firebase สำหรับฐานข้อมูลเริ่มต้นในโปรเจ็กต์
เขียนกฎในเครื่องมือแก้ไขออนไลน์ แล้วคลิกเผยแพร่
ใช้ Firebase CLI
คุณยังทำให้กฎใช้งานได้โดยใช้ FirebaseCLI การใช้ CLI จะช่วยให้คุณทำให้กฎอยู่ภายใต้การควบคุมเวอร์ชันด้วยโค้ดของแอปพลิเคชัน และการทำให้กฎใช้งานได้ซึ่งเป็นส่วนหนึ่งของกระบวนการทำให้ใช้งานได้ที่มีอยู่
// Set up Firestore in your project directory, creates a .rules file
firebase init firestore
// Edit the generated .rules file to your desired security rules
// ...
// Deploy rules for all configured databases
firebase deploy --only firestore
เพิ่มความปลอดภัยให้กับ Cloud Storage
แอปจะได้รับประโยชน์จากฟีเจอร์ฐานข้อมูลที่มีประสิทธิภาพของ Cloud Firestore รวมถึงพื้นที่เก็บข้อมูลไฟล์และฟีเจอร์การจัดการของ Cloud Storage เมื่อใช้ร่วมกัน ผลิตภัณฑ์เหล่านี้จะช่วยเสริมความปลอดภัยของแอปด้วย เนื่องจาก Cloud Firestore สามารถบันทึกข้อกำหนดการให้สิทธิ์ซึ่งกฎการรักษาความปลอดภัยของ Firebase ใช้งานได้สำหรับทั้ง 2 ผลิตภัณฑ์ โปรดดูข้อมูลเพิ่มเติมในคำแนะนำสำหรับ Cloud Storage
ขั้นตอนถัดไป
- ดูวิธีจัดโครงสร้างกฎความปลอดภัย
- เขียนเงื่อนไขของกฎความปลอดภัยที่กำหนดเอง
- โปรดอ่านข้อมูลอ้างอิงกฎความปลอดภัย