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

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

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





หากต้องการความช่วยเหลือจาก AI ให้คัดลอกพรอมต์ด้านล่างลงในตัวแทนการเขียนโค้ด AI (เช่น Gemini ใน Android Studio, Antigravity, Claude Code, Codex และ Cursor) คุณสามารถปรับแต่งพรอมต์และปรับปรุงซ้ำๆ กับ Agent ได้ ดูข้อมูลการติดตั้งโดยละเอียดได้ที่ทักษะเอเจนต์ Firebase

Help me use Firebase in my app.
1. Make sure that **Firebase agent skills** are installed and updated. For Claude Code, Codex, or Cursor agents, help me install the Firebase plugin. For other agents, run `npx skills add firebase/agent-skills`. Always try to use **Firebase agent skills** for Firebase-related tasks.
2. Help me write, validate, and deploy Firebase Security Rules to protect my app's Firestore data.

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

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

ทดสอบกฎในคอนโซล Google Cloud

เครื่องจำลองกฎในคอนโซล Google Cloud พร้อมใช้งานสำหรับ Firestore ในโหมดเนทีฟทั้งรุ่น Standard และ Enterprise

สิทธิ์ที่จำเป็น

หากต้องการทดสอบกฎความปลอดภัยในคอนโซล Google Cloud คุณต้องมีสิทธิ์ IAM ต่อไปนี้

  • firebaserules.rulesets.test

วิธีจำลองคำขอฐานข้อมูลในคอนโซล Google Cloud

  1. ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
  2. คลิกรหัสของฐานข้อมูลที่ต้องการทดสอบ
  3. ในเมนูการนำทาง ให้คลิกความปลอดภัย
  4. คลิกแท็บเครื่องจำลอง
  5. ในรายการแบบเลื่อนลงประเภทการจำลอง ให้เลือกประเภทการดำเนินการ ซึ่งได้แก่ get, create, update หรือ delete
  6. ในช่องตำแหน่ง ให้ป้อนเส้นทางเอกสารที่ต้องการทดสอบ (เช่น users/user_123)
  7. (ไม่บังคับ) สำหรับคำขอสร้างและอัปเดต ให้คลิกสร้างเอกสารเพื่อกำหนดค่าเพย์โหลดเอกสารจำลอง
  8. (ไม่บังคับ) หากต้องการจำลองคำขอที่ตรวจสอบสิทธิ์แล้ว ให้เปิดการตรวจสอบสิทธิ์ เลือกผู้ให้บริการตรวจสอบสิทธิ์ (เช่น google.com หรือไม่ระบุตัวตน) และกำหนดค่าช่องเพย์โหลดของโทเค็น
  9. คลิกเรียกใช้

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

ทดสอบกฎในคอนโซล Firebase

หากต้องการทดสอบกฎในคอนโซล Firebase ให้ไปที่ฐานข้อมูลและพื้นที่เก็บข้อมูล > Firestore > แท็บกฎ คลิกRules Playground เพื่อเปิดการตั้งค่าเครื่องจำลอง เลือกตัวเลือกการจำลอง แล้วคลิกเรียกใช้

การติดตั้งใช้งานกฎ

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

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

ใช้คอนโซล Firebase

หากต้องการตั้งค่าและติดตั้งใช้งานกฎชุดแรกสำหรับฐานข้อมูลเริ่มต้นในโปรเจ็กต์ ให้ไปที่แท็บฐานข้อมูลและพื้นที่เก็บข้อมูล > Firestore > กฎในคอนโซล Firebase

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

เขียนกฎในเครื่องมือแก้ไขออนไลน์ แล้วคลิกเผยแพร่

ใช้คอนโซล Google Cloud

คุณสามารถจัดการและติดตั้งใช้งาน Cloud Firestore Security Rules ได้โดยตรงในคอนโซล Google Cloud เครื่องมือแก้ไขกฎพร้อมใช้งานสำหรับ Firestore ในโหมดเนทีฟทั้งในรุ่น Standard และ Enterprise

สิทธิ์ที่จำเป็น

หากต้องการจัดการและติดตั้งใช้งานกฎความปลอดภัยในคอนโซล Google Cloud คุณต้องมีสิทธิ์ IAM ต่อไปนี้

  • firebaserules.releases.create
  • firebaserules.releases.delete
  • firebaserules.releases.update
  • firebaserules.rulesets.create
  • firebaserules.rulesets.delete
  • firebaserules.rulesets.list
  • firebaserules.rulesets.test (ต้องใช้เพื่อใช้เครื่องมือจำลองกฎ)

วิธีทำให้กฎใช้งานได้ในคอนโซล Google Cloud

  1. ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
  2. คลิกรหัสของฐานข้อมูลที่ต้องการจัดการ
  3. ในเมนูการนำทาง ให้คลิกความปลอดภัย
  4. คลิกแท็บกฎ Firestore
  5. ดูกฎในเครื่องมือแก้ไขกฎ หากต้องการแก้ไข ให้คลิกชุดกฎใหม่หรือโคลนชุดกฎ แล้วแก้ไขกฎ
  6. คลิกเผยแพร่เพื่อทำให้การเปลี่ยนแปลงมีผล

นอกจากนี้ คุณยังดูชุดกฎก่อนหน้าในไทม์ไลน์และโคลนหรือกู้คืนชุดกฎเหล่านั้นได้ด้วย

ใช้ 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

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