เริ่มต้นใช้งานกฎความปลอดภัยของ Cloud Firestore

ด้วยกฎความปลอดภัยของ Cloud Firestore คุณสามารถมุ่งเน้นไปที่การสร้างประสบการณ์ผู้ใช้ที่ยอดเยี่ยมโดยไม่ต้องจัดการโครงสร้างพื้นฐานหรือเขียนการตรวจสอบสิทธิ์และรหัสการให้สิทธิ์ฝั่งเซิร์ฟเวอร์

กฎความปลอดภัยให้การควบคุมการเข้าถึงและการตรวจสอบความถูกต้องของข้อมูลในรูปแบบที่เรียบง่ายแต่แสดงออกได้ชัดเจน ในการสร้างระบบการเข้าถึงตามผู้ใช้และตามบทบาทที่รักษาข้อมูลผู้ใช้ของคุณให้ปลอดภัย คุณต้องใช้ การตรวจสอบสิทธิ์ Firebase กับกฎความปลอดภัยของ Cloud Firestore

กฎความปลอดภัยเวอร์ชัน 2

ตั้งแต่เดือนพฤษภาคม 2019 กฎความปลอดภัยของ Cloud Firestore เวอร์ชัน 2 พร้อมใช้งานแล้ว กฎเวอร์ชัน 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 อาจใช้เวลาถึงหนึ่งนาทีจึงจะส่งผลต่อคำค้นหาและ 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 ใช้งานได้สำหรับทั้งสองผลิตภัณฑ์ หากต้องการข้อมูลเพิ่มเติม โปรดดู คำแนะนำสำหรับ Cloud Storage

ขั้นตอนถัดไป