ด้วย Cloud Firestore Security Rules คุณสามารถมุ่งเน้นไปที่การสร้างประสบการณ์ของผู้ใช้ที่ยอดเยี่ยมโดยไม่ต้องจัดการโครงสร้างพื้นฐานหรือเขียนโค้ดการตรวจสอบสิทธิ์และรหัสการให้สิทธิ์ฝั่งเซิร์ฟเวอร์
กฎความปลอดภัยมีการควบคุมการเข้าถึงและการตรวจสอบข้อมูลในรูปแบบที่เรียบง่ายแต่สื่อความหมาย หากต้องการสร้างระบบการเข้าถึงตามผู้ใช้และตามบทบาทที่ช่วยรักษาความปลอดภัยของข้อมูลผู้ใช้ คุณต้องใช้ การตรวจสอบสิทธิ์ Firebase กับ Cloud Firestore Security Rules
กฎความปลอดภัยเวอร์ชัน 2
กฎความปลอดภัยเวอร์ชัน 2 ของ Cloud Firestore พร้อมให้บริการแล้วตั้งแต่เดือนพฤษภาคม 2019
กฎเวอร์ชัน 2 เปลี่ยนลักษณะการทำงานของ ไวลด์การ์ด
แบบเรียกซ้ำ {name=**} คุณต้องใช้เวอร์ชัน 2 หากวางแผนที่จะ
ใช้ การค้นหากลุ่มคอลเล็กชัน คุณต้องเลือกใช้เวอร์ชัน 2 โดยทำให้ rules_version = '2'; เป็นบรรทัดแรกในกฎความปลอดภัย
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
การเขียนกฎ
คุณจะเขียนและจัดการ Cloud Firestore Security Rules ที่ปรับให้เหมาะกับโมเดลข้อมูลที่คุณ สร้างขึ้นสำหรับฐานข้อมูลเริ่มต้นและฐานข้อมูลเพิ่มเติมแต่ละรายการในโปรเจ็กต์
Cloud Firestore Security Rules ทั้งหมดประกอบด้วยคำสั่ง 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 หรือใช้ Cloud Firestore Management REST API
การอัปเดต Cloud Firestore Security Rules อาจใช้เวลาถึง 1 นาทีจึงจะมีผลกับคําค้นหาและ Listener ใหม่ อย่างไรก็ตาม การเผยแพร่การเปลี่ยนแปลงอย่างเต็มรูปแบบและมีผลกับ Listener ที่ใช้งานอยู่อาจใช้เวลาถึง 10 นาที
ใช้คอนโซล Firebase
หากต้องการตั้งค่าและทำให้ชุดกฎแรกใช้งานได้สำหรับฐานข้อมูลเริ่มต้นในโปรเจ็กต์ ให้เปิดแท็บ**กฎ** ในส่วนCloud Firestoreของคอนโซล Firebase
เขียนกฎในเอดิเตอร์ออนไลน์ แล้วคลิกเผยแพร่
ใช้ Firebase CLI
คุณยังทำให้กฎใช้งานได้โดยใช้ Firebase CLI ได้ด้วย การใช้ 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
ขั้นตอนถัดไป
- ดูวิธีจัดโครงสร้างกฎความปลอดภัย
- เขียนเงื่อนไขกฎความปลอดภัยที่กำหนดเอง
- อ่านข้อมูลอ้างอิงกฎความปลอดภัย