ನಾನು ನನ್ನ ಪ್ರೊಡಕ್ಷನ್ DB ಯ ಮೇಲೆ AI ಅನ್ನು ರನ್ ಮಾಡಿದೆ. ಏನಾಯಿತು ಎಂಬುದು ಇಲ್ಲಿದೆ.
ಕಳೆದ ಮಂಗಳವಾರ ಬೆಳಗಿನ ಜಾವ 3 ಗಂಟೆಗೆ, ನನ್ನ ಸಿಸ್ಟಮ್ ಪ್ರತಿ ನಿಮಿಷಕ್ಕೆ 12,000 ಬರವಣಿಗೆಗಳನ್ನು (writes) ದಾಖಲಿಸಿತು. ಒಂದು ಲೂಪ್ (loop) ಎಲ್ಲವನ್ನೂ ಸ್ಥಗಿತಗೊಳಿಸಿತು. ಆ ಬಗ್ (bug) ಕೇವಲ ಒಂದು ಸಾಲಿನ ಸರಳ ತಪ್ಪಾಗಿತ್ತು. ಆದರೆ ಅದರ ಕಾರಣ ಬಹಳ ಗಂಭೀರವಾಗಿತ್ತು.
ಡೇಟಾಬೇಸ್ ಮೈಗ್ರೇಷನ್ಗಳನ್ನು (database migrations) ರನ್ ಮಾಡುವಾಗ ನಾನು Claude Code ನಲ್ಲಿ 'permission skip flag' ಅನ್ನು ಎನೇಬಲ್ ಮಾಡಿದ್ದೆ. ನಾನು ನನ್ನ ಸ್ಟೇಜಿಂಗ್ ಎನ್ವಿರಾನ್ಮೆಂಟ್ (staging environment) ಬಳಸುತ್ತಿದ್ದೇನೆ ಎಂದು ಭಾವಿಸಿದ್ದೆ. ಆದರೆ ನಾನು ತಪ್ಪು ಮಾಡಿದ್ದೆ. ನಾನು ನನ್ನ env ಫೈಲ್ ಅನ್ನು ತಪ್ಪಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಿದ್ದೆ. ಡೆವಲಪ್ಮೆಂಟ್ ಕ್ರೆಡೆನ್ಶಿಯಲ್ಗಳ ಬದಲಿಗೆ ಪ್ರೊಡಕ್ಷನ್ ಕ್ರೆಡೆನ್ಶಿಯಲ್ಗಳನ್ನು ಲೋಡ್ ಮಾಡಿದ್ದೆ.
Claude ಅನುಮತಿ ಕೇಳಲಿಲ್ಲ. ಆ ಫ್ಲಾಗ್ (flag) ಅನುಮತಿ ಕೇಳದಂತೆ ಸೂಚಿಸಿತ್ತು. ಮೈಗ್ರೇಷನ್ ಒಂದು ಕಾಲಂ ಅನ್ನು ಡ್ರಾಪ್ (drop) ಮಾಡುವ ಬದಲು ಹೊಸದನ್ನು ಸೇರಿಸಿತು. ನಾನು ಯಾವುದೇ ಡೇಟಾವನ್ನು ಕಳೆದುಕೊಳ್ಳಲಿಲ್ಲ, ಆದರೆ ಅಪಾಯ ಬಹಳ ಹತ್ತಿರವಿತ್ತು.
ನನ್ನ ಆಲೋಚನೆಯಲ್ಲೇ ತಪ್ಪಿತ್ತು. ಅನುಮತಿಗಳನ್ನು ಸ್ಕಿಪ್ ಮಾಡುವುದರಿಂದ ಕೇವಲ ಕಿರಿಕಿರಿ ಉಂಟುಮಾಡುವ ಪಾಪ್-ಅಪ್ಗಳು (popups) ಮಾತ್ರ ಹೋಗುತ್ತವೆ ಎಂದು ನಾನು ಭಾವಿಸಿದ್ದೆ. ಆದರೆ ವಾಸ್ತವವಾಗಿ, ಅದು ಮನುಷ್ಯನು ಕಮಾಂಡ್ ಅನ್ನು ಪರಿಶೀಲಿಸುವ ಏಕೈಕ ಕ್ಷಣವನ್ನೇ ಇಲ್ಲವಾಗಿಸುತ್ತದೆ.
ಕೇವಲ ಆ ಫ್ಲಾಗ್ ಅನ್ನು ಆಫ್ ಮಾಡುವುದು ಸಾಕಾಗುವುದಿಲ್ಲ. ಅದು ಬೆಳಗಿನ ಜಾವ 3 ಗಂಟೆಗೆ ನೀವು ಸುಸ್ತಾಗಿದ್ದಾಗ ಕೇವಲ ಒಂದು ಪ್ರಾಂಪ್ಟ್ ಅನ್ನು (prompt) ತೋರಿಸುತ್ತದೆ, ಅದನ್ನು ನೀವು ಸುಮ್ಮನೆ ಕ್ಲಿಕ್ ಮಾಡಿ ಮುಂದೆ ಹೋಗುತ್ತೀರಿ.
ನಾನು ನನ್ನ settings ಫೈಲ್ನಲ್ಲಿ 'deny rule' ಅನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ಇದನ್ನು ಸರಿಪಡಿಸಿದೆ.
ನಾನು ಲೋಕಲ್ ಕಮಾಂಡ್ಗಳಿಗಾಗಿ ನಿರ್ದಿಷ್ಟ 'allow rule' ಅನ್ನು ಬಳಸುತ್ತೇನೆ. ಉಳಿದ ಎಲ್ಲಾ ಡೇಟಾಬೇಸ್ ಕಮಾಂಡ್ಗಳಿಗಾಗಿ 'deny rule' ಅನ್ನು ಬಳಸುತ್ತೇನೆ. ಇಲ್ಲಿ ನಿರ್ದಿಷ್ಟ ನಿಯಮವೇ (specific rule) ಅನ್ವಯವಾಗುತ್ತದೆ. ಇದು ಎಲ್ಲಾ ಪ್ರೊಡಕ್ಷನ್ ಡೇಟಾಬೇಸ್ ಕಮಾಂಡ್ಗಳು ರನ್ ಆಗುವ ಮೊದಲೇ ಅವುಗಳನ್ನು ತಡೆಯುತ್ತದೆ.
ನಾನು ಈಗ ಸುರಕ್ಷತೆಯ ಮೂರು ಪದರಗಳನ್ನು ಬಳಸುತ್ತಿದ್ದೇನೆ:
- ಕಟ್ಟುನಿಟ್ಟಾದ allow ಮತ್ತು deny ನಿಯಮಗಳನ್ನು ಹೊಂದಿರುವ settings ಫೈಲ್.
- ಸ್ಟೇಜಿಂಗ್ ಕ್ರೆಡೆನ್ಶಿಯಲ್ಗಳನ್ನು ಮಾತ್ರ ಹೊಂದಿರುವ ಮೈಗ್ರೇಷನ್ಗಳಿಗಾಗಿ ಪ್ರತ್ಯೇಕ git worktree.
- ಪ್ರೊಡಕ್ಷನ್ ಅನ್ನು ಮುಟ್ಟುವ ಮೊದಲು ಅನುಮತಿ ಕೇಳುವಂತೆ AI ಗೆ ಸೂಚಿಸುವ CLAUDE.md ಫೈಲ್.
ಗಮನಿಸಿ, ದೀರ್ಘವಾದ ಚಾಟ್ ಸೆಷನ್ಗಳಲ್ಲಿ (chat sessions) CLAUDE.md ನಲ್ಲಿರುವ ಸೂಚನೆಗಳ ಪ್ರಭಾವ ಕಡಿಮೆಯಾಗಬಹುದು. ಆದ್ದರಿಂದ ನೀವು ನಿಮ್ಮ ಪ್ರಾಂಪ್ಟ್ನಲ್ಲಿ (prompt) ನಿರ್ಣಾಯಕ ನಿಯಮಗಳನ್ನು ಮರುಕಳಿಸಿ ಹೇಳಲೇಬೇಕು.
ನಾನು ನನ್ನ ಸೆಟಪ್ ಮತ್ತು ನಿಖರವಾದ ಕಾನ್ಫಿಗರೇಶನ್ನ ಸಂಪೂರ್ಣ ವಿವರಣೆಯನ್ನು ಬರೆದಿದ್ದೇನೆ.
ಐಚ್ಛಿಕ ಕಲಿಕಾ ಸಮುದಾಯ: https://t.me/GyaanSetuAi