Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

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

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

กฎความปลอดภัยรุ่น2

ตั้งแต่เดือนพฤษภาคม 2019 กฎความปลอดภัยของ Cloud Firestore เวอร์ชัน 2 พร้อมใช้งานแล้ว รุ่นที่ 2 ของกฎการเปลี่ยนแปลงพฤติกรรมของ สัญลักษณ์ recursive {name=**} คุณต้องใช้รุ่นที่ 2 ถ้าคุณวางแผนที่จะใช้ คำสั่งกลุ่มคอลเลกชัน คุณต้องเลือกในรุ่นที่ 2 โดยการ rules_version = '2'; บรรทัดแรกในกฎความปลอดภัยของคุณ:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

กฎการเขียน

ทั้งหมดเมฆ 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 มีโปรแกรมจำลองกฎที่คุณใช้ทดสอบชุดกฎได้ คุณสามารถเข้าถึงจำลองจาก แท็บกฎ ในส่วนเมฆ FireStore ของคอนโซล Firebase

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

กฎการทำให้ใช้งานได้

ก่อนที่คุณจะเริ่มใช้ Cloud Firestore จากแอปมือถือ คุณจะต้องปรับใช้กฎความปลอดภัย คุณสามารถปรับใช้กฎในคอนโซล Firebase หรือใช้ Firebase CLI

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

ใช้คอนโซล Firebase

การตั้งค่าและปรับใช้ชุดแรกของกฎเปิด แท็บกฎ ในส่วนเมฆ 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 your .rules file
firebase deploy --only firestore:rules

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