Ваша скрипта покреће VPN, али га не припрема
Команда за покретање захтева везу која већ постоји и одобрена је. Одвојите припрему од контроле сесије, иначе скрипта ради само на вашем Mac-у.
Пишете скрипту која извршава scutil --nc start са именом везе, ради на вашем Mac-у и пада на сваком новоинсталираном рачунару у канцеларији. Скрипта није покварена. Од ње се тражи нешто што никада није могла: покретање постојеће везе није иста операција као стварање нове.
Припрема и контрола сесије су два посла са два власника, а ток рада који претпоставља супротно проћи ће сваки тест на рачунару на коме је написан.
Са чиме команда за покретање заправо разговара
Команда за контролу сесије обраћа се конфигурацији која већ постоји и већ је одобрена. Тражи од система да подигне ту именовану везу, користећи раније сачувана подешавања сервера, референце идентитета и правила. Ако она никада нису инсталирана, нема шта да се покрене.
Зато се квар појављује на новом хардверу, а не на преносном рачунару администратора. Преносни рачунар је припремљен пре неколико месеци од особе која је то у међувремену заборавила. Замислите команду за покретање као звонце на вратима које је неко ожичио прошлог квартала. Притиснути га није исто што и поставити ожичење.
Три власника VPN конфигурације
Профил којим управља организација долази из управљања уређајима. Профил носи адресе сервера, начин провере аутентичности и правила која организација захтева, а VPN администратор је особа која их доставља. Скрипта не би смела да поново гради та подешавања из приказаног имена које је пронашла на списку.
Изворна лична VPN конфигурација ствара се преко Apple-овог Network Extension API-ја, који покрива уграђене протоколе IPsec и IKEv2. То је интерфејс апликације са кораком чувања и корисничком потврдом, а не наредба љуске која тихо ствара било коју врсту тунела коју добављач испоручи.
Клијент треће стране је трећи случај са сопственим форматом увоза, сопственим алатом за управљање и често сопственим привилегованим помоћником. Његову сесију поседује процес тог добављача. Проналажење системске услуге сличног имена није доказ да системска наредба контролише тунел, а таква претпоставка ствара скрипте које изгледају исправно док добављач не ажурира клијента.
Изворна припрема има чување и одобрење
Apple-ов модел је учитај, измени, сачувај. Апликација учитава постојећа подешавања пре првог чувања после покретања, мења конфигурацију и затим је чува. Чување пријављује грешку када не може да опстане, а игнорисање тог резултата претвара квар припреме у квар везе три корака касније.
Прво чување такође захтева да корисник одобри апликацију. То је намерна безбедносна граница и значи да је прво покретање на новом Mac-у интерактивно, чак и када се свако касније повезивање и одвајање може аутоматизовати. Планирајте прво покретање као људски задатак са присутном особом. Аутоматизујте друго покретање и даље, и напишите то у runbook-у како нико не би обећавао немогуће. План увођења који обећава потпуно ненадгледано прво покретање обећава нешто што платформа не нуди.
Apple такође препоручује да се пре ослањања на API провери компатибилност сервера конфигурационим профилом. Ако ту проверу урадите прво, одвајате «сервер неће прихватити овог клијента» од «клијент никада није сачувао подешавања», а то су различите карте за различите тимове.
Шта поновљива команда за покретање сме да претпостави
После припреме, скрипта може безбедно да циља постојећу везу кроз интерфејс њеног власника. Предајте јој стабилан идентитет везе плус радњу коју желите, и ништа друго. Не би смела да чита нагађани пут подешавања и не би смела да претпостави да је име приказано у менију јединствено у целом систему.
За изворне везе, именовани захтев за сесију као што је scutil --nc start је управљачка операција. Не инсталира подешавања сервера, не увози акредитиве и не спроводи ауторизацију првог чувања. Третирајте га као последњи корак ланца, никада као цео ланац.
Држите тајне изван аргумената командне линије и изван уобичајеног дијагностичког излаза. Који год механизам идентитета да је изабрало увођење, на њему команда за покретање треба да се заснива, а лозинка залепљена у историју љуске је налаз у сваком прегледу.
Две провере прихватања
Прва провера је припрема: узмите новоинсталирани Mac и докажите да конфигурација постоји, да је у власништву исправног управника и да је потпуно одобрена. Урадите то пре тестирања повезивости, јер тест везе на неприпремљеном рачунару не доказује ништа о скрипти.
Друга провера је сесија: повежите се, дођите до овлашћеног ресурса и чисто се одвојите. Сада сваки квар има власника, и то је практична корист од раздвајања два посла. Профил који недостаје је проблем испоруке, грешка при чувању је проблем одобрења, одбијена пријава је проблем аутентификације, а истек времена после успешног покретања је слој сесије. Ниједан од њих није «скрипта је покварена».