AI Agent ต้องการขอบเขต ไม่ใช่กุญแจที่ไขได้ทุกห้อง

การให้ AI agent เข้าถึงแอปของคุณผ่าน MCP นั้นมีความเสี่ยง คุณกำลังยื่นพวงกุญแจให้พวกเขาแล้วหวังว่าพวกเขาจะเปิดแค่บางประตูเท่านั้น ความไว้วางใจนั้นคือความเสี่ยงด้านความปลอดภัย

เมื่อสร้าง MCP tools สำหรับแอป Laravel แบบ multi-tenant คุณต้องแก้ปัญหาหนึ่งอย่าง นั่นคือ จะปล่อยให้ agent ควบคุมแอปโดยไม่เข้าถึงข้อมูลของผู้อื่นได้อย่างไร

MCP tool แต่ละตัวทำหน้าที่เป็น endpoint เมื่อ agent เรียกใช้ tool เซิร์ฟเวอร์ของคุณก็จะรันโค้ด ในการตั้งค่าแบบ multi-tenant ทุก tool จะต้องตอบคำถามสองข้อนี้:

  • คุณได้รับอนุญาตให้ทำสิ่งนี้หรือไม่?
  • คุณได้รับอนุญาตให้ทำที่นี่หรือไม่?

หากคุณข้ามขั้นตอนเหล่านี้ คุณกำลังสร้างช่องโหว่ด้านความปลอดภัย

Web requests ใช้ session ในการจัดการ multi-tenancy แต่ MCP tools ใช้ token มันไม่มี session และไม่มี middleware เพื่อกำหนด tenant context ปัจจุบัน หากคุณพึ่งพา global scopes ที่มองหา "current org" ใน session พวกมันจะไม่พบอะไรเลย คำสั่ง query ที่ควรจะถูกจำกัดอาจจะคืนค่าทุกแถวในฐานข้อมูลของคุณออกมา

ผมใช้กฎ 4 ข้อนี้เพื่อให้ปลอดภัย:

  • Explicit filtering: อย่าพึ่งพา ambient scope ภายใต้ token auth ให้ใช้ single trait เพื่อกรองข้อมูลตาม organization ทุกครั้ง
  • Use UUIDs: อย่าใช้ auto-increment IDs ให้ใช้ identifier ที่คาดเดาไม่ได้ เพื่อไม่ให้ agent คาดเดา record อื่นๆ ได้
  • Reuse permissions: อย่าสร้างชุด permission ใหม่สำหรับ agent ให้ใช้ ability strings ชุดเดียวกับที่แอปเว็บของคุณใช้
  • Mark side effects: ใช้ annotations เพื่อระบุว่า tool นั้นเป็นแบบ read-only หรือ write-enabled

การใช้ single trait สำหรับการค้นหา organization จะช่วยให้คุณมีจุดเดียวในการตรวจสอบ (audit) หากการค้นหาคืนค่าเป็น null ตัว tool จะบอก agent ว่าไม่พบ record นั้น และ agent จะไม่ได้รับข้อมูลใดๆ เกี่ยวกับ tenant อื่นเลย

นี่ไม่ใช่ปัญหาของ AI แต่มันคือปัญหาเรื่อง multi-tenancy และ authorization การใช้ MCP ทำให้การเปิดแอปของคุณออกสู่ภายนอกนั้นง่ายขึ้น ดังนั้นคุณจึงต้องมีวินัยในเรื่องการกำหนดขอบเขต

Agent ควรทำได้เพียงสิ่งที่มนุษย์ทำได้ ภายใน tenant ของตนเองเท่านั้น และไม่ควรทำอะไรเกินกว่านั้น

Source: https://dev.to/nasrulhazim/giving-an-ai-agent-the-keys-without-giving-it-the-building-rbac-org-scoped-mcp-tools-in-laravel-43oi

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