AI ഏജന്റുകൾക്ക് അതിർവരമ്പുകൾ ആവശ്യമാണ്, മാസ്റ്റർ കീകൾ അല്ല
MCP വഴി ഒരു AI ഏജന്റിന് നിങ്ങളുടെ ആപ്പിലേക്ക് പ്രവേശനം നൽകുന്നത് അപകടകരമാണ്. നിങ്ങൾ ഒരു കീറിംഗ് (keyring) കൈമാറുകയും അവർ ചില വാതിലുകൾ മാത്രം തുറക്കുമെന്ന് പ്രതീക്ഷിക്കുകയും ചെയ്യുന്നു. ആ വിശ്വാസം ഒരു സുരക്ഷാ ഭീഷണിയാണ്.
ഒരു മൾട്ടി-ടെനന്റ് (multi-tenant) Laravel ആപ്പിനായി MCP ടൂളുകൾ നിർമ്മിക്കുമ്പോൾ, നിങ്ങൾ ഒരു പ്രശ്നം പരിഹരിക്കേണ്ടതുണ്ട്: മറ്റൊരാളുടെ ഡാറ്റ ഉപയോഗിക്കാതെ തന്നെ എങ്ങനെ ഒരു ഏജന്റിനെ ആപ്പ് പ്രവർത്തിപ്പിക്കാൻ അനുവദിക്കാം എന്നത്.
ഓരോ MCP ടൂളും ഒരു എൻഡ്പോയിന്റ് (endpoint) ആയി പ്രവർത്തിക്കുന്നു. ഒരു ഏജന്റ് ഒരു ടൂൾ വിളിക്കുമ്പോൾ നിങ്ങളുടെ സെർവർ കോഡ് പ്രവർത്തിപ്പിക്കുന്നു. ഒരു മൾട്ടി-ടെനന്റ് സജ്ജീകരണത്തിൽ, ഓരോ ടൂളും രണ്ട് ചോദ്യങ്ങൾക്ക് ഉത്തരം നൽകണം:
- ഇത് ചെയ്യാൻ നിങ്ങൾക്ക് അനുമതിയുണ്ടോ?
- ഇവിടെ ഇത് ചെയ്യാൻ നിങ്ങൾക്ക് അനുമതിയുണ്ടോ?
ഇവ അവഗണിച്ചാൽ, നിങ്ങൾ ഒരു സുരക്ഷാ വിടവ് (security hole) സൃഷ്ടിക്കുന്നു.
മൾട്ടി-ടെനൻസി കൈകാര്യം ചെയ്യാൻ വെബ് റിക്വസ്റ്റുകൾ സെഷനുകൾ (sessions) ഉപയോഗിക്കുന്നു. എന്നാൽ MCP ടൂളുകൾ ഉപയോഗിക്കുന്നത് ടോക്കണുകളാണ് (tokens). നിലവിലെ ടെനന്റ് കോൺടെക്സ്റ്റ് (tenant context) നിശ്ചയിക്കാൻ അവിടെ സെഷനോ മിഡിൽവെയറോ (middleware) ഇല്ല. ഒരു സെഷനിൽ "current org" തിരയുന്ന ഗ്ലോബൽ സ്കോപ്പുകളെ (global scopes) നിങ്ങൾ ആശ്രയിക്കുകയാണെങ്കിൽ, അവയ്ക്ക് ഒന്നും കണ്ടെത്താൻ കഴിയില്ല. നിയന്ത്രിക്കപ്പെടേണ്ട ഒരു ക്വറി (query), നിങ്ങളുടെ ഡാറ്റാബേസിലെ എല്ലാ വരികളും തിരികെ നൽകിയേക്കാം.
സുരക്ഷിതമായിരിക്കാൻ ഞാൻ ഈ നാല് നിയമങ്ങൾ ഉപയോഗിക്കുന്നു:
- Explicit filtering: ടോക്കൺ ഓതന്റേഷന് (token auth) കീഴിലുള്ള ആംബിയന്റ് സ്കോപ്പിനെ (ambient scope) ഒരിക്കലും ആശ്രയിക്കരുത്. ഓരോ തവണയും ഓർഗനൈസേഷൻ അടിസ്ഥാനമാക്കി ഫിൽട്ടർ ചെയ്യാൻ ഒരു സിംഗിൾ ട്രെയ്റ്റ് (single trait) ഉപയോഗിക്കുക.
- Use UUIDs: ഒരിക്കലും ഓട്ടോ-ഇൻക്രിമെന്റ് (auto-increment) ഐഡികൾ ഉപയോഗിക്കരുത്. ഏജന്റുകൾക്ക് മറ്റ് റെക്കോർഡുകൾ ഊഹിക്കാൻ കഴിയാത്ത വിധം പ്രവചിക്കാൻ കഴിയാത്ത ഐഡന്റിഫയറുകൾ ഉപയോഗിക്കുക.
- Reuse permissions: ഏജന്റുകൾക്കായി പുതിയ പെർമിഷൻ സെറ്റുകൾ സൃഷ്ടിക്കരുത്. നിങ്ങളുടെ വെബ് ആപ്പ് ഉപയോഗിക്കുന്ന അതേ എബിലിറ്റി സ്ട്രിംഗുകൾ (ability strings) തന്നെ ഉപയോഗിക്കുക.
- Mark side effects: ടൂളുകളെ റീഡ്-ഓൺലി (read-only) അല്ലെങ്കിൽ റൈറ്റ്-ഇനേബിൾഡ് (write-enabled) എന്ന് അടയാളപ്പെടുത്താൻ അനോട്ടേഷനുകൾ (annotations) ഉപയോഗിക്കുക.
ഓർഗനൈസേഷൻ ലുക്കപ്പുകൾക്കായി (organization lookups) ഒരു സിംഗിൾ ട്രെയ്റ്റ് ഉപയോഗിക്കുന്നതിലൂടെ, ഓഡിറ്റ് ചെയ്യാൻ നിങ്ങൾക്ക് ഒരിടം ലഭിക്കുന്നു. ലുക്കപ്പ് 'null' ആണെന്ന് കാണിച്ചാൽ, റെക്കോർഡ് കണ്ടെത്തിയില്ല എന്ന് ടൂൾ ഏജന്റിനോട് പറയും. മറ്റ് ടെനന്റുകളെക്കുറിച്ചുള്ള യാതൊരു വിവരവും ഏജന്റിന് ലഭിക്കില്ല.
ഇതൊരു AI പ്രശ്നമല്ല. ഇതൊരു മൾട്ടി-ടെനൻസി, ഓതറൈസേഷൻ (authorization) പ്രശ്നമാണ്. നിങ്ങളുടെ ആപ്പ് എളുപ്പത്തിൽ എക്സ്പോസ് ചെയ്യാൻ MCP സഹായിക്കുന്നു, അതിനാൽ നിങ്ങളുടെ അതിർവരമ്പുകളിൽ നിങ്ങൾ അച്ചടക്കമുള്ളവരായിരിക്കണം.
ഒരു ഏജന്റ് സ്വന്തം ടെനന്റിനുള്ളിൽ ഒരു മനുഷ്യന് ചെയ്യാൻ കഴിയുന്ന കാര്യങ്ങൾ മാത്രം ചെയ്യണം, അതിൽ കൂടുതൽ ഒന്നും ചെയ്യരുത്.
Optional learning community: https://t.me/GyaanSetuAi
