Jūsu skripts palaiž VPN, bet to nesagatavo
Palaišanas komandai nepieciešams savienojums, kas jau pastāv un ir apstiprināts. Atdaliet sagatavošanu no sesijas vadības, citādi skripts strādās tikai jūsu Mac.
Jūs rakstāt skriptu, kas izpilda scutil --nc start ar savienojuma nosaukumu, tas strādā jūsu Mac un neizdodas katrā no jauna instalētā biroja datorā. Skripts nav salauzts. Tiek prasīts kaut kas tāds, ko tas nekad nav varējis: esoša savienojuma palaišana nav tā pati darbība kā jauna izveide.
Sagatavošana un sesijas vadība ir divi darbi ar diviem īpašniekiem, un darbplūsma, kas pieņem pretējo, izturēs katru testu tajā datorā, kur tā tika rakstīta.
Ar ko palaišanas komanda patiešām runā
Sesijas vadības komanda vēršas pie konfigurācijas, kas jau pastāv un jau ir apstiprināta. Tā lūdz sistēmu pacelt minēto savienojumu, izmantojot iepriekš saglabātos servera iestatījumus, identitātes atsauces un politiku. Ja tie nekad netika instalēti, nav ko palaist.
Tāpēc kļūme parādās jaunā aparatūrā, nevis administratora portatīvajā datorā. Portatīvais tika sagatavots pirms mēnešiem cilvēkam, kurš to kopš tā laika ir aizmirsis. Iedomājieties palaišanas komandu kā durvju zvanu, kuru kāds pagājušajā ceturksnī savienoja ar vadiem. Tā nospiešana nav tas pats, kas vadu ievilkšana.
Trīs VPN konfigurācijas īpašnieki
Organizācijas pārvaldīts profils nāk no ierīču pārvaldības. Profils nes servera adreses, autentifikācijas kārtību un politiku, ko organizācija pieprasa, un VPN administrators ir cilvēks, kas tos piegādā. Skriptam nevajadzētu rekonstruēt šos iestatījumus no sarakstā atrastā parādīšanas nosaukuma.
Vietējā personiskā VPN konfigurācija tiek veidota ar Apple Network Extension API, kas aptver iebūvētos IPsec un IKEv2 protokolus. Tā ir lietojumprogrammas saskarne ar saglabāšanas soli un lietotāja apstiprinājumu, nevis shell komanda, kas klusi izveido jebkuru tuneļa veidu, ko piegādā piegādātājs.
Trešās puses klients ir trešais gadījums ar savu importa formātu, savu pārvaldības rīku un bieži savu privileģēto palīgu. Tā sesija pieder attiecīgā piegādātāja procesam. Līdzīga nosaukuma sistēmas pakalpojuma atrašana nav pierādījums, ka sistēmas komanda kontrolē tuneli, un šāda pieņēmuma dēļ rodas skripti, kas šķietami strādā, līdz piegādātājs atjaunina klientu.
Vietējai sagatavošanai ir saglabāšana un apstiprinājums
Apple modelis ir ielādēt, mainīt, saglabāt. Lietojumprogramma ielādē esošos iestatījumus pirms savas pirmās saglabāšanas pēc palaišanas, maina konfigurāciju un pēc tam to saglabā. Saglabāšana ziņo par kļūdu, kad tā nevar noturēties, un šī rezultāta ignorēšana sagatavošanas kļūmi pārvērš savienojuma kļūmē trīs soļus vēlāk.
Pirmā saglabāšana arī pieprasa, lai lietotājs apstiprinātu lietojumprogrammu. Tā ir apzināta drošības robeža, un tas nozīmē, ka pirmā palaišana jaunā Mac ir interaktīva, lai gan katru vēlāko savienošanu un atvienošanu var automatizēt. Plānojiet pirmo palaišanu kā cilvēka uzdevumu ar klātesošu cilvēku. Automatizējiet otro palaišanu un turpmākās, un ierakstiet to runbookā, lai neviens nesolītu neiespējamo. Izvietošanas plāns, kas sola pilnīgi bez uzraudzības pirmo palaišanu, sola kaut ko tādu, ko platforma nepiedāvā.
Apple arī iesaka pirms paļaušanās uz API pārbaudīt servera saderību ar konfigurācijas profilu. Veicot šo pārbaudi vispirms, tiek atdalīts «serveris nepieņems šo klientu» no «klients nekad nav saglabājis iestatījumus», kas ir dažādas biļetes dažādām komandām.
Ko drīkst pieņemt atkārtojama palaišanas komanda
Pēc sagatavošanas skripts var droši mērķēt uz esošo savienojumu caur tā īpašnieka saskarni. Dodiet tam savienojuma stabilo identitāti un vēlamo darbību, un neko citu. Tam nevajadzētu lasīt minētu iestatījumu ceļu, un tam nevajadzētu pieņemt, ka izvēlnē redzamais nosaukums ir unikāls visā sistēmā.
Vietējiem savienojumiem nosaukts sesijas pieprasījums, piemēram, scutil --nc start, ir vadības darbība. Tas neinstalē servera iestatījumus, neimportē akreditācijas datus un neveic pirmās saglabāšanas autorizāciju. Uztveriet to kā ķēdes pēdējo soli, nekad kā visu ķēdi.
Turiet noslēpumus ārpus komandrindas argumentiem un ārpus parastās diagnostikas izvades. Kādu identitātes mehānismu vien izvēlējās izvietošana, tieši uz to palaišanas komandai jāpaļaujas, un shell vēsturē ielīmēta parole ir atradums jebkurā pārskatā.
Divi pieņemšanas pārbaudījumi
Pirmais pārbaudījums ir sagatavošana: paņemiet no jauna instalētu Mac un pierādiet, ka konfigurācija pastāv, pieder pareizajam pārvaldītājam un ir pilnībā apstiprināta. Dariet to pirms savienojamības testēšanas, jo savienojuma tests nesagatavotā datorā neko nepierāda par skriptu.
Otrais pārbaudījums ir sesija: pievienojieties, sasniedziet atļauto resursu un tīri atvienojieties. Tagad katrai kļūmei ir īpašnieks, un tā ir praktiskā priekšrocība, atdalot divus darbus. Trūkstošs profils ir piegādes problēma, saglabāšanas kļūda ir apstiprināšanas problēma, noraidīta pieteikšanās ir autentifikācijas problēma, un taimauts pēc veiksmīgas palaišanas ir sesijas slānis. Neviens no tiem nav «skripts ir salauzts».