Egység 2 / 11

Automatizálási szkriptek: Bash, PowerShell és Python biztonságos generálása

Nyereség:

  • Lehetőség Bash, PowerShell és Python automatizálási szkriptek előállítására egyértelmű megkötésekkel és biztonsági korlátok mesterséges intelligenciával
  • Lehetőség olyan elvek hozzáadására, mint az idempotencia, a szárazonfutás, a hibakezelés és a visszaállítás minden szkripthez, valamint a „generálás, keményítés, ellenőrzés” ciklus alkalmazása.
  • Képes megérteni, hogy az elkészített szkript végrehajtása nem jelenti azt, hogy biztonságos, és elsajátítani a felelősségvállalás szokását a destruktív sorok olvasásával és tesztelésével.

Automatizálási szkriptek: Bash, PowerShell és Python biztonságos generálása mesterséges intelligencia segítségével

A rendszeradminisztrátor legrosszabb ellensége az ismétlődő kézi munka: minden géphez csatlakozni és a naplókat megtisztítani, húsz szerveren ugyanazt a felhasználót megnyitni, minden reggel ugyanazt az állapotfelmérést futtatni. Ez az ismétlés időre és emberi tévedésre egyaránt alkalmas. Az automatizálási szkript egy kis program, amely ezeket az iterációkat delegálja a számítógépre – Linux világban leggyakrabban Bash-ban (shell parancsnyelv), Windows-ban PowerShell-ben (a Microsoft automatizálási rendszerhéjában), platformfüggetlen munkához pedig Pythonban. Az AI hihetetlenül gyorsan elkészíti, elmagyarázza és javítja ezeknek a szkripteknek az első vázlatát. De a szkript nem szöveg, hanem a rendszeredben dolgozó erő; Az Excel-képletekkel ellentétben, ha hibás, törli a fájlt, leállítja a szolgáltatást és megszakítja a hozzáférést. Ezért az egység ígérete: az AI megírja a forgatókönyvet, Ön elolvassa, teszteli és felelősséget vállalva futtatja.

Ebben az egységben megtanulhatja, hogyan készíthet biztonságos, olvasható és visszakereshető szkripteket mesterséges intelligencia segítségével; Életmentő elvek, mint például az idempotencia (ugyanannak a szkriptnek a kétszeri futtatása nem okoz kárt) és a szárazon futás; és megtanulja az ellenőrzéseket, amelyeken a szkriptnek át kell mennie, mielőtt élesbe bocsátja.

Miért olyan erős a szkriptelés az AI-val?

Még egy tapasztalt rendszergazda sem tudja fejből a Bash ciklus pontos szintaxisát, a PowerShell-parancsmagok (parancsok) vagy a Python try/kivéve blokk paramétereit. A mesterséges intelligencia azonnal pótolja ezt a hiányt: egyszerű török ​​nyelven magyarázza el a szándékot, és egy működő vázlatot készít. Ezenkívül megadhat egy meglévő szkriptet az AI-nak, és azt mondhatja, hogy "magyarázza ezt", "adja hozzá a hibakezelést", "tegye olvashatóbbá". Ez lerövidíti a tanulási görbét, és felgyorsítja a junior csapat tagjait.

De a hatalommal felelősség is jár. Legtöbbször egy mesterséges intelligencia által generált szkript helyesen írja a "boldog utat" (ha minden rendben van); de kihagyhat szélső eseteket (hiányzik a fájl, megtelt a lemez, leállt a hálózat), vagy veszélyes feltételezéseket tehet. Tehát gondoljon a szkriptek létrehozására az AI-val három szakaszban: generálás, keményítés, ellenőrzés.

Lépésről lépésre: biztonságos szkript generálás

  1. Írja le világosan a szándékot és a kényszert. Melyik operációs rendszer, melyik shell verzió, milyen fájl elérési út, milyen jogok? Például "Ubuntu 22.04, Bash 5, sudo nem root, csak az /opt/app/logs alatt fut". A kétértelmű kereslet veszélyes feltételezéseket szül.
  2. Kérjen biztonsági korlátokat. Követelje meg a szkriptet, hogy „stop on error” (álljon meghibásodás esetén az -euo pipefail parancsot Bashban), kérje a destruktív műveletek megerősítését, a művelet előtti biztonsági mentést és a szárazonfutási módot. Ezek a védőkorlátok rögzítik az élállapotokat, amelyeket az AI megkerül.
  3. Idempotens írj. A parancsfájl másodszori futtatásakor nem okozhat hibát vagy sérülést. Alakítsd ki a "kihagyás, ha a felhasználó már létezik" logikáját, "hozd létre a könyvtárat, ha nem létezik, ne érintsd meg, ha létezik". Ez lehetővé teszi, hogy az automatika újra és újra biztonságosan működjön.
  4. Olvassa el és értse meg. Olvasson el minden előállított sort. Kérje meg az AI-t, hogy külön jelölje meg a pusztító parancsokat (rm, Remove-Item, DROP).
  5. Teszt szárazon futással. Először futtassa "megmondja, mit kell tennie" módban a tényleges műveletek helyett. Ha a kimenet megfelel a vártnak, váltson valós módba – és először a tesztgépen.
  6. Készítse elő a visszatérését. A szkript készít biztonsági másolatot? Tudja, hogyan kell visszaállítani a biztonsági másolatot? Létezik naplózás, később látod mit csinál?
