Jūsų scenarijus paleidžia VPN, bet jo neparuošia
Paleidimo komandai reikia jungties, kuri jau egzistuoja ir yra patvirtinta. Atskirkite paruošimą nuo sesijos valdymo, kitaip scenarijus veiks tik jūsų Mac.
Rašote scenarijų, kuris vykdo scutil --nc start su jungties pavadinimu, jis veikia jūsų Mac ir nepavyksta kiekviename naujai įdiegtame biuro kompiuteryje. Scenarijus nesugadintas. Jo prašoma to, ko jis niekada negalėjo: esamos jungties paleidimas nėra ta pati operacija kaip naujos sukūrimas.
Paruošimas ir sesijos valdymas yra du darbai su dviem savininkais, o darbo eiga, kuri mano priešingai, praeis visus testus tame kompiuteryje, kuriame buvo parašyta.
Su kuo paleidimo komanda iš tikrųjų kalba
Sesijos valdymo komanda kreipiasi į konfigūraciją, kuri jau egzistuoja ir jau patvirtinta. Ji prašo sistemos pakelti tą pavadintą jungtį, naudodama anksčiau išsaugotus serverio nustatymus, tapatybės nuorodas ir politiką. Jei jie niekada nebuvo įdiegti, nėra ko paleisti.
Todėl gedimas atsiranda naujoje aparatinėje įrangoje, o ne administratoriaus nešiojamajame kompiuteryje. Nešiojamasis buvo paruoštas prieš mėnesius žmogaus, kuris nuo tada tai pamiršo. Įsivaizduokite paleidimo komandą kaip durų skambutį, kurį kažkas praėjusį ketvirtį sujungė laidais. Spausti jį nėra tas pats, kas tiesti laidus.
Trys VPN konfigūracijos savininkai
Organizacijos valdomas profilis ateina iš įrenginių valdymo. Profilis neša serverio adresus, autentifikavimo tvarką ir politiką, kurios reikalauja organizacija, o VPN administratorius yra žmogus, kuris juos pateikia. Scenarijus neturėtų atkurti tų nustatymų iš rodomo pavadinimo, kurį rado sąraše.
Vietinė asmeninė VPN konfigūracija sukuriama per Apple Network Extension API, kuris apima integruotus IPsec ir IKEv2 protokolus. Tai programos sąsaja su išsaugojimo žingsniu ir naudotojo patvirtinimu, o ne shell komanda, kuri tyliai sukuria bet kokį tiekėjo pateikiamą tunelio tipą.
Trečiosios šalies klientas yra trečias atvejis su savo importo formatu, savo valdymo įrankiu ir dažnai savo privilegijuotu pagalbininku. Jo sesija priklauso to tiekėjo procesui. Panašaus pavadinimo sistemos paslaugos radimas nėra įrodymas, kad sistemos komanda valdo tunelį, o taip manant sukuriami scenarijai, kurie atrodo veikiantys tol, kol tiekėjas atnaujina klientą.
Vietinis paruošimas turi išsaugojimą ir patvirtinimą
Apple modelis yra įkelti, pakeisti, išsaugoti. Programa įkelia esamus nustatymus prieš pirmąjį išsaugojimą po paleidimo, pakeičia konfigūraciją ir tada ją išsaugo. Išsaugojimas praneša apie klaidą, kai negali išlaikyti, o to rezultato ignoravimas paruošimo gedimą paverčia jungties gedimu po trijų žingsnių.
Pirmasis išsaugojimas taip pat reikalauja, kad naudotojas patvirtintų programą. Tai sąmoninga saugumo riba, ir ji reiškia, kad pirmas paleidimas naujame Mac yra interaktyvus, net jei kiekvieną vėlesnį prisijungimą ir atsijungimą galima automatizuoti. Pirmą paleidimą planuokite kaip žmogišką užduotį, kai žmogus yra šalia. Automatizuokite antrą paleidimą ir tolesnius, ir parašykite tai runbook'e, kad niekas nežadėtų neįmanomo. Diegimo planas, kuris žada visiškai be priežiūros pirmą paleidimą, žada tai, ko platforma nesiūlo.
Apple taip pat rekomenduoja prieš pasikliaujant API patikrinti serverio suderinamumą su konfigūracijos profiliu. Šį patikrinimą atlikus pirmiausia, atsiskiria «serveris nepriims šio kliento» nuo «klientas niekada neišsaugojo nustatymų», o tai skirtingi bilietai skirtingoms komandoms.
Ką gali daryti prielaidą pakartojama paleidimo komanda
Po paruošimo scenarijus gali saugiai nukreipti į esamą jungtį per jos savininko sąsają. Perduokite jai stabilų jungties tapatumą ir norimą veiksmą, ir nieko daugiau. Ji neturėtų skaityti spėjamo nustatymų kelio ir neturėtų manyti, kad meniu rodomas pavadinimas yra unikalus visoje sistemoje.
Vietinėms jungtims pavadinta sesijos užklausa, tokia kaip scutil --nc start, yra valdymo operacija. Ji neįdiegia serverio nustatymų, neimportuoja prisijungimo duomenų ir neatlieka pirmojo išsaugojimo autorizacijos. Traktuokite ją kaip paskutinį grandinės žingsnį, niekada kaip visą grandinę.
Laikykite paslaptis už komandinės eilutės argumentų ir už įprastos diagnostikos išvesties. Kokį tapatybės mechanizmą diegimas pasirinko, tuo ir turi pasikliauti paleidimo komanda, o į shell istoriją įklijuotas slaptažodis yra radinys bet kurioje peržiūroje.
Du priėmimo patikrinimai
Pirmasis patikrinimas yra paruošimas: paimkite naujai įdiegtą Mac ir įrodykite, kad konfigūracija egzistuoja, priklauso tinkamam valdytojui ir yra visiškai patvirtinta. Atlikite tai prieš testuodami jungiamumą, nes jungties testas neparuoštame kompiuteryje nieko neįrodo apie scenarijų.
Antrasis patikrinimas yra sesija: prisijunkite, pasiekite leistiną išteklių ir tvarkingai atsijunkite. Dabar kiekvienas gedimas turi savininką, ir tai yra praktinė nauda atskyrus du darbus. Trūkstamas profilis yra pristatymo problema, išsaugojimo klaida yra patvirtinimo problema, atmestas prisijungimas yra autentifikavimo problema, o laiko limitas po sėkmingo paleidimo yra sesijos sluoksnis. Nė vienas jų nėra «scenarijus sugadintas».