กฎความปลอดภัยสำหรับการดำเนินการในไปป์ไลน์

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

นิพจน์ตัวกรองที่รองรับ

หากต้องการให้กฎจำกัดการค้นหา การค้นหานั้นต้องใช้ตัวดำเนินการเปรียบเทียบมาตรฐานกับค่าคงที่ เครื่องมือจัดการกฎจะรู้จักตัวกรองประเภทต่อไปนี้

  • ความเท่ากันและความไม่เท่ากัน: eq, neq
  • การเปรียบเทียบ: gt, gte, lt, lte
  • การเป็นสมาชิก: in, arrayContains

ตัวอย่างเช่น

  • where(eq("foo", 2))
  • where(lt("foo", 2))
  • documents("/user/1", "/user/2").where(...)

ขอพร็อพเพอร์ตี้

คุณยังคงใช้ออบเจ็กต์ request เพื่อตรวจสอบสิทธิ์และ บริบทการค้นหาได้ แม้ว่าระบบจะไม่รองรับพร็อพเพอร์ตี้บางอย่างที่ใช้ได้ในการค้นหามาตรฐาน ในไปป์ไลน์ก็ตาม

ที่พักที่รองรับ

เครื่องมือใหม่ยังคงรองรับพร็อพเพอร์ตี้ต่อไปนี้

  • request.auth: เข้าถึงข้อมูล uid และโทเค็นของผู้ใช้
  • request.method: ระบุการดำเนินการ (เช่น get, list)
  • request.path: เส้นทางของทรัพยากรที่มีการเข้าถึง
  • request.time: การประทับเวลาฝั่งเซิร์ฟเวอร์ของคำขอ

พร็อพเพอร์ตี้ที่ไม่รองรับ

ระบบไม่รองรับพร็อพเพอร์ตี้ request.query เช่น limit, offset และ orderBy สำหรับการตรวจสอบกฎของไปป์ไลน์เนื่องจากความซับซ้อนในการกำหนดค่าเหล่านี้ในคำค้นหาแบบหลายขั้นตอน

การจัดการขั้นตอนไปป์ไลน์และสิทธิ์

ไปป์ไลน์มีหลายขั้นตอนซึ่งแมปกับการดำเนินการแบบละเอียดที่เฉพาะเจาะจงใน กฎความปลอดภัย ดังนี้

  • สิทธิ์ allow list: ทริกเกอร์โดยขั้นตอน collection(), collectionGroup() และ database()
  • allow get permissions: เรียกใช้โดยขั้นตอน documents() ซึ่ง ได้รับการปฏิบัติคล้ายกับการดำเนินการ get แบบเป็นกลุ่ม
  • ขั้นตอนการแก้ไขฟิลด์: กฎจะทำงานกับข้อมูลที่จัดเก็บไว้เท่านั้น และจะไม่ทำงานกับค่าที่ได้มา หากไปป์ไลน์มีขั้นตอนที่แก้ไขฟิลด์ (เช่น AddFields, ReplaceWith, Select) เครื่องมือจัดการกฎจะหยุดใช้ ข้อจํากัดของตัวกรองหลังจากพบขั้นตอนนั้น
  • ขั้นตอนค่าคงที่: ขั้นตอน literals() จะไม่อ่านจากฐานข้อมูล แต่ อาจทำให้เกิดค่าใช้จ่ายได้ โดยต้องจับคู่กับขั้นตอนอื่น (เช่น collection()) ที่กฎสามารถยืนยันได้เพื่อป้องกันการละเมิด