મેં મારા પ્રોડક્શન DB પર AI ચલાવ્યું. અહીં શું થયું તે જુઓ.
ગયા મંગળવારે સવારે 3 વાગ્યે, મારી સિસ્ટમે પ્રતિ મિનિટ 12,000 writes નોંધ્યા. એક લૂપને કારણે બધું જ ફ્રીઝ થઈ ગયું. બગ એક સાદી એક-લાઇન ભૂલ હતી. તેનું કારણ ઘણું વધારે ખરાબ હતું.
ડેટાબેઝ માઈગ્રેશન (database migrations) ચલાવતી વખતે મેં Claude Code માં પરમિશન સ્કીપ (permission skip) ફ્લેગ સક્ષમ કર્યો હતો. મને લાગ્યું કે હું મારા સ્ટેજિંગ એન્વાયરમેન્ટ (staging environment) નો ઉપયોગ કરી રહ્યો છું. હું ખોટો હતો. મેં મારી env ફાઇલ ખોટી રીતે કોન્ફિગર કરી હતી. મેં ડેવલપમેન્ટ ક્રેડેન્શિયલ્સ (development credentials) ને બદલે પ્રોડક્શન ક્રેડેન્શિયલ્સ લોડ કરી દીધા હતા.
Claude એ પરમિશન માંગી નહોતી. ફ્લેગ દ્વારા તેને પૂછવાની જરૂર નથી તેમ કહેવામાં આવ્યું હતું. માઈગ્રેશને એક કોલમ ડ્રોપ (drop) કરવાને બદલે નવી કોલમ ઉમેરી દીધી. મેં કોઈ ડેટા ગુમાવ્યો નથી, પણ તે બહુ નજીક હતું.
મેં વિચારવામાં ભૂલ કરી હતી. મને લાગ્યું કે પરમિશન સ્કીપ કરવાથી ફક્ત હેરાન કરતી પોપઅપ્સ (popups) જ દૂર થશે. વાસ્તવમાં, તે એ એકમાત્ર ક્ષણને દૂર કરે છે જ્યારે કોઈ માણસ કમાન્ડની સમીક્ષા કરે છે.
ફ્લેગ બંધ કરવો પૂરતો નથી. તે ફક્ત એક પ્રોમ્પ્ટ ઉમેરે છે જેને તમે સવારે 3 વાગ્યે થાકેલા હોવ ત્યારે બસ ક્લિક કરીને આગળ વધી જશો.
મેં મારી સેટિંગ્સ ફાઇલમાં 'deny rule' ઉમેરીને આ સમસ્યા સુધારી છે.
હું લોકલ કમાન્ડ્સ માટે એક ચોક્કસ 'allow rule' નો ઉપયોગ કરું છું. હું અન્ય તમામ ડેટાબેઝ કમાન્ડ્સ માટે 'deny rule' નો ઉપયોગ કરું છું. ચોક્કસ નિયમ (specific rule) અગ્રતા મેળવે છે. આનાથી તમામ પ્રોડક્શન ડેટાબેઝ કમાન્ડ્સ ચાલતા પહેલા જ બ્લોક થઈ જાય છે.
હવે હું સુરક્ષાના ત્રણ સ્તરોનો ઉપયોગ કરું છું:
- કડક allow અને deny નિયમો સાથેની એક સેટિંગ્સ ફાઇલ.
- માઈગ્રેશન માટે એક અલગ git worktree જે ફક્ત સ્ટેજિંગ ક્રેડેન્શિયલ્સ ધરાવે છે.
- એક CLAUDE.md ફાઇલ જે AI ને પ્રોડક્શનને સ્પર્શ કરતા પહેલા પૂછવા માટે કહે છે.
નોંધ લેશો કે લાંબા ચેટ સેશન્સમાં CLAUDE.md માં આપેલી સૂચનાઓનું મહત્વ ઘટી શકે છે. તમારે તમારા પ્રોમ્પ્ટમાં મહત્વપૂર્ણ નિયમો ફરીથી જણાવવા જોઈએ.
મેં મારા સેટઅપ અને મારી ચોક્કસ કોન્ફિગરેશનનું સંપૂર્ણ વિશ્લેષણ લખ્યું છે.
વૈકલ્પિક લર્નિંગ કોમ્યુનિટી: https://t.me/GyaanSetuAi