Tipp: Minden destruktor szkript tartalmazzon egy DRY_RUN=true változót és egy --apply jelzőt. Az alapértelmezett viselkedés az, hogy megírja, mi fog történni anélkül, hogy bármit is törölne; A tényleges törlés csak akkor működjön, ha az --apply kifejezetten meg van adva. Ez az egyetlen szokás megakadályozza a karrierig tartó katasztrófákat.

három mini tok

1. eset – Idempotencia mentve 3 óra. Egy rendszergazda írt egy parancsfájlt, amely ugyanazt a megfigyelő ügynököt telepítette 25 kiszolgálóra. Az első verzió nem volt idempotens: a második futtatáskor megtörte a konfigurációt, ha az ügynök már telepítve volt. A mérnök az AI-val kiegészítette az "ellenőrizd, hogy telepítve van-e, hagyd ki, ha van" logikát. A következő karbantartási ablakban a szkript véletlenül kétszer is elindult, de nem okozott kárt. Az Idempotency szükségtelenné tette a 25 szerver helyreállítását.

2. eset – Szárazfutással elmentett egy gyökérkönyvtárat. Az egyik csapat kapott egy Bash-szkriptet, amely megtisztította a régi biztonsági másolatokat. Ha a változó üres volt, az elérési út / lett / a /backups/ helyett – ez klasszikus veszély. A mérnök először DRY_RUN módban futtatta, lefagyott, amikor egy rm -rf / sorhoz hasonló sort látott a kimenetben, és hozzáadott egy változó ellenőrzést (: "${BACKUP_DIR:? cannot be empty}"). A szárazon futás hibát észlelt, amely az egész lemezt törölte volna, mielőtt gyártásba kerülne.

3. eset – A hibakezelés megakadályozta, hogy egyik éjjel felébredjen. Egy PowerShell-szkript archiválta a naplókat, amikor a lemez megtelt. Az első verzió csendben meghiúsulna, ha a hálózati megosztás elérhetetlen lenne, és továbbra is feltölti a lemezt. A „Minden lépésnél ellenőrizni kell a sikert, ha sikertelen, értesítsen e-mailt, és hagyja abba” hozzáadásra került az AI. Egy hét múlva a poszt eltört; A szkript leállt és figyelmeztetett, nincs tele a lemez, hajnali 3-kor senki sem ébredt fel.

Négy másolható sablon

1) Biztonságos Bash szkript generálás:

Az Ön feladata: vezető Linux automatizálási mérnök. Írjon egy szkriptet az Ubuntu 22.04 / Bash 5 számára. Cél: [cél]. Szabályok:- Kezdje a "set -euo pipefail"-val.- Érvényesítse a szükséges változókat a ": ${VAR:?}" paraméterrel.- Végezzen destruktív műveleteket az alapértelmezett DRY_RUN=true értékkel; A valódi alkalmazás csak az --apply kapcsolóval futjon. - Minden lépést naplózzon az stdoutba, és hagyja abba egy értelmes hibaüzenettel. - Idempotenssé kell tenni (hogy a második nekifutásnál ne okozzon sérülést). Ezután: jelölje meg külön az esetlegesen romboló sorokat, és írjon 3 esetet, amit le kell tesztelnem a gyártás előtt.

2) A meglévő szkript keményítése:

Készítse elő a következő szkriptet: (1) adjon hozzá hibakezelést és naplózást, (2) tegye idempotenssé, (3) tegyen destruktív parancsokat a száraz futtatás mögé, (4) bontsa ki a változó keményen kódolt elérési útjait és titkait. Röviden írja le az egyes sorokat, amelyeket megváltoztatott, és írja le, hogy miért. Forgatókönyv: [script]

3) PowerShell biztonságos automatizálás:

Az Ön szerepköre: Windows automatizálási szakértő. Írjon egy PowerShell 5.1-kompatibilis szkriptet. Cél: [cél]. Szabályok: - Kezdje a következővel: "$ErrorActionPreference = 'Stop'". - Adja hozzá a -WhatIf támogatást a destructor parancsmagokhoz (alapértelmezett WhatIf). - Minden műveletet a try/catch-el, naplózási hiba naplózza.- Hitelesítési adatok hardcoding; Használjon paramétert vagy biztonságos bemenetet. Jelölje meg a romboló vonalakat, és írjon visszavonási lépéseket.

4) Cron/schedule kifejezés dekódolása és ellenőrzése:

Magyarázza el a következő cron utasítást tiszta törökül, és írja be a következő 3 futásidőt: [kifejezés] Továbbá, ha a célom "[cél]", akkor ez az állítás helyes, vagy van valami javítás, amit javasol? Vegye figyelembe az időtartam hatását is.

