एजंट गार्डरेल्स आणि रनटाइम LDAP कॉन्फिग
मी आज दोन वेगवेगळ्या समस्यांवर काम केले. दोन्हीचे उद्दिष्ट एकच होते: मर्यादा स्पष्ट करणे आणि त्या नियंत्रित करणे सोपे करणे.
पहिल्या कामात AI एजंटसाठी MCP टूल्स तयार करणे समाविष्ट होते. मला एजंटने इव्हेंट्सची यादी करणे, तयारी तपासणे आणि अपडेट्स प्रकाशित करणे यांद्वारे इव्हेंट प्लॅटफॉर्म व्यवस्थापित करायला हवा होता.
आव्हान हे आहे की MCP टूल्स टोकन ऑथेंटिकेशन (token authentication) वापरतात. याचा अर्थ असा की त्यांच्याकडे मानक वेब विनंतीप्रमाणे (standard web request) सेशन कॉन्टेक्स्ट (session context) नसतो. जर तुम्ही ग्लोबल टेनंट स्कोपवर (global tenant scope) अवलंबून राहिलात, तर सिस्टम प्रत्येक संस्थेचा डेटा परत करू शकते.
मी हे तीन नियमांद्वारे सोडवले:
- प्रत्येक क्वेरीमध्ये संस्थेनुसार (organization) स्पष्टपणे फिल्टर करा. ग्लोबल स्कोपवर अवलंबून राहू नका.
- वेब ॲपप्रमाणेच तेच परमिशन स्ट्रिंग्स वापरा. एजंटकडे त्याचा वापर करणाऱ्या मानवापेक्षा कधीही जास्त अधिकार नसावेत.
- ऑटो-इन्क्रिमेंट आयडींऐवजी (auto-increment IDs) लूकअपसाठी UUIDs वापरा.
प्रत्येक टूलला अनट्रस्टेड एंडपॉइंट (untrusted endpoint) म्हणून समजा. तुमचे लॉजिक अशा ठिकाणी ठेवा जिथे तुम्ही ते एकाच ठिकाणी टेस्ट करू शकाल.
दुसऱ्या कामात आयडेंटिटी पोर्टलचा समावेश होता. मी LDAP सेटिंग्स स्टॅटिक फाइल्समधून सेटिंग्स UI मध्ये हलवल्या. आता ॲडमिन नवीन डिप्लॉयमेंटशिवाय होस्ट, पोर्ट आणि क्रेडेंशियल्स बदलू शकतात.
मी कनेक्शन टाइमआउट आणि SASL पर्यायांवर नियंत्रण देखील जोडले. यामुळे JSON सोबत एक तांत्रिक अडथळा निर्माण झाला.
जेव्हा तुम्ही JSON मध्ये इंटिजर कीज (integer keys) स्टोअर करता, तेव्हा डिकोड करताना त्या स्ट्रिंग म्हणून परत येतात. LDAP फंक्शन्सना इंटिजर कीजची आवश्यकता असते. मला वापरण्यापूर्वी त्या कीज पुन्हा इंटिजरमध्ये रूपांतरित करण्यासाठी एक मॅपर (mapper) लिहावा लागला.
हे सुरक्षित ठेवण्यासाठी, मी दोन गार्डरेल्स जोडले:
- 'एट रेस्ट' (at rest) स्थितीत बाइंड पासवर्ड एन्क्रिप्ट करा. सीक्रेट्स कधीही कॅशेमध्ये प्लेनटेक्स्ट (plaintext) स्वरूपात ठेवू नका.
- सेव्ह करण्यापूर्वी JSON फील्ड्स व्हॅलिडेट करा. चुकीची कॉन्फिगरेशन सेव्ह करण्याच्या टप्प्यावरच फेल झाली पाहिजे, वापरकर्त्याला लॉकआउट झाल्यावर नाही.
मी कनेक्शन टेस्टिंग आणि सेव्हिंग या दोन्हीसाठी एकच असेंबलर (assembler) वापरला. यामुळे तुम्ही जो कनेक्शन टेस्ट करता, तोच तुम्ही सेव्ह करता याची खात्री मिळते.
इंजिनिअरिंग म्हणजे फक्त फीचर तयार करणे नव्हे. इंजिनिअरिंग म्हणजे गार्डरेल्स तयार करणे होय.
स्रोत: https://dev.to/nasrulhazim/dev-log-2026-06-24-agent-guardrails-and-runtime-ldap-config-2hi5
