อภิธานศัพท์

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 ใช้ข้อมูล เช่น รหัสผู้ใช้หรือบทบาท เพื่อตัดสินว่าพวกเขาเข้าถึงแถวเฉพาะใดได้

ดูเพิ่มเติม

  • วิธีเพิ่มการควบคุมการเข้าถึงตามบทบาท
  • เช็กลิสต์ความปลอดภัยสำหรับแอปที่สร้างด้วย AI

Mythex · Pricing · สร้างอะไรก็ได้ด้วย AI · เทมเพลตเว็บไซต์และแอป · เปรียบเทียบ Mythex · อภิธานศัพท์การสร้างแอปด้วย AI · เครื่องมือฟรีสำหรับสร้างแอปด้วย AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)