ஆதாயங்கள்:
- பாஷ், பைதான் மற்றும் பவர்ஷெல் ஆகியவற்றின் பலத்தைப் புரிந்து கொள்ளும் திறன் மற்றும் செயற்கை நுண்ணறிவு பாதுகாப்பான, பாதுகாக்கப்பட்ட ஸ்கிரிப்ட் வரைவுகளை உருவாக்குகிறது
- set -euo pipefail, வெற்று மாறி சரிபார்த்தல், உலர்-இயக்க முறை மற்றும் லாக்கிங் போன்ற ஸ்கிரிப்ட்களில் காவலர்களை சேர்க்கும் திறன்
- அழிவுகரமான கட்டளைகளைப் படித்து, அவற்றை தனிமைப்படுத்தப்பட்ட சூழலில் மற்றும் உலர்-ஓட்டத்துடன் முதலில் முயற்சிக்கும் திறன் மற்றும் ஸ்கிரிப்டில் ரகசியத்தை உட்பொதிக்காத ஒழுக்கத்தைப் பயன்படுத்துதல்.
DevOps இன் ஆவி ஒரு வாக்கியத்தில் சுருக்கப்பட்டுள்ளது: "நீங்கள் செய்யும் வேலையை இரண்டு முறை தானியங்குபடுத்துங்கள்." கைமுறையாக மீண்டும் மீண்டும் செய்யும் எந்தப் பணியும் - பதிவு சுத்தம் செய்தல், காப்புப் பிரதி எடுப்பது, சர்வர் சுகாதாரச் சரிபார்ப்பு, தொகுதி கோப்பு செயலாக்கம் - நேரம் எடுக்கும் மற்றும் இறுதியில் மனிதப் பிழையால் சிதைக்கப்படும். ஸ்கிரிப்ட்கள் இந்த வேலைகளை எடுத்துக் கொள்கின்றன: சிறிய நிரல்கள் தொடர்ச்சியான கட்டளைகளை தொடர்ச்சியாக, நம்பகமான மற்றும் மீண்டும் மீண்டும் செய்யக்கூடிய வகையில் செயல்படுத்துகின்றன. DevOps தொழில்முறை அடிக்கடி மூன்று மொழிகளைப் பயன்படுத்துகிறது: பாஷ் (லினக்ஸ்/யூனிக்ஸ் ஷெல் ஸ்கிரிப்ட்டுகளுக்கு), பைதான் (சிக்கலான லாஜிக், ஏபிஐ அழைப்பு, தரவு கையாளுதல்) மற்றும் பவர்ஷெல் (விண்டோஸ் மற்றும் கிளவுட் நிர்வாகத்திற்காக).
AI என்பது ஸ்கிரிப்ட் உருவாக்கத்தில் மிகவும் நடைமுறை மதிப்பை வழங்குகிறது: ஒரு வாக்கிய விளக்கத்திலிருந்து வேலை செய்யும் வரைவை உருவாக்குதல், மர்மமான பிழையைத் தீர்ப்பது, ஸ்கிரிப்டை மற்றொரு மொழியில் மொழிபெயர்த்தல். ஆனால் ஒரு ஸ்கிரிப்ட் கண்மூடித்தனமாக இயங்கும் போது ஆபத்தானது - ஒரு தவறான rm, ஒரு Remove-Item -Recurse கோப்புகளை மீளமுடியாமல் நீக்கிவிடும். அதனால்தான் இந்த யூனிட்டின் குறிக்கோள்: AI ஸ்கிரிப்டை எழுதட்டும், நீங்கள் அதைப் படிக்கவும், முதலில் பாதுகாப்பான பயன்முறையில் முயற்சிக்கவும், பின்னர் அதை இயக்கவும்.
எந்த மொழியை எப்போது தேர்வு செய்வது? ஒரு தோராயமான விதி: ஒரு வரிசையில் பல கணினி கட்டளைகளை இயக்குவது (கோப்பை நகலெடுக்கவும், சேவையை மறுதொடக்கம் செய்யவும், காப்பகத்தை மீட்டெடுக்கவும்) பணியானது மிகவும் இயல்பான தேர்வாகும், ஏனெனில் லினக்ஸ் சர்வரில் எங்கும் உள்ளது. வேலை முடிவெடுக்கும் தர்க்கம், லூப்பிங், தரவு மாற்றம், API கோரிக்கை அல்லது JSON செயலாக்கம்-அதாவது 20 வரிகளுக்கு மேல் உள்ள தர்க்கம்-பைதான் அதன் வாசிப்புத்திறன் மற்றும் பணக்கார நூலகங்களுக்கு தனித்து நிற்கிறது; ஒரு சிக்கலான பாஷ் ஸ்கிரிப்ட் விரைவில் புரிந்துகொள்ள முடியாததாகிவிடும், அதே சமயம் பைதான் பராமரிக்க எளிதானது. வேலையில் விண்டோஸ் சர்வர்கள், ஆக்டிவ் டைரக்டரி அல்லது அஸூர் ஆகியவற்றை நிர்வகிப்பதை உள்ளடக்கியிருந்தால், பவர்ஷெல் என்பது இயற்கையான சூழலாகும், ஏனெனில் அதன் பொருள் சார்ந்த இயல்பு இந்த தளங்களுடன் ஆழமாக ஒருங்கிணைக்கிறது. AI க்கு ஸ்கிரிப்டைக் கோரும்போது நீங்கள் எந்த மொழியைத் தேர்ந்தெடுத்தீர்கள், ஏன் என்று குறிப்பிடுவது, வெளியீடு உங்கள் சூழலுக்குப் பொருத்தமானது மற்றும் தனித்தன்மை வாய்ந்தது என்பதை உறுதிப்படுத்துகிறது.
படிப்படியாக: பாதுகாப்பான ஸ்கிரிப்ட் உருவாக்கம்
- பணி மற்றும் சூழலை விவரிக்கவும். அது என்ன செய்யும், எந்த OS/ஷெல், என்ன கட்டுப்பாடுகள்?
- பாதுகாப்பு தண்டவாளங்களைக் கேளுங்கள். பாஷில், -euo pipefail (பிழையில் நிறுத்து, வரையறுக்கப்படாத மாறியில் நிறுத்து), ஆபத்தான செயல்பாடுகளுக்கான உறுதிப்படுத்தல் வரியில், நீக்குவதற்குப் பதிலாக முதலில் நகர்த்தவும்.
- உலர்-இயக்க பயன்முறையைக் கோரவும். --ட்ரை-ரன் மூலம் என்ன செய்ய வேண்டும் என்பதை ஸ்கிரிப்ட் எழுதட்டும், ஆனால் அதைச் செய்ய வேண்டாம்.
- படித்து புரிந்து கொள்ளுங்கள். ஒவ்வொரு வரிசையும் என்ன செய்கிறது என்பதைச் சரிபார்க்கவும், குறிப்பாக நீக்குதல்/நகர்த்தல்/நெட்வொர்க் செயல்பாடுகள்.
- தனிமைப்படுத்தப்பட்ட சூழலில் இதை முயற்சிக்கவும். சோதனை கோப்புறையில், மாதிரி தரவுகளுடன் அதை இயக்கவும்.
- பதிவு செய்வதில் சேர்க்கவும். அது என்ன செய்கிறது என்பதை ஸ்கிரிப்ட் பதிவு செய்யட்டும், அதனால் அதை பின்னர் பார்க்கலாம்.
பாதுகாப்பான ஸ்கிரிப்டிங்கின் அத்தியாவசியங்கள்
ஒரு தயாரிப்பு ஸ்கிரிப்ட் பின்வரும் பாதுகாப்புக் கம்பிகளைக் கொண்டிருக்க வேண்டும்:
- பிழை ஏற்பட்டால் நிறுத்தப்படும். பாஷ்: தொகுப்பு -euo குழாய் தோல்வி. பவர்ஷெல்: $ErrorActionPreference = 'நிறுத்து'. ஒரு படி தோல்வியுற்றால், அடுத்தது வேலை செய்யக்கூடாது.
- ஐடிம்போடென்சி (மீண்டும் மீண்டும் நிகழக்கூடியது). ஸ்கிரிப்ட் இரண்டு முறை இயங்கினால், அது இரட்டை சேதத்தை எதிர்கொள்ளக்கூடாது; "உங்களிடம் ஏற்கனவே இருந்தால், அதைத் தவிர்க்கவும்" தர்க்கம்.
- ஒப்புதல் மற்றும் உலர்-ரன். அழிவுகரமான செயல்களுக்கு "நீங்கள் உறுதியாக இருக்கிறீர்களா?" அல்லது --ட்ரை-ரன் கொடி.
- உள்ளீடு சரிபார்ப்பு. அளவுருக்கள் எதிர்பார்த்தபடி உள்ளதா? ஒரு வெற்று மாறி rm -rf "$DIR"/ ஐ rm -rf / disaster ஆக மாற்றலாம்.
- பதிவு செய்தல். என்ன, எப்போது செய்யப்பட்டது என்பதற்கான பதிவு.
உதவிக்குறிப்பு: பாஷில் மிகவும் ஆபத்தான தவறு வெற்று மாறியை நீக்குவது. $DIR காலியாக இருந்தால் ரூட் கோப்பகத்தை நீக்க rm -rf "$DIR" முயற்சிக்கிறது. செட் -u (வரையறுக்கப்படாத மாறியில் நிறுத்தவும்) மற்றும் நீக்குவதற்கு முன் [ -n "$DIR" ] சரிபார்ப்பது ஒரு உயிர்காக்கும். AI இலிருந்து ஸ்கிரிப்ட்களைக் கோரும்போது இந்தப் பாதுகாப்புகளை வெளிப்படையாகக் கோரவும்.
பாதுகாப்பு: இரகசிய மற்றும் அழிவு கட்டளைகள்
இரண்டு பெரிய ஆபத்துகள்:
- ஸ்கிரிப்ட்டில் ரகசியத்தை உட்பொதித்தல். கடவுச்சொல் டோக்கன் ஸ்கிரிப்ட்டில் எளிய உரையாக இருக்கக்கூடாது; சூழல் மாறி அல்லது பெட்டகத்திலிருந்து படிக்க வேண்டும். ஸ்கிரிப்டுகள் Git க்குள் செல்கின்றன; புதைக்கப்பட்ட ரகசியம் நிரந்தர கசிவு.
- அழிவு கட்டளைகள். rm -rf, Remove-Item -Recurse -Force, DROP TABLE, terraform destroy — இவைகளை ஸ்கிரிப்ட்டில் பார்க்கும்போது, நிறுத்தி இருமுறை யோசிக்கவும். AI ஆல் உருவாக்கப்பட்ட அழிவு கட்டளையை முதலில் தயாரிப்பில் முயற்சிக்க வேண்டாம்.
எச்சரிக்கை: "இந்த கோப்புகளை சுத்தம் செய்யும் ஒரு ஸ்கிரிப்டை எழுதுங்கள்" என்று AI யிடம் நீங்கள் கூறும்போது, அது உருவாக்கும் ... -delete அல்லது rm கட்டளையின் நோக்கத்தை கவனமாக படிக்கவும். வைல்டு கார்டு (*) அல்லது தவறான பாதை நீங்கள் நீக்க விரும்புவதை விட அதிகமாக நீக்கும். எப்போதும் ஸ்கிரிப்டை நீக்குவதற்குப் பதிலாக "நீக்க வேண்டிய பட்டியல்" பயன்முறையில் முதலில் இயக்கவும்.
மூன்று மொழிகளின் ஒப்பீடு
அளவுகோல்
பாஷ்
மலைப்பாம்பு
பவர்ஷெல்
அது எங்கே சிறந்தது
லினக்ஸ் ஷெல், கட்டளை சங்கிலி
சிக்கலான தர்க்கம், API, தரவு
விண்டோஸ் கிளவுட் மேலாண்மை
கற்றல் வளைவு
நடுத்தர (சிக்கப்பட்டது)
எளிதாக
நடுத்தர
கையாளுவதில் பிழை
தொகுப்பு -euo குழாய் தோல்வி
முயற்சி/தவிர
முயற்சி/பிடி, -பிழை நடவடிக்கை
பெயர்வுத்திறன்
Unix/Linux/mac
எல்லா இடங்களிலும்
குறுக்கு மேடை (PS 7+)
எப்போது
சுருக்கமாக, அமைப்பு வேலை செய்கிறது
தர்க்கம் 20 வரிகளுக்கு மேல்
விண்டோஸ்/AD/Azure
மூன்று சிறிய வழக்குகள்
வழக்கு 1 - 2 மணிநேர கைவினை 5 நிமிடங்களில். ஒரு பொறியாளர் ஒவ்வொரு வாரமும் 40 சர்வர்களில் இருந்து பதிவுகளை சேகரித்து காப்பகப்படுத்த 2 மணிநேரம் செலவழித்து வந்தார். அவர் AI பணியை விவரித்து -euo pipefail + உலர்-இயக்க பாதுகாப்புகளை அமைத்து ஒரு பாஷ் ஸ்கிரிப்டை உருவாக்கினார். முதலில் ட்ரை-ரன் மூலம் ஸ்கிரிப்டை சரிபார்க்கப்பட்டது, பின்னர் திட்டமிடப்பட்ட பணியுடன் (கிரான்) இணைக்கப்பட்டது. வாராந்திர வேலை 5 நிமிடங்களாக குறைக்கப்பட்டு மனித பிழைகள் நீக்கப்படும்.
வழக்கு 2 - பூஜ்ய மாறி பேரழிவு தவிர்க்கப்பட்டது. AI ஆல் தயாரிக்கப்பட்ட கிளீனிங் ஸ்கிரிப்டில் rm -rf "$TARGET"/* இருந்தது, ஆனால் TARGET எங்காவது ஒதுக்கப்படவில்லை என்றால், அது காலியாகவே இருக்கும். பொறியியலாளராகப் படிக்கும்போதே இதை உணர்ந்தார்; set -u மற்றும் [ -n "$TARGET" ] || வெளியேறு 1 கட்டுப்பாடு சேர்க்கப்பட்டது. சோதனையின் போது மாறி பூஜ்யமாக இருந்தது மற்றும் ஸ்கிரிப்ட் பேரழிவிற்கு பதிலாக பாதுகாப்பாக நிறுத்தப்பட்டது.
வழக்கு 3 - உட்பொதிக்கப்பட்ட டோக்கன் கைப்பற்றப்பட்டது. வசதிக்காக, AI ஆனது TOKEN = "ghp_realtoken" வரியை API ஐக் கோரும் பைதான் ஸ்கிரிப்ட்டில் சேர்த்துள்ளது (உதாரணமாக). பொறியாளர் இதை அகற்றி os.environ["TOKEN"] மூலம் சுற்றுச்சூழல் மாறியில் இருந்து வாசிப்பதாக மாற்றி டோக்கனை ரத்து செய்து புதுப்பித்துள்ளார். ஸ்கிரிப்ட் Gitக்கு சென்றால், டோக்கன் பொதுவில் இருக்கும்.
நகலெடுக்கக்கூடிய நான்கு வார்ப்புருக்கள்
1) பாதுகாப்பான பாஷ் ஸ்கிரிப்ட்:
ஒரு பாஷ் ஸ்கிரிப்டை எழுதவும்: [பணி]. கட்டாய விதிகள்:- ஆரம்பத்தில் `set -euo pipefail`.- எங்கு நீக்கினாலும்/நகர்த்தினாலும் மாறி காலியாக இல்லை என்பதைச் சரிபார்க்கவும்.- `--dry-run` கொடி: இந்த பயன்முறையில் என்ன செய்ய வேண்டும் என்பதை எழுதவும் ஆனால் அதைச் செய்ய வேண்டாம்.- ரகசியத்தை உட்பொதிக்க வேண்டாம்; சுற்றுச்சூழல் மாறியிலிருந்து படிக்கவும். - ஒவ்வொரு அடியிலும் தகவல் பதிவை அச்சிடவும். ஸ்கிரிப்டை கருத்து தெரிவிக்கவும் மற்றும் மிகவும் ஆபத்தான வரியைக் குறிக்கவும்.
2) ஸ்கிரிப்ட் விளக்கம்/கட்டுப்பாடு:
பின்வரும் ஸ்கிரிப்ட் வரியை வரிவாரியாக விவரித்து பாதுகாப்பைச் சரிபார்க்கவும்: உட்பொதிக்கப்பட்ட ரகசியம், அழிவு கட்டளை (rm/Remove-Item/DROP), சரிபார்க்கப்படாத உள்ளீடு, பிழை கையாளுதல் இல்லாமை? ஒவ்வொரு அபாயத்தையும் முக்கியத்துவம் மற்றும் திருத்தத்தின் வரிசையில் எழுதுங்கள். ஸ்கிரிப்ட்: [CODE]
3) மொழி மொழிபெயர்ப்பு:
அந்த [SOURCE LANGUAGE] ஸ்கிரிப்டை [TARGET LANGUAGE] ஆக மொழிபெயர்க்கவும். நடத்தையை வினைச்சொல்லாக வைத்திருங்கள், இலக்கு மொழியின் idiomatic பிழை கையாளுதலைப் பயன்படுத்துங்கள், உட்பொதிக்கப்பட்ட இரகசியங்களைச் சூழல் மாறிக்கு நகர்த்தவும். வித்தியாசமாக நடந்துகொள்ளக்கூடிய குறிப்புகளைக் கவனியுங்கள். ஸ்கிரிப்ட்: [CODE]
4) திட்டமிடப்பட்ட பணி (கிரான்/திட்டமிட்ட பணி):
இந்த ஸ்கிரிப்டைப் பயன்படுத்தவும் [அதிர்வெண்: எ.கா. [ஒவ்வொரு இரவும் 02:00 மணிக்கு] இயங்கும் அட்டவணை வரையறையை ([cron / systemd டைமர் / Windows Task Scheduler]) எழுதவும். தோல்வியில் என்னை எப்படி எச்சரிப்பது (பதிவு/வெளியேறு குறியீடு/அறிவிப்பு) மற்றும் மேலெழுதுவதைத் தடுப்பது எப்படி என்பதைச் சேர்க்கவும்.
பலவீனமான வரியில் / வலுவான வரியில்
பலவீனமானது: "பழைய கோப்புகளை நீக்கும் ஸ்கிரிப்டை எழுதவும்."
முடிவு: ஒரு ஸ்கோப் இல்லாத, பாதுகாப்பற்ற, உலர்-ரன்லெஸ் ஆர்எம் ஸ்கிரிப்ட்; இது தவறான கோப்புறையில் இயங்கினால், அது மீளமுடியாமல் நீக்கப்படும்.
வலிமையானது: "/var/log/app இன் கீழ் 30 நாட்களுக்கும் மேலான .log கோப்புகளை நீக்க ஒரு பாஷ் ஸ்கிரிப்டை எழுதவும். set -euo pipefail ஐப் பயன்படுத்தவும், இலக்கு கோப்பகம் காலியாக இருந்தால் நிறுத்தவும், --dry-run உடன் எதை நீக்க வேண்டும் என்பதை முதலில் பட்டியலிடுங்கள், ஒவ்வொரு பரிவர்த்தனையையும் பதிவு செய்யவும், ரகசியத்தை உட்பொதிக்க வேண்டாம். மிகவும் ஆபத்தான வரியைக் குறிக்கவும்."
வித்தியாசம்: இரண்டாவது உரிமைகோரல் முழு நோக்கம், பாதுகாப்பு பாதுகாப்பு மற்றும் உலர்-ரன் எதிர்பார்ப்பு ஆகியவற்றை வழங்குகிறது; வெளியீட்டை பாதுகாப்பாக இயக்க முடியும்.
பொதுவான தவறுகள்
- ஸ்கிரிப்டைப் படிக்காமல் இயக்குவது. குறிப்பாக வரிசைகளை நீக்குதல்/நகர்த்தல் பேரழிவிற்கு வழிவகுக்கும்.
- வெற்று மாறிகளை சரிபார்க்கவில்லை. rm -rf "$X"/ மூலம் ரூட் கோப்பகத்தை நீக்கும் உன்னதமான பேரழிவு.
- `set -euo pipefail` / `-ErrorAction Stop` என்பதைத் தவிர்க்கவும். ஒரு படி சுடுகிறது, ஸ்கிரிப்ட் கண்மூடித்தனமாக தொடர்கிறது.
- ஸ்கிரிப்ட்டில் ரகசியத்தை உட்பொதித்தல். Gitக்கு தொடர்ந்து கசிவு.
- உலர்-ரன் இல்லாமல் அழிவு செயல்முறை. முதலில் "என்ன செய்ய வேண்டும் என்பதைக் காட்டு", பிறகு அதைச் செய்.
- தயாரிப்பில் முதல் முயற்சி. தனிமைப்படுத்தப்பட்ட சோதனை சூழல் இல்லாமல் இயங்குகிறது.
சுருக்கமாக
DevOps என்பது ஆட்டோமேஷன் கலை; மீண்டும் மீண்டும் வேலை பாஷ், பைதான் மற்றும் பவர்ஷெல் ஸ்கிரிப்ட்களுக்கு வழங்கப்பட்டுள்ளது. ஸ்கிரிப்ட்களை உருவாக்குதல், பிழைத்திருத்தம் செய்தல் மற்றும் மொழிகளை மொழிபெயர்ப்பதில் AI மிகவும் எளிது - ஆனால் பாதுகாப்பான ஸ்கிரிப்டில் செட் -euo பைப்ஃபெயில், பூஜ்ய மாறி சோதனை, உலர்-இயங்கு முறை, உட்பொதிக்கப்பட்ட இரகசியமின்மை மற்றும் பதிவு செய்தல் போன்ற பிழை பாதுகாப்புகள் இருக்க வேண்டும். ஒவ்வொரு ஸ்கிரிப்டையும், குறிப்பாக அழிவுகரமான கட்டளைகளைக் கொண்டவை, தனிமைப்படுத்தப்பட்ட சூழலில், முதலில் உலர்-இயக்கத்தில் படித்து சோதிப்பது உங்கள் பொறுப்பு.
விண்ணப்ப பணி
தொடர்ச்சியான பணியைத் தேர்ந்தெடுக்கவும் (பதிவு காப்பகப்படுத்தல், காப்புப்பிரதி, சுத்தம் செய்தல்). (1) "செக்யூர் பாஷ் ஸ்கிரிப்ட்" டெம்ப்ளேட்டுடன் பாதுகாக்கப்பட்ட ஸ்கிரிப்டை உருவாக்க AI ஐச் செய்யுங்கள். (2) "ஸ்கிரிப்ட் விளக்கம்/தணிக்கை" டெம்ப்ளேட்டின் பாதுகாப்பிற்காக அதே ஸ்கிரிப்டைச் சரிபார்த்து, AI கொடியிட்ட மிக ஆபத்தான வரியைக் கண்டறியவும். (3) சோதனைக் கோப்புறையில் மாதிரிக் கோப்புகளுடன் ஸ்கிரிப்டை இயக்குவதன் மூலம் அதன் நடத்தையைச் சரிபார்க்கவும், முதலில் --dry-run உடன்.
சரிபார்ப்பு பட்டியல்
- [ ] நான் விரும்பாத டாஸ்க், OS/ஷெல் மற்றும் செக்யூரிட்டி காவலர்களை எழுதினேன்.
- [ ] ஸ்கிரிப்ட்டில் set -euo pipefail / -ErrorAction Stop போன்ற நிறுத்தத்தில் பிழை உள்ளது.
- [ ] நீக்குதல்/நகர்த்துவதற்கு முன் வெற்று மாறி மற்றும் உள்ளீடு சரிபார்ப்பைச் சேர்த்துள்ளேன்.
- [ ] அழிவுகரமான செயல்பாடுகளுக்கு --ட்ரை-ரன்/உறுதிப்படுத்தல் பொறிமுறை உள்ளது.
- [ ] ஸ்கிரிப்ட்டில் எந்த ரகசியமும் பொதிந்திருக்கவில்லை; மதிப்புகள் சூழல் மாறி / வழக்கில் இருந்து வருகின்றன.
- [ ] நான் முதல் சோதனையை ஒரு தனிமைப்படுத்தப்பட்ட சோதனை சூழலில் உலர் ஓட்டத்துடன் செய்தேன்.