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

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

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

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

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

เครื่องมือจำลองกฎในคอนโซล Google Cloud พร้อมใช้งานสำหรับ Firestore ในโหมด Native ทั้งในรุ่น 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. (ไม่บังคับ) สำหรับคำขอ create และ update ให้คลิกสร้างเอกสาร เพื่อกำหนดค่าเพย์โหลดเอกสารจำลอง
  8. (ไม่บังคับ) หากต้องการจำลองคำขอที่ตรวจสอบสิทธิ์แล้ว ให้เปิด การตรวจสอบสิทธิ์ เลือกผู้ให้บริการการตรวจสอบสิทธิ์ (เช่น google.com หรือ Anonymous) และกำหนดค่าช่องเพย์โหลดโทเค็น
  9. คลิกเรียกใช้

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

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

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

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

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

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

ใช้คอนโซล Firebase

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

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

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

ใช้คอนโซล Google Cloud

คุณสามารถจัดการและทำให้ Cloud Firestore Security Rules ใช้งานได้โดยตรงใน คอนโซล Google Cloud เครื่องมือแก้ไขกฎพร้อมใช้งานสำหรับ Firestore ในโหมด Native ทั้งในรุ่น 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

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