Cloud Firestore Security Rules ช่วยให้คุณมุ่งเน้นการสร้างประสบการณ์ของผู้ใช้ที่ยอดเยี่ยมได้โดยไม่ต้องจัดการโครงสร้างพื้นฐานหรือเขียนโค้ดการตรวจสอบสิทธิ์และการให้สิทธิ์ฝั่งเซิร์ฟเวอร์
กฎความปลอดภัยให้การควบคุมการเข้าถึงและการตรวจสอบข้อมูลในรูปแบบที่เรียบง่ายแต่ สื่อความหมาย หากต้องการสร้างระบบการเข้าถึงตามผู้ใช้และตามบทบาทที่ช่วยรักษาความปลอดภัยของข้อมูลผู้ใช้ คุณต้องใช้ Firebase Authentication กับ Cloud Firestore Security Rules
กฎความปลอดภัยเวอร์ชัน 2
ตั้งแต่เดือนพฤษภาคม 2019 เป็นต้นไป Cloud Firestoreกฎความปลอดภัยเวอร์ชัน 2 พร้อมใช้งานแล้ว
กฎเวอร์ชันที่ 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 มีโปรแกรมจำลองกฎที่คุณใช้ทดสอบชุดกฎได้ คุณเข้าถึงเครื่องจำลองได้จากคอนโซล Firebase ในส่วนฐานข้อมูลและพื้นที่เก็บข้อมูล > Firestore > แท็บกฎ
เครื่องจำลองกฎช่วยให้คุณจำลองการอ่าน การเขียน และการลบที่ตรวจสอบสิทธิ์แล้วและยังไม่ได้ตรวจสอบสิทธิ์ เมื่อจำลองคำขอที่ผ่านการตรวจสอบสิทธิ์ คุณจะสร้าง และแสดงตัวอย่างโทเค็นการตรวจสอบสิทธิ์จากผู้ให้บริการต่างๆ ได้ คำขอจำลองจะทำงานกับชุดกฎในเครื่องมือแก้ไข ไม่ใช่ชุดกฎที่ใช้งานจริง
การติดตั้งใช้งานกฎ
ก่อนที่จะเริ่มใช้ Cloud Firestore จากแอปบนอุปกรณ์เคลื่อนที่ คุณจะต้อง ติดตั้งใช้งานกฎความปลอดภัย คุณสามารถทําให้กฎใช้งานได้ในคอนโซล Firebase, ในคอนโซล Google Cloud, โดยใช้ Firebase CLI หรือใช้ Cloud FirestoreREST API การจัดการ
การอัปเดต Cloud Firestore Security Rules อาจใช้เวลาถึง 1 นาทีจึงจะมีผลกับคำค้นหาและผู้ฟังใหม่ อย่างไรก็ตาม อาจใช้เวลาถึง 10 นาทีในการเผยแพร่การเปลี่ยนแปลงอย่างเต็มรูปแบบ และส่งผลต่อผู้ฟังที่ใช้งานอยู่
ใช้คอนโซล Firebase
หากต้องการตั้งค่าและใช้ชุดกฎแรกสำหรับฐานข้อมูลเริ่มต้นในโปรเจ็กต์ ให้ไปที่แท็บกฎในคอนโซล Firebase ภายในฐานข้อมูลและที่เก็บข้อมูล > Firestore
หากสร้างฐานข้อมูลหลายรายการสำหรับโปรเจ็กต์ คุณสามารถทำให้ใช้งานได้ Cloud Firestore Security Rulesสำหรับแต่ละฐานข้อมูล ในคอนโซล Firebase ให้ใช้ ตัวเลือกฐานข้อมูลเพื่อสลับระหว่างฐานข้อมูลเริ่มต้นกับฐานข้อมูล เพิ่มเติม
เขียนกฎในโปรแกรมแก้ไขออนไลน์ แล้วคลิกเผยแพร่
ใช้คอนโซล Google Cloud
คุณสามารถจัดการและติดตั้งใช้งาน Cloud Firestore Security Rules ได้โดยตรงใน คอนโซล Google Cloud เครื่องมือแก้ไขกฎพร้อมใช้งานสำหรับ Firestore ในโหมด Native ทั้งในรุ่น Standard และ Enterprise
สิทธิ์ที่จำเป็น
หากต้องการจัดการและทำให้ใช้งานได้ซึ่งกฎความปลอดภัยในคอนโซล Google Cloud คุณต้องมีสิทธิ์ IAM ต่อไปนี้
firebaserules.releases.createfirebaserules.releases.deletefirebaserules.releases.updatefirebaserules.rulesets.createfirebaserules.rulesets.deletefirebaserules.rulesets.listfirebaserules.rulesets.test(ต้องระบุเพื่อใช้เครื่องจำลองกฎ)
วิธีติดตั้งใช้งานกฎในคอนโซล Google Cloud
- ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
- คลิกรหัสของฐานข้อมูลที่ต้องการจัดการ
- ในเมนูการนำทาง ให้คลิกความปลอดภัย
- คลิกแท็บกฎของ Firestore
- ดูกฎในเครื่องมือแก้ไขกฎ หากต้องการแก้ไข ให้คลิกชุดกฎใหม่หรือ โคลนชุดกฎ แล้วแก้ไขกฎ
- คลิกเผยแพร่เพื่อนำการเปลี่ยนแปลงไปใช้
นอกจากนี้ คุณยังดูชุดกฎก่อนหน้าในไทม์ไลน์ รวมถึงโคลนหรือกู้คืนชุดกฎเหล่านั้นได้ด้วย
ใช้ 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
ขั้นตอนถัดไป
- ดูวิธีจัดโครงสร้างกฎความปลอดภัย
- เขียนเงื่อนไขกฎความปลอดภัยที่กำหนดเอง
- อ่านข้อมูลอ้างอิงเกี่ยวกับกฎความปลอดภัย