AI ഏജന്റുകൾക്ക് എങ്ങനെ സുരക്ഷിതമായ ഡാറ്റാബേസ് ആക്സസ് നൽകാം
നിങ്ങളുടെ പ്രൊഡക്ഷൻ ഡാറ്റാബേസിന് ഒരു AI ഏജന്റിന് ആക്സസ് നൽകുന്നത് വലിയൊരു റിസ്കാണ്. ഒരു 'read-only' യൂസർ എന്നത് മാത്രം മതിയാകില്ല. ഒരു ഏജന്റിന് ഉദ്ദേശ്യങ്ങളോ (intent) ഡാറ്റയുടെ സെൻസിറ്റിവിറ്റിയോ തിരിച്ചറിയാൻ കഴിയില്ല. നിങ്ങൾ 'write access' നൽകുകയാണെങ്കിൽ, ഒരു 'prompt injection' ഉപയോഗിച്ച് സഹായകരമായ ഒരു ഏജന്റിനെ വിനാശകാരിയായി മാറ്റാൻ സാധിക്കും.
നിങ്ങളുടെ ഡാറ്റ സുരക്ഷിതമായി സൂക്ഷിക്കാൻ രണ്ട് പാളികൾ (layers) ഉള്ള സംരക്ഷണം ആവശ്യമാണ്.
ലെയർ 1: സ്റ്റാറ്റിക് ഡാറ്റാബേസ് കൺട്രോളുകൾ (Static Database Controls)
ഇവ നിങ്ങളുടെ ഡാറ്റാബേസ് എഞ്ചിനുള്ളിലെ അടിസ്ഥാന ക്രമീകരണങ്ങളാണ്. ഇവ ആദ്യം ഉപയോഗിക്കുക:
- Least-privilege roles: ഏജന്റിനായി ഒരു പ്രത്യേക റോൾ (role) നിർമ്മിക്കുക. ഒരിക്കലും അഡ്മിൻ അക്കൗണ്ടുകൾ ഉപയോഗിക്കരുത്.
- Read replicas: അനലിറ്റിക്സ് ഏജന്റുകളെ ഒരു റെപ്ലിക്കയിലേക്ക് (replica) അയക്കുക, അങ്ങനെ അവർ പ്രൊഡക്ഷനെ സാവധാനത്തിലാക്കില്ല.
- Row-level security: ഏജന്റിന് കാണാൻ കഴിയുന്ന ഡാറ്റ പരിമിതപ്പെടുത്താൻ പോളിസികൾ ഉപയോഗിക്കുക.
- Statement timeouts: നിയന്ത്രണാതീതമായ ക്വറികൾ (queries) നിങ്ങളുടെ സെർവർ തകരാറിലാക്കുന്നത് തടയാൻ ഇത് സഹായിക്കുന്നു.
- Allowlists: പ്രത്യേക ഹോസ്റ്റുകളിലേക്കുള്ള കണക്ഷനുകൾ മാത്രം അനുവദിക്കുക.
ലെയർ 2: റൺടൈം കൺട്രോൾ പ്ലെയിൻ (The Runtime Control Plane)
സ്റ്റാറ്റിക് കൺട്രോളുകൾ ഐഡന്റിറ്റി (identity) മാത്രമേ പരിശോധിക്കൂ. ഡാറ്റ ചോർത്തുന്നതിൽ നിന്നോ അല്ലെങ്കിൽ ഒരു ദുരുദ്ദേശ്യപരമായ നിർദ്ദേശം പാലിക്കുന്നതിൽ നിന്നോ ഒരു ഏജന്റിനെ തടയാൻ അവയ്ക്ക് കഴിയില്ല. ഏജന്റും ഡാറ്റാബേസും ഇടയിൽ പ്രവർത്തിക്കുന്ന ഒരു കൺട്രോൾ പ്ലെയിൻ നിങ്ങൾക്ക് ആവശ്യമാണ്.
ഈ ലെയർ നാല് കാര്യങ്ങൾ ചെയ്യണം:
- Classify: ഓരോ ക്വറിയെയും റീഡ് (read), റൈറ്റ് (write), അല്ലെങ്കിൽ സ്കീമ മാറ്റം (schema change) എന്നിങ്ങനെ അടയാളപ്പെടുത്തുക.
- Enforce default-deny: നിങ്ങൾ വ്യക്തമായി അനുവദിക്കാത്ത പക്ഷം എല്ലാം ബ്ലോക്ക് ചെയ്യുക.
- Gate risky actions: ബൾക്ക് ഡിലീറ്റുകൾക്കോ സ്കീമ മാറ്റങ്ങൾക്കോ ഒരു മനുഷ്യന്റെ അനുമതി ആവശ്യമാക്കുക.
- Record everything: ഓരോ പ്രവർത്തനത്തിന്റെയും ഓരോ അനുമതിയുടെയും മാറ്റം വരുത്താൻ കഴിയാത്ത (immutable) ഒരു ലോഗ് സൂക്ഷിക്കുക.
എന്തുകൊണ്ടാണ് ഇത് പ്രധാനമാകുന്നത്: നിങ്ങൾ പ്രോംപ്റ്റിൽ (prompt) നിയമങ്ങൾ നൽകിയാൽ, ഏജന്റിന് അവ അവഗണിക്കാനാകും. എന്നാൽ ഒരു കൺട്രോൾ പ്ലെയിൻ ഏജന്റിന്റെ കോൺടെക്സ്റ്റിന് (context) പുറത്താണ് പ്രവർത്തിക്കുന്നത്. അത് ഏജന്റിന്റെ പ്ലാൻ അല്ല, മറിച്ച് യഥാർത്ഥ ക്വറിയാണ് കാണുന്നത്. ഇത് പ്രോംപ്റ്റ് ഇൻജക്ഷനിൽ നിന്ന് നിങ്ങളെ സംരക്ഷിക്കുന്നു.
സുരക്ഷിതമായ ആക്സസിനായി ഈ ചെക്ക്ലിസ്റ്റ് ഉപയോഗിക്കുക:
- ഓരോ ഏജന്റിനും പ്രത്യേക റോൾ.
- ഡാറ്റ പരിശോധനയ്ക്കായി (exploration) റീഡ് റെപ്ലിക്കകൾ ഉപയോഗിക്കുക.
- Row-level security നടപ്പിലാക്കുക.
- Statement timeouts ക്രമീകരിക്കുക.
- എല്ലാ ട്രാഫിക്കും ഒരു കൺട്രോൾ പ്ലെയിൻ വഴി മാത്രം കടത്തിവിടുക.
- Default-deny പോളിസി ഉപയോഗിക്കുക.
- ഉയർന്ന റിസ്കുള്ള ജോലികൾക്ക് മനുഷ്യന്റെ അനുമതി ആവശ്യമാക്കുക.
- മാറ്റം വരുത്താൻ കഴിയാത്ത ഒരു ഓഡിറ്റ് ലോഗ് സൂക്ഷിക്കുക.
സ്റ്റാറ്റിക് കൺട്രോളുകൾ അവയുടെ ജോലി ചെയ്യുന്നു. ബാക്കിയുള്ളവ കൺട്രോൾ പ്ലെയിൻ ചെയ്യുന്നു. നിങ്ങൾക്ക് ഇവ രണ്ടും ആവശ്യമാണ്.
Optional learning community: https://t.me/GyaanSetuAi