Gyenge felszólítás / Erős felszólítás

Gyenge felszólítás:

Írj nekem egy szkriptet, ami megtisztítja a naplót.

Ez a felszólítás veszélyes: nem világos, melyik operációs rendszer, melyik könyvtár, melyik korhatár, melyik biztonsági védőkorlát. A mesterséges intelligencia egysoros, pusztító és ellenőrizhetetlen rm-t tud szállítani.

Erőteljes felszólítás:

Az Ön feladata: vezető Linux automatizálási mérnök. Írjon egy naplótisztító szkriptet az Ubuntu 22.04 / Bash számára. Csak a 30 napnál régebbi .log fájlokat törölje az /opt/app/logs alatt. Szabályok: set -euo pipefail; A BACKUP_DIR és LOG_DIR változók érvényesítése (leállítás, ha üres); naplófájlok listája törlés előtt; Legyen DRY_RUN=true az alapértelmezett, tényleges törlés csak az --apply használatával; Legyen idempotens. Jelölje meg a destruktív vonalakat, és írjon 3 forgatókönyvet, amelyet tesztelnem kell.

jellemzője

Gyenge/gyors forgatókönyv

edzett forgatókönyv

Hibakezelés

Nem, csendes kudarc

set -euo pipefail, try/catch

pusztító cselekvés

Közvetlenül működik

Száraz futás + nyitott ellenőrző jelző

Indítsa újra

kárt okozhat

Idempotens, biztonságos

titkos kezelés

keményen kódolt

Változó/rejtett bemenet

visszavonja

Egyik sem

Biztonsági mentés + visszaállítás lépés

Gyakori hibák

  • Pusztító szkript futtatása szárazon futás nélkül. Ha nem látja az rm, Remove-Item, DROP first parancsot tartalmazó szkriptet száraz módban, az lemezbe kerül.
  • A null változó ellenőrzésének kihagyása. Egy üres elérési útváltozó a /backups/ helyett /; : Mindenképpen a "${VAR:?}" segítségével ellenőrizze.
  • Az Idempotencia elfelejtése. A szkript kétszeri futtatáskor megszakad, így az automatizálás megbízhatatlanná válik.
  • Kemény kódolási titkok. A jelszó és a kulcs beírása a szkriptbe szivárgást jelent, amikor megosztja a szkriptet.
  • Tesztelés a gyártásban. Az első nekifutás a produkcióban azt jelenti, hogy a színpadon próbálunk; először tesztelje a gépet.
Figyelem: Ne fogadjon el egy mesterséges intelligencia által adott szkriptet csak azért, mert "működött, ez azt jelenti, hogy helyes". Csak azért, mert működik, nem jelenti azt, hogy nem romboló. A szkript futhat a boldog úton, és törölheti az adatokat az éles állapotban; Az igazi próbatételt az éles esetek jelentik.

Összefoglalva

Az automatizálási parancsfájlok kiküszöbölik az ismétlődést és csökkentik az emberi hibákat; Az AI hihetetlenül gyorsan generálja, magyarázza és keményíti ezeket a szkripteket. De a szkript egy működő erő: ha rossz, akkor törli, leállítja, megszakítja. Tehát állítsa be a „gyártás, keményítés, ellenőrzés” ciklust. Tartalmazza a hibakezelést, az idempotenciát, a száraz futtatást és a tartalékot minden destruktív szkriptben. Bontsa ki a változó titkait, végezze el az első futtatást a tesztgépen. AI script ír; Az Ön feladata, hogy elolvassa, tesztelje, és felelősséget vállaljon a működéséért.

Pályázati feladat

Válasszon egy feladatot, amelyet manuálisan ismétel meg a munkában (pl. naplótisztítás, felhasználói megnyitás, állapotfelmérés). Kérjen vázlatot az AI-tól a fenti „Secure Bash script” vagy „PowerShell biztonságos automatizálás” sablonnal. Olvassa el soronként a generált szkriptet, és jelölje meg a destruktív sorokat. Futtassa szárazon üzemben először egy tesztgépen, és hasonlítsa össze a kimenetet az elvárásaival. Ezután adja vissza a szkriptet az AI-nak, és finomítsa a "harden" sablonnal, és vegye figyelembe a két verzió közötti 5 különbséget.

ellenőrző lista

  • [ ] Felvettem a promptba korlátozásokat, például operációs rendszert, shell verziót, elérési utakat és jogokat?
  • [ ] Hibatűrő a szkript a set -euo pipefail / $ErrorActionPreference='Stop' beállítással?
  • [ ] A destruktív műveletek a szárazonfutás/-WhatIf mögött állnak, és kifejezett ellenőrző jelzőt igényelnek?
  • [ ] Idempotens a szkript (biztonságos a második futtatásra)?
  • [ ] Kibontottam a titkokat változó/titkos bemenetre ahelyett, hogy keményen kódoltam volna őket?
  • [ ] Megcsináltam az első futtatást a tesztgépen, és elkészítettem a visszatérési tervet?