Du skriver et script, der kører scutil --nc start med forbindelsens navn, det virker på din Mac, og det fejler på hver nyinstalleret maskine på kontoret. Scriptet er ikke i stykker. Det bliver bedt om noget, det aldrig har kunnet: at starte en eksisterende forbindelse er ikke den samme handling som at oprette en.

Klargøring og sessionsstyring er to opgaver med to ejere, og et workflow, der antager andet, består enhver test på den maskine, hvor det blev skrevet.

Hvad startkommandoen egentlig taler med

En sessionsstyringskommando henvender sig til en konfiguration, der allerede findes og allerede er godkendt. Den beder systemet om at rejse den navngivne forbindelse ved hjælp af serverindstillingerne, identitetsreferencerne og den politik, der blev gemt tidligere. Hvis de aldrig blev installeret, er der intet at starte.

Derfor viser fejlen sig på ny hardware og ikke på administratorens bærbare. Den bærbare blev klargjort for måneder siden af en person, der siden har glemt det. Tænk på startkommandoen som en dørklokke, nogen trak ledning til i sidste kvartal. At trykke på den er ikke det samme som at trække ledningen.

Tre ejere af en VPN-konfiguration

En organisationsstyret profil kommer fra enhedsstyring. Profilen bærer serveradresserne, godkendelsesordningen og den politik, organisationen kræver, og VPN-administratoren er den person, der leverer dem. Et script bør ikke genskabe disse indstillinger ud fra et visningsnavn, det fandt på en liste.

En indbygget personlig VPN-konfiguration oprettes via Apples Network Extension API, som dækker de indbyggede IPsec- og IKEv2-protokoller. Det er en applikationsgrænseflade med et gemmetrin og en brugergodkendelse, ikke en shell-kommando, der lydløst opretter enhver tunneltype, en leverandør udgiver.

En tredjepartsklient er et tredje tilfælde med sit eget importformat, sit eget styringsværktøj og ofte sin egen privilegerede hjælper. Dens session ejes af den leverandørs proces. At finde en systemtjeneste med et lignende navn er ikke bevis for, at en systemkommando styrer tunnelen, og antager man det, får man scripts, der ser ud til at virke, indtil leverandøren opdaterer klienten.

Indbygget klargøring har en gemning og en godkendelse

Apples model er indlæs, ændr, gem. Et program indlæser de eksisterende præferencer før dets første gemning efter start, ændrer konfigurationen og gemmer den derefter. Gemningen rapporterer en fejl, når den ikke kan fastholde, og ignorerer man det resultat, bliver en klargøringsfejl til en forbindelsesfejl tre trin senere.

Den første gemning kræver også, at brugeren godkender programmet. Det er en bevidst sikkerhedsgrænse, og det betyder, at første kørsel på en ny Mac er interaktiv, selv når hver senere forbindelse og afbrydelse kan automatiseres. Planlæg første kørsel som en menneskelig opgave med et menneske til stede. Automatiser anden kørsel og frem, og skriv det i runbooken, så ingen lover det umulige. En udrulningsplan, der lover en fuldt ubemandet første kørsel, lover noget, platformen ikke tilbyder.

Apple anbefaler også at validere serverkompatibilitet med en konfigurationsprofil, før man stoler på API'et. At lave den kontrol først adskiller «serveren accepterer ikke denne klient» fra «klienten gemte aldrig indstillingerne», som er forskellige sager for forskellige teams.

Hvad en gentagelig startkommando må antage

Efter klargøring kan et script sikkert målrette den eksisterende forbindelse via sin ejers grænseflade. Giv den forbindelsens stabile identitet plus den handling, du ønsker, og intet andet. Det bør ikke læse en gættet præference-sti, og det bør ikke antage, at navnet i menuen er unikt i hele systemet.

For indbyggede forbindelser er en navngivet sessionanmodning som scutil --nc start en styringshandling. Den installerer ikke serverindstillinger, importerer ikke legitimationsoplysninger og udfører ikke godkendelse af første gemning. Betragt den som det sidste led i en kæde, aldrig som hele kæden.

Hold hemmeligheder ude af kommandolinjeargumenter og ude af almindelige diagnostiske output. Uanset hvilken identitetsmekanisme udrulningen valgte, er det den, startkommandoen skal stole på, og en adgangskode indsat i en shell-historik er et fund i enhver gennemgang.

To acceptkontroller

Den første kontrol er klargøring: tag en nyinstalleret Mac og bevis, at konfigurationen findes, ejes af den rigtige administrator og er fuldt godkendt. Gør dette før test af forbindelsen, fordi en forbindelsestest på en uklargjort maskine intet beviser om scriptet.

Den anden kontrol er sessionen: forbind, nå den autoriserede ressource, og afbryd rent. Hver fejl har nu en ejer, og det er den praktiske fordel ved at dele de to opgaver. En manglende profil er et leveringsproblem, en gemmefejl er et godkendelsesproblem, et afvist login er et autentificeringsproblem, og en timeout efter en vellykket start er sessionslaget. Ingen af dem er «scriptet er i stykker».

Relaterede artikler