row-level security คืออะไร?
Row-level security (RLS) คือฟีเจอร์ฐานข้อมูลที่ตัดสินทีละแถวว่าผู้ใช้แต่ละคนอ่านหรือแก้ไขระเบียนใดได้ เช่น ลูกค้าเห็นเฉพาะคำสั่งซื้อของตัวเอง แม้แอปจะขอข้อมูลมากกว่านั้น
หากไม่มีมัน กฎ “ผู้ใช้เห็นเฉพาะข้อมูลของตัวเอง” จะอยู่ในโค้ดของแอป ถ้าหน้าจอหรือ API ใดลืมตรวจสอบ ข้อมูลส่วนตัวอาจรั่วไหลได้
ด้วย row-level security กฎอยู่ในตัวฐานข้อมูลเอง คุณเขียนนโยบาย เช่น “แถวใน orders จะมองเห็นได้ก็ต่อเมื่อ customer_id ตรงกับผู้ใช้ที่ล็อกอินอยู่” และฐานข้อมูลบังคับใช้กับทุกการสืบค้น
Postgres รองรับ row-level security และบริการ backend บางตัวพึ่งพามันมาก เพราะแอปของพวกมันคุยกับฐานข้อมูลโดยตรงจากเบราว์เซอร์ ในการตั้งค่าแบบนั้น ตารางที่ไม่มีนโยบายอาจอ่านได้โดยใครก็ตาม
RLS เป็นชั้นป้องกันชั้นหนึ่ง ไม่ใช่ชั้นเดียว แอปยังต้องมีการล็อกอินที่เหมาะสม การตรวจสอบฝั่งเซิร์ฟเวอร์ และการจัดการการเข้าถึงของแอดมินอย่างระมัดระวัง
ตัวอย่าง
- ลูกค้าในพอร์ทัลเห็นเฉพาะเอกสารของตัวเอง
- แต่ละทีมในเครื่องมือเห็นเฉพาะโปรเจกต์ของตัวเอง
คำถาม
ฉันต้องใช้ row-level security ไหม?
หากแอปของคุณเก็บข้อมูลส่วนตัวของผู้ใช้จำนวนมาก และบางส่วนสืบค้นฐานข้อมูลโดยตรงจากเบราว์เซอร์ คำตอบคือใช่ หากการเข้าถึงทั้งหมดผ่าน backend ที่ตรวจสิทธิ์ RLS เป็นตาข่ายนิรภัยเพิ่มเติม
Row-level security เหมือนกับบทบาท (roles) ไหม?
ไม่เหมือนกัน บทบาทอธิบายว่าผู้ใช้เป็นประเภทใด เช่น แอดมินหรือสมาชิก ส่วน row-level security ใช้ข้อมูล เช่น รหัสผู้ใช้หรือบทบาท เพื่อตัดสินว่าพวกเขาเข้าถึงแถวเฉพาะใดได้
ดูเพิ่มเติม
Mythex · Pricing · สร้างอะไรก็ได้ด้วย AI · เทมเพลตเว็บไซต์และแอป · เปรียบเทียบ Mythex · อภิธานศัพท์การสร้างแอปด้วย AI · เครื่องมือฟรีสำหรับสร้างแอปด้วย AI · English