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

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

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

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

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

ใช้คอนโซล Firebase

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

หากสร้างฐานข้อมูลหลายรายการสำหรับโปรเจ็กต์ คุณสามารถทำให้ใช้งานได้ 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

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