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

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

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

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

กฎความปลอดภัย Cloud Firestore เวอร์ชัน 2 ตั้งแต่เดือนพฤษภาคม 2019 เป็นต้นไป พร้อมใช้งาน กฎเวอร์ชัน 2 จะเปลี่ยนลักษณะการทำงานของ recursive ไวลด์การ์ด {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 ของคุณ แต่อาจใช้เวลาถึง 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

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