AI एजेंट्स को सीमाओं की आवश्यकता है, मास्टर कीज़ की नहीं
MCP के माध्यम से अपने ऐप का एक्सेस किसी AI एजेंट को देना जोखिम भरा है। आप उन्हें एक की-रिंग (keyring) सौंप रहे हैं और यह उम्मीद कर रहे हैं कि वे केवल कुछ खास दरवाज़े ही खोलेंगे। वह भरोसा एक सुरक्षा जोखिम है।
एक multi-tenant Laravel ऐप के लिए MCP टूल्स बनाते समय, आपको एक समस्या का समाधान करना होगा: किसी एजेंट को दूसरे के डेटा तक पहुँच बनाए बिना ऐप चलाने की अनुमति कैसे दी जाए।
प्रत्येक MCP टूल एक endpoint के रूप में कार्य करता है। एक एजेंट टूल को कॉल करता है, और आपका सर्वर कोड चलाता है। एक multi-tenant सेटअप में, प्रत्येक टूल को दो सवालों के जवाब देने होंगे:
- क्या आपको यह करने की अनुमति है?
- क्या आपको यहाँ ऐसा करने की अनुमति है?
यदि आप इन्हें छोड़ देते हैं, तो आप एक सुरक्षा खामी (security hole) पैदा कर देते हैं।
वेब रिक्वेस्ट multi-tenancy को संभालने के लिए sessions का उपयोग करते हैं। MCP टूल्स tokens का उपयोग करते हैं। वर्तमान tenant context सेट करने के लिए कोई session और कोई middleware नहीं होता है। यदि आप उन global scopes पर भरोसा करते हैं जो session में "current org" की तलाश करते हैं, तो उन्हें कुछ नहीं मिलेगा। एक क्वेरी जिसे प्रतिबंधित होना चाहिए था, वह आपके डेटाबेस की हर पंक्ति (row) लौटा सकती है।
सुरक्षित रहने के लिए मैं इन चार नियमों का उपयोग करता हूँ:
- Explicit filtering: token auth के तहत ambient scope पर कभी भरोसा न करें। हर बार organization के आधार पर फ़िल्टर करने के लिए एक single trait का उपयोग करें।
- Use UUIDs: कभी भी auto-increment IDs का उपयोग न करें। ऐसे unguessable identifiers का उपयोग करें ताकि एजेंट अन्य रिकॉर्ड्स का अंदाज़ा न लगा सकें।
- Reuse permissions: एजेंटों के लिए नए permission sets न बनाएं। उन्हीं ability strings का उपयोग करें जिनका उपयोग आपका वेब ऐप करता है।
- Mark side effects: टूल्स को read-only या write-enabled के रूप में लेबल करने के लिए annotations का उपयोग करें।
Organization lookups के लिए एक single trait का उपयोग करके, आप ऑडिट करने के लिए एक ही स्थान बनाते हैं। यदि lookup null लौटाता है, तो टूल एजेंट को बताता है कि रिकॉर्ड नहीं मिला। एजेंट को अन्य tenants के बारे में कोई जानकारी नहीं मिलती है।
यह AI की समस्या नहीं है। यह multi-tenancy और authorization की समस्या है। MCP आपके ऐप को expose करना आसान बनाता है, इसलिए आपको अपनी सीमाओं के प्रति अनुशासित रहना चाहिए।
एक एजेंट को ठीक वही करना चाहिए जो एक इंसान अपने स्वयं के tenant के भीतर कर सकता है, और उससे ज़्यादा कुछ नहीं।
वैकल्पिक लर्निंग कम्युनिटी: https://t.me/GyaanSetuAi
