วิธีการให้สิทธิ์การเข้าถึงฐานข้อมูลแก่ AI Agent อย่างปลอดภัย

การให้ AI agent เข้าถึงฐานข้อมูลโปรดักชันของคุณถือเป็นความเสี่ยงมหาศาล การใช้ผู้ใช้แบบ read-only อย่างเดียวนั้นไม่เพียงพอ เพราะเอเจนต์ไม่สามารถตัดสินเจตนาหรือความอ่อนไหวของข้อมูลได้ หากคุณให้สิทธิ์การเขียน (write access) การโจมตีแบบ prompt injection อาจเปลี่ยนเอเจนต์ที่มีประโยชน์ให้กลายเป็นเอเจนต์ที่สร้างความเสียหายได้

คุณต้องมีเกราะป้องกันสองชั้นเพื่อรักษาความปลอดภัยของข้อมูลของคุณ

เลเยอร์ที่ 1: การควบคุมฐานข้อมูลแบบคงที่ (Static Database Controls)

สิ่งเหล่านี้คือการตั้งค่าพื้นฐานภายในเอนจินฐานข้อมูลของคุณ ควรเริ่มใช้สิ่งเหล่านี้ก่อน:

  • Least-privilege roles: สร้างบทบาทเฉพาะสำหรับเอเจนต์ ห้ามใช้บัญชี admin โดยเด็ดขาด
  • Read replicas: ส่งเอเจนต์สำหรับงานวิเคราะห์ไปยัง replica เพื่อไม่ให้ไปทำให้ฐานข้อมูลโปรดักชันทำงานช้าลง
  • Row-level security: ใช้นโยบายเพื่อจำกัดข้อมูลที่เอเจนต์สามารถมองเห็นได้
  • Statement timeouts: ป้องกันไม่ให้คิวรีที่ทำงานผิดปกติ (runaway queries) ทำให้เซิร์ฟเวอร์ของคุณล่ม
  • Allowlists: จำกัดการเชื่อมต่อเฉพาะโฮสต์ที่กำหนดเท่านั้น

เลเยอร์ที่ 2: Runtime Control Plane

การควบคุมแบบ Static ตรวจสอบเพียงแค่ตัวตนเท่านั้น แต่ไม่สามารถหยุดเอเจนต์จากการดึงข้อมูลออกไป (exfiltrating data) หรือการทำตามคำสั่งที่เป็นอันตรายได้ คุณจึงต้องการ Control Plane ที่คั่นกลางระหว่างเอเจนต์และฐานข้อมูล

เลเยอร์นี้ต้องทำหน้าที่สี่อย่าง:

  • Classify: จำแนกทุกคิวรีว่าเป็นแบบ read, write หรือ schema change
  • Enforce default-deny: บล็อกทุกอย่าง เว้นแต่จะได้รับอนุญาตอย่างชัดเจน
  • Gate risky actions: กำหนดให้มนุษย์ต้องเป็นผู้อนุมัติการลบข้อมูลจำนวนมาก (bulk deletes) หรือการเปลี่ยนโครงสร้าง (schema changes)
  • Record everything: เก็บประวัติการทำงานและการอนุมัติทุกอย่างในรูปแบบ immutable log (บันทึกที่ไม่สามารถแก้ไขได้)

ทำไมเรื่องนี้ถึงสำคัญ: หากคุณใส่กฎไว้ใน prompt เอเจนต์ก็สามารถเพิกเฉยต่อกฎเหล่านั้นได้ แต่ Control Plane จะอยู่นอกบริบทของเอเจนต์ มันจะเห็นคิวรีที่เกิดขึ้นจริง ไม่ใช่แค่แผนการของเอเจนต์ สิ่งนี้จะช่วยปกป้องคุณจากการโจมตีแบบ prompt injection

ใช้รายการตรวจสอบนี้เพื่อการเข้าถึงที่ปลอดภัย:

  • มีบทบาทเฉพาะ (Dedicated role) สำหรับแต่ละเอเจนต์
  • ใช้ read replicas สำหรับการสำรวจข้อมูล
  • ใช้การรักษาความปลอดภัยระดับแถว (row-level security)
  • ตั้งค่า statement timeouts
  • ส่งทราฟฟิกทั้งหมดผ่าน control plane
  • ใช้นโยบาย default-deny
  • ต้องมีการอนุมัติจากมนุษย์สำหรับงานที่มีความเสี่ยงสูง
  • เก็บ immutable audit log

การควบคุมแบบ Static ทำหน้าที่ของมัน ส่วน Control Plane จะจัดการส่วนที่เหลือ คุณจำเป็นต้องมีทั้งสองอย่าง

Source: https://dev.to/maxime_dalessandro_28171d/how-to-give-an-ai-agent-safe-access-to-your-production-database-1ami

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