การเข้าถึงแบบ Read-Only นั้นไม่เพียงพอ: Guardrails สำหรับ AI Agents

วิศวกรอาวุโสมักจะพูดสิ่งหนึ่งเพื่อให้ AI agents ปลอดภัย นั่นคือการให้สิทธิ์การเข้าถึงแบบ read-only

ฟังดูปลอดภัย ตัว agent สามารถตรวจสอบ query ที่ทำงานช้า หรือสรุป schema ได้โดยไม่ทำให้ระบบพัง

แต่ read-only ไม่ใช่โมเดลความปลอดภัย แต่มันคือข้อจำกัด

ทันทีที่ agent ของคุณจำเป็นต้องทำงานที่มีประโยชน์ read-only จะหยุดยั้งมันไว้ หาก agent พบ index ที่ไม่ดีหรือแถวข้อมูลที่เสียหาย (corrupted row) มันก็ไม่สามารถแก้ไขได้ คุณจะจบลงด้วยการมีผู้ช่วยที่ทำได้เพียงชี้ไปที่กองไฟ แต่ไม่สามารถหยิบสายยางขึ้นมาดับไฟได้

บ่อยครั้งที่ทีมต่าง ๆ ยอมแพ้และมอบสิทธิ์การเขียน (write access) ให้กับ agent และนั่นคือจุดที่อันตรายที่แท้จริงเริ่มต้นขึ้น

คำถามที่แท้จริงไม่ใช่ "agent ควรเขียนข้อมูลหรือไม่" แต่คำถามที่แท้จริงคือ "คุณจะควบคุม (govern) การเขียนเหล่านั้นได้อย่างไร"

อย่าพยายามควบคุมการเขียนด้วยคำสั่ง (instructions) อย่าใส่กฎไว้ใน system prompt เช่น "ห้าม drop table โดยเด็ดขาด"

Prompt injection ทำให้กฎเหล่านี้ไร้ประโยชน์ ผู้โจมตีสามารถใช้ข้อมูลในแถวหรือคอมเมนต์เพื่อหลอกล่อให้ agent เพิกเฉยต่อกฎของคุณ หาก guardrail อยู่ในหน้าต่าง (window) เดียวกันกับ agent ตัว agent ก็สามารถหาเหตุผลมาหักล้างกฎนั้นได้

คุณจำเป็นต้องแยกความแตกต่างระหว่าง ungoverned writes และ mediated writes

• Ungoverned writes: การเขียนแบบไม่มีการควบคุม คือการที่ agent ตัดสินใจรันคำสั่ง และฐานข้อมูลก็ดำเนินการตามนั้น การควบคุมเพียงอย่างเดียวคือการตัดสินใจของตัว agent เอง • Mediated writes: การเขียนแบบมีการตรวจสอบ คือการที่คำสั่งจะผ่านจุดตรวจสอบ (checkpoint) ที่อยู่นอกเหนือจากตัว agent โดยจุดตรวจสอบนี้จะอยู่ในเส้นทางการส่งข้อมูล (data path) ระหว่าง agent และฐานข้อมูล

การทำ mediated write ทำงานดังนี้:

  • agent เสนอ statement ขึ้นมา
  • proxy หรือ control plane จะทำการ parse statement นั้น
  • proxy จะจัดระดับความเสี่ยง
  • proxy จะตัดสินใจว่าจะอนุญาต หรือจะขออนุมัติจากมนุษย์

แนวทางนี้จะช่วยปกป้องคุณจากการทำ prompt injection คำสั่งที่ประสงค์ร้ายอาจหลอกล่อให้ agent เขียนคำสั่ง DROP TABLE แต่ไม่สามารถหลอก proxy ได้ เพราะ proxy ไม่ได้อ่านเจตนาของ agent แต่มันจะดูที่คำสั่ง SQL จริง ๆ เท่านั้น

ใช้โครงสร้างนี้เพื่อความปลอดภัย:

  • อนุญาตการอ่านที่ปลอดภัยโดยอัตโนมัติ (Auto-allow safe reads): ปล่อยให้ agent รัน SELECT query ได้อย่างอิสระเพื่อให้งานดำเนินไปได้อย่างรวดเร็ว
  • จำกัดการเขียนที่มีความเสี่ยง (Gate risky writes): กำหนดให้ต้องมีการอนุมัติจากมนุษย์สำหรับการทำ DELETE, UPDATE หรือการเปลี่ยนแปลง schema
  • บันทึกทุกอย่าง (Log everything): เก็บประวัติที่ไม่สามารถแก้ไขได้ (immutable record) ว่าใครเป็นผู้เสนอการเปลี่ยนแปลงและใครเป็นผู้อนุมัติ

อย่าพึ่งพา read replicas เพื่อความปลอดภัย แม้ replicas จะช่วยในการตรวจสอบ แต่ก็ไม่สามารถดำเนินการแก้ไขได้ หากต้องการแก้ไขปัญหาในระบบ production คุณจำเป็นต้องเขียนข้อมูลลงใน primary database

การทำ mediation ช่วยให้ agent ทำงานได้อย่างมีประสิทธิภาพในขณะที่ยังรักษาความปลอดภัยของข้อมูลของคุณไว้ได้

Source: https://dev.to/maxime_dalessandro_28171d/read-only-isnt-enough-guardrails-for-ai-agents-that-change-your-database-2e5h

Optional learning community: https://t.me/GyaanSetuAi