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

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

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

การใช้กฎ

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

การอัปเดต Cloud Firestore Security Rules อาจใช้เวลาถึง 1 นาทีจึงจะมีผลกับคำค้นหาและผู้ฟังใหม่ อย่างไรก็ตาม ระบบอาจใช้เวลาถึง 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

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