AI एजंट्सना मर्यादांची गरज आहे, मास्टर कीजची नाही
MCP द्वारे तुमच्या ॲपचा प्रवेश AI एजंटला देणे जोखमीचे आहे. तुम्ही त्यांना चाव्यांचा गुच्छ देऊन फक्त काही ठराविक दरवाजेच उघडतील अशी आशा करत आहात. हा विश्वास एक सुरक्षा धोका (security risk) आहे.
मल्टी-टेनंट (multi-tenant) Laravel ॲपसाठी MCP टूल्स तयार करताना, तुम्हाला एक समस्या सोडवावी लागेल: दुसऱ्या कोणाचाही डेटा न पाहता एजंटला ॲप चालवू कसे द्यावे.
प्रत्येक MCP टूल एक एंडपॉइंट (endpoint) म्हणून काम करते. एजंट एका टूलला कॉल करतो आणि तुमचा सर्व्हर कोड रन करतो. मल्टी-टेनंट सेटअपमध्ये, प्रत्येक टूलला दोन प्रश्नांची उत्तरे द्यावी लागतात:
- तुम्हाला हे करण्याची परवानगी आहे का?
- तुम्हाला येथे हे करण्याची परवानगी आहे का?
जर तुम्ही या गोष्टींकडे दुर्लक्ष केले, तर तुम्ही सुरक्षेमध्ये त्रुटी (security hole) निर्माण करता.
वेब रिक्वेस्ट्स मल्टी-टेनन्सी हाताळण्यासाठी सेशन्सचा (sessions) वापर करतात. MCP टूल्स टोकन्सचा (tokens) वापर करतात. सध्याचा टेनंट कॉन्टेक्स्ट (tenant context) सेट करण्यासाठी तिथे कोणताही सेशन किंवा मिडलवेअर (middleware) नसतो. जर तुम्ही सेश मधील "current org" शोधणाऱ्या ग्लोबल स्कोपवर (global scopes) अवलंबून असाल, तर त्यांना काहीही सापडणार नाही. एखादी क्वेरी (query) जी मर्यादित असायला हवी होती, ती तुमच्या डेटाबेस मधील सर्व रो (rows) परत करू शकते.
सुरक्षित राहण्यासाठी मी या चार नियमांचा वापर करतो:
- स्पष्ट फिल्टरिंग (Explicit filtering): टोकन ऑथेंटिकेशन अंतर्गत कधीही एम्बियंट स्कोपवर (ambient scope) अवलंबून राहू नका. प्रत्येक वेळी संस्थेनुसार (organization) फिल्टर करण्यासाठी एका सिंगल ट्रेटचा (single trait) वापर करा.
- UUIDs वापरा: कधीही ऑटो-इन्क्रिमेंट आयडी (auto-increment IDs) वापरू नका. अशा आयडेंटिफायर्सचा वापर करा ज्याचा अंदाज लावता येणार नाही, जेणेकरून एजंट इतर रेकॉर्ड्सचा अंदाज लावू शकणार नाहीत.
- परवानग्यांचा पुनर्वापर करा: एजंटसाठी नवीन परमिशन सेट्स तयार करू नका. तुमचे वेब ॲप ज्या 'अॅबिलिटी स्ट्रिंग्स' (ability strings) वापरते, त्यांचाच वापर करा.
- साईड इफेक्ट्स मार्क करा: टूल्सना 'रीड-ओन्ली' (read-only) किंवा 'राईट-इनेबल्ड' (write-enabled) म्हणून लेबल करण्यासाठी ॲनोटेशन्सचा (annotations) वापर करा.
ऑर्गनायझेशन लूकअपसाठी (organization lookups) एका सिंगल ट्रेटचा वापर करून, तुम्ही ऑडिट करण्यासाठी एकच जागा तयार करता. जर लूकअप 'null' परत करत असेल, तर टूल एजंटला सांगते की रेकॉर्ड सापडले नाही. एजंटला इतर टेनंट्सबद्दल कोणतीही माहिती मिळत नाही.
ही AI ची समस्या नाही. ही मल्टी-टेनन्सी आणि ऑथोरायझेशनची (authorization) समस्या आहे. MCP मुळे तुमचे ॲप उघडणे (expose करणे) सोपे होते, त्यामुळे तुम्हाला तुमच्या मर्यादांबाबत शिस्तबद्ध राहावे लागेल.
एजंटने केवळ तेवढेच केले पाहिजे जे मानव त्यांच्या स्वतःच्या टेनंटमध्ये करू शकतो, आणि त्यापेक्षा जास्त काहीही नाही.
Optional learning community: https://t.me/GyaanSetuAi
