Napišete skripto, ki izvaja scutil --nc start z imenom povezave, deluje na vašem Macu in spodleti na vsakem na novo nameščenem računalniku v pisarni. Skripta ni pokvarjena. Od nje se zahteva nekaj, česar nikoli ni zmogla: zagon obstoječe povezave ni ista operacija kot ustvarjanje nove.

Priprava in upravljanje seje sta dve deli z dvema lastnikoma, in delovni tok, ki predpostavlja nasprotno, bo prestal vsak test na računalniku, kjer je bil napisan.

S čim se ukaz za zagon v resnici pogovarja

Ukaz za upravljanje seje nagovarja konfiguracijo, ki že obstaja in je že odobrena. Sistem prosi, naj dvigne to imenovano povezavo, z uporabo prej shranjenih nastavitev strežnika, sklicev na identiteto in pravilnika. Če teh nikoli niso namestili, ni ničesar za zagnati.

Zato se napaka pojavi na novi strojni opremi in ne na prenosnem računalniku skrbnika. Prenosnik je bil pripravljen pred meseci s strani osebe, ki je to medtem pozabila. Ukaz za zagon si predstavljajte kot hišni zvonec, do katerega je nekdo položil žice v prejšnjem četrtletju. Pritisk nanj ni isto kot polaganje napeljave.

Trije lastniki konfiguracije VPN

Profil, ki ga upravlja organizacija, prihaja iz upravljanja naprav. Profil nosi naslove strežnika, ureditev preverjanja pristnosti in pravilnik, ki ga organizacija zahteva, skrbnik VPN pa je oseba, ki jih zagotavlja. Skripta ne bi smela teh nastavitev obnoviti iz prikazanega imena, ki ga je našla na seznamu.

Izvorna osebna konfiguracija VPN se ustvari prek Network Extension API podjetja Apple, ki pokriva vgrajena protokola IPsec in IKEv2. To je vmesnik aplikacije s korakom shranjevanja in uporabniško odobritvijo, ne ukaz lupine, ki tiho ustvari katero koli vrsto predora, ki jo dobavi ponudnik.

Odjemalec tretje strani je tretji primer z lastno obliko uvoza, lastnim orodjem za upravljanje in pogosto lastnim privilegiranim pomočnikom. Njegova seja pripada procesu tega ponudnika. Iskanje sistemske storitve s podobnim imenom ni dokaz, da sistemski ukaz nadzira predor, in takšna predpostavka ustvari skripte, ki delujejo le, dokler ponudnik ne posodobi odjemalca.

Izvorna priprava ima shranjevanje in odobritev

Model podjetja Apple je naloži, spremeni, shrani. Aplikacija naloži obstoječe nastavitve pred prvim shranjevanjem po zagonu, spremeni konfiguracijo in jo nato shrani. Shranjevanje sporoči napako, ko ne more vztrajati, in neupoštevanje tega izida spremeni napako priprave v napako povezave tri korake pozneje.

Prvo shranjevanje zahteva tudi, da uporabnik odobri aplikacijo. To je namerna varnostna meja in pomeni, da je prvi zagon na novem Macu interaktiven, čeprav je mogoče vsako poznejše povezovanje in prekinitev avtomatizirati. Prvi zagon načrtujte kot človeško opravilo s prisotnim človekom. Avtomatizirajte drugi zagon in naprej ter to zapišite v runbook, da nihče ne obljublja nemogočega. Načrt uvajanja, ki obljublja popolnoma nenadzorovani prvi zagon, obljublja nekaj, česar platforma ne ponuja.

Apple priporoča tudi, da pred zanašanjem na API preverite združljivost strežnika s konfiguracijskim profilom. Če to preverjanje opravite prvo, loči «strežnik tega odjemalca ne bo sprejel» od «odjemalec nikoli ni shranil nastavitev», kar sta različni vozovnici za različne ekipe.

Kaj lahko ponovljiv ukaz za zagon predpostavi

Po pripravi se skripta lahko varno usmeri na obstoječo povezavo prek vmesnika njenega lastnika. Predajte ji stabilno identiteto povezave in želeno dejanje, in nič drugega. Ne bi smela brati ugibane poti nastavitev in ne bi smela predpostavljati, da je ime v meniju edinstveno v celotnem sistemu.

Za izvorne povezave je imenovana zahteva za sejo, kot je scutil --nc start, krmilna operacija. Ne namešča nastavitev strežnika, ne uvaža poverilnic in ne izvaja avtorizacije prvega shranjevanja. Obravnavajte jo kot zadnji korak verige, nikoli kot celotno verigo.

Skrivnosti hranite zunaj argumentov ukazne vrstice in zunaj običajnega diagnostičnega izhoda. Ne glede na to, kateri mehanizem identitete je izbralo uvajanje, nanj se mora opreti ukaz za zagon, in geslo, prilepljeno v zgodovino lupine, je ugotovitev v vsakem pregledu.

Dve preverjanji sprejema

Prvo preverjanje je priprava: vzemite na novo nameščen Mac in dokažite, da konfiguracija obstaja, da pripada pravemu upravljalcu in je v celoti odobrena. To storite pred preizkušanjem povezljivosti, ker preizkus povezave na nepripravljenem računalniku o skripti ničesar ne dokaže.

Drugo preverjanje je seja: povežite se, dosezite dovoljeni vir in se čisto prekinite. Vsaka napaka ima zdaj lastnika, in to je praktična korist ločitve obeh del. Manjkajoč profil je težava dostave, napaka pri shranjevanju je težava odobritve, zavrnjena prijava je težava preverjanja pristnosti, in prekoračitev časa po uspešnem zagonu je plast seje. Nobena od teh ni «skripta je pokvarjena».

Sorodni članki