𝗠𝘆 𝗦𝗲𝗰𝘂𝗿𝗶𝘁𝘆 𝗔𝘂𝗱𝗶𝘁 𝗛𝘂𝗻𝗴 𝗘𝘃𝗲𝗿𝘆 𝗡𝗶𝗴𝗵𝘁
నా ప్రతిరాత్రి సెక్యూరిటీ ఆడిట్ పనిచేయడం ఆగిపోయింది.
ప్రతిరోజూ ఉదయం 5:39 గంటలకు cron job రన్ అయ్యేది. స్క్రిప్ట్ ప్రారంభమైంది. లాగ్స్లో ఏమీ కనిపించలేదు. ఎటువంటి ఎర్రర్స్ (errors) రాలేదు. ఫైల్లోకి ఎటువంటి రిపోర్ట్ రాయబడలేదు.
నేను రెండు రోజులు డీబగ్గింగ్ (debugging) కోసం గడిపాను. దానికి పరిష్కారం కేవలం మూడు లైన్ల bash కోడ్ మాత్రమే.
సమస్య ఏమిటంటే, అది ఒక సైలెంట్ ఫెయిల్యూర్ (silent failure).
నా స్క్రిప్ట్ 13 చెక్లను రన్ చేస్తుంది. అందులో ఒక చెక్ CLI ద్వారా లోతైన సెక్యూరిటీ ఆడిట్ను పిలుస్తుంది. ఆ కమాండ్ హ్యాంగ్ అవుతోంది. అది ఎర్రర్ చూపించలేదు. అది అనంతంగా వేచి చూస్తూనే ఉంది.
CLI గేట్వే నుండి స్పందన (response) కోసం ఎదురుచూస్తోంది. cron ఎన్విరాన్మెంట్లో, ఆ స్పందన ఎప్పటికీ రాలేదు. CLIకి అంతర్గత టైమౌట్ (internal timeout) లేదు. అది మొత్తం స్క్రిప్ట్ను బ్లాక్ చేసింది. స్క్రిప్ట్ ఎప్పటికీ పూర్తి కాకపోవడం వల్ల, రిపోర్ట్ను సేవ్ చేసే లైన్ వరకు అది చేరుకోలేకపోయింది.
నేను ఈ క్రింది మార్పులతో దానిని సరిచేశాను:
- నేను ఆ కమాండ్ను ఒక timeout లోపల ఉంచాను.
- "not available" కి బదులుగా "command timed out" అని వచ్చేలా ఎర్రర్ మెసేజ్ను మార్చాను.
- ఎర్రర్లను సరిగ్గా పట్టుకోవడానికి
set -eo pipefailఉపయోగించాను.
ఇప్పుడు రిపోర్ట్ సమయానికి వస్తుంది. ఒకవేళ ఆడిట్ హ్యాంగ్ అయినా, రిపోర్ట్ మిగిలిన 12 మెట్రిక్స్ను సేవ్ చేస్తుంది. రిపోర్ట్ లేకపోవడం కంటే పాక్షిక రిపోర్ట్ (partial report) ఉండటం మేలు.
ఇది నాకు ఏజెంట్ సాండ్బాక్సింగ్ (agent sandboxing) గురించి మూడు పాఠాలను నేర్పింది:
ఏదైనా డిపెండెన్సీ (dependency) ఎర్రర్ చూపించి విఫలమవుతుందని ఎప్పుడూ నమ్మకండి. మీరు cron jobలో ఏదైనా ఎక్స్టర్నల్ టూల్ను ఉపయోగిస్తుంటే, ఎల్లప్పుడూ ఒక timeout సెట్ చేయండి. ప్రతిదీ ఒక పరిమిత సమయం (bounded wait) లోపు ముగియాలి.
పాక్షిక విజయానికి (partial success) అనుగుణంగా డిజైన్ చేయండి. ఒక భాగం విఫలమైనా మీ సిస్టమ్ రిపోర్ట్ను రాసేలా చూసుకోండి.
సైలెంట్ ఫెయిల్యూర్లను (silent failures) నివారించండి. ఒక ఎర్రర్ స్పష్టంగా కనిపిస్తే (loud failure) మీరు వెంటనే మేల్కొంటారు. సైలెంట్ ఫెయిల్యూర్ వల్ల చాలా ఆలస్యం అయ్యే వరకు మీరు కీలకమైన డేటాను కోల్పోతారు.
మీరు ఒక ఏజెంట్కు కమాండ్లను రన్ చేయడానికి అనుమతి ఇచ్చినప్పుడు, ఆ కమాండ్లలోని ప్రతి ఫెయిల్యూర్ మోడ్ను (failure mode) మీరు కూడా స్వీకరిస్తారు. ఒక టూల్ హ్యాంగ్ అయితే, అది మీ మొత్తం పైప్లైన్ను హ్యాంగ్ చేస్తుంది.
సెక్యూరిటీ అంటే కేవలం దురుద్దేశపూరిత వ్యక్తులను (malicious actors) ఆపడం మాత్రమే కాదు. మీ ఇన్ఫ్రాస్ట్రక్చర్ విఫలమైనప్పుడు, మీరు దానిని గుర్తించేలా స్పష్టంగా (loudly) తెలియజేసేలా ఉండటం కూడా ముఖ్యం.
మీరు ఎక్స్టర్నల్ టూల్స్ను పిలిచే ఆటోమేటెడ్ స్క్రిప్ట్లను ఉపయోగిస్తుంటే, ఈ వారం మీ టైమౌట్లను (timeouts) ఒకసారి తనిఖీ చేయండి.
Optional learning community: https://t.me/GyaanSetuAi