Мұны үш сұрақ шешеді, тек үш сұрақ. Клиент қайта жүктеуден кейін де сақталатын қосылым жазбасын операциялық жүйеде жасай ма? Ол құпияны өз аргументтер тізімінен басқа жерден ала алатын пәрмен жолын ұсына ма? Оның сәйкестік талабы адамды браузер сұранысына жауап беруге мәжбүрлей ме? Осы ретпен жауап берсеңіз, таңдау талғам мәселесі болудан қалады, өйткені жоспарланған жұмыс үш жауаптың ең әлсізі рұқсат еткен дәрежеде ғана бассыз бола алады.

Клиентті скрипттелетін үш қабатқа сәйкестендіріңіз

Жергілікті OS профилі, өндіруші CLI-і, тек GUI-і бар клиент және браузерлік SSO-лы клиент төрт түрлі тәсілді талап етеді. Алғашқы екеуі қадағалаусыз қайта жүктеуге төтеп береді, ал қадағалаусыз қайта жүктеу бүкіл мәселенің мәні. Қалған екеуі скрипттен бұрын дизайн шешімін талап етеді.

What the client exposesWhat to scriptWhat still bites
OS-native connection entryrasdial, scutil --nc, nmcliTunnel is up before DNS and routes settle
Vendor CLI reading stdinCLI wrapped by the scheduler, secret from the credential storePrompt text changes between releases
GUI onlyPinned version plus a state assertionLocale and DPI break the click targets

Бірінші жол: профиль әлдеқашан операциялық жүйеге тиесілі

Бұл ең арзан жол және көпшілік назардан тыс қалдыратын жол. Windows-та rasdial "Office" қосылады, ал rasdial "Office" /disconnect оны жабады; rasphone -d "Office" сол жазбаны теру интерфейсі арқылы басқарады. macOS scutil --nc list арқылы сақталған қызметтерді тізімдеп, біреуін scutil --nc start арқылы бастайды. Linux жұмысты NetworkManager-ге береді.

rasdial "Office" user *
scutil --nc start "Office"
nmcli connection up id Office
nmcli -t -f GENERAL.STATE connection show Office

Бұл интерфейстер тек OS-ке тиесілі профильдерді біледі, сондықтан кез келген үшінші тарап клиентін басқара алмайды. Профиль жоқ болса, оны бір рет жасап, әр жүгірісте қайта жасаудың орнына скриптке оны тексеруге мүмкіндік беріңіз. Скриптті идемпотентті етіңіз: ағымдағы күйді оқыңыз, тек ажыратылған кезде қосылыңыз, содан кейін жұмысқа шынымен қажет жеке атауды тексеріңіз.

Екінші жол: өндіруші пәрмен жолын ұсынады

Кейбір клиенттер орауға жететіндей пәрмен жолын ашады: Cisco AnyConnect көп жылдар бойы тек қосылуға арналған көмекшісін ұсынып келеді, ал OpenConnect бір бинардан AnyConnect, GlobalProtect және Pulse хаттамаларын сөйлейді. Маңызды талап жалаушалар тізімі емес, құпияның қайдан келетіні, өйткені аргументтер тізіміндегі құпиясөзді процестерді тізімдей алатын кез келген адам оқи алады.

printf '%s\n' "$VPN_PASS" | openconnect --protocol=anyconnect \
  --user "$VPN_USER" --passwd-on-stdin vpn.example.com

FortiClient пен кейбір GlobalProtect құрастырылымдарында мүлдем қолдау көрсетілетін CLI жоқ, ал қауымдастық клиенті немесе өндіруші лицензиялаған балама бұл сатып алу шешімі, айналып өту емес. CI-де қызмет тіркелгісіне дәл сол бинарға құқық беріңіз, shell-ге емес, сонда енгізілген аргумент root пәрменіне айнала алмайды.

Үшінші жол: GUI автоматтандыру және ол неге соңында

Ресми клиентте интерфейс болмаса, скрипттер терезе хабарламалары немесе SendKeys арқылы түймелерді басады. Бұл нұсқа мен тілге осал, жартылай қосылған сессия қалдыруы мүмкін және диалог қате тілде пайда болса, үнсіз сәтсіздікке ұшырайды. Осы жолды таңдасаңыз, клиент нұсқасын бекітіңіз, кейін пайда болған қосылым күйін растаңыз және скрипттің қасында құжатталған қолмен сақтық жоспарын ұстаңыз.

Дәл осындай сақтық клиентті процесін өлтіру арқылы күштеп ажыратуға да қатысты. Туннель процестен ұзақ өмір сүруі мүмкін немесе қадағалаушы оны қайта іске қосуы мүмкін, сондықтан өлтір-және-қайта-қос та сенімді қалпына келтіру емес.

Туннель көтерілгеннен кейін не бұзылады

Сәтті терім тек аутентификацияны дәлелдейді, басқа ештеңені. Жұмыс бар болуының себебі болған ресурсты өз хаттамасымен және қысқа уақыт шегімен тексеріңіз, және сәтсіздік хабарламасында кезеңді атаңыз. Жұмыс үстеліңізде көрінетін профильдер, сертификаттар және сақталған тіркелгі деректері қызмет сессиясы үшін көрінбеуі мүмкін, сондықтан оған сенбес бұрын жұмысты жоспарлаушының өз тіркелгісімен бір рет іске қосыңыз.

Қайталап көрулерді шектеңіз. Қабылданбаған тіркелгі деректерін қайталайтын цикл тіркелгілерді құлыптайды, ал MFA сұранысына бассыз жұмыс тіркеу дизайнынсыз жауап бере алмайды; браузерлік SSO ағынына қарсы скрипттік қайталаулар тек әрекеттерді жағады. Флот үшін MDM арқылы жеткізілетін VPN жүктемесін немесе конфигурация профилін қалаңыз, онда платформа тіркелгі деректерінің өмірлік цикліне ие, және осылай басқаруға келмейтін клиенттер үшін скрипттерді сақтаңыз.

Шығу кодын және бірінші сәтсіз ресурсты жазыңыз, скрипттің жүгіргені туралы фактіні емес. Дәл сол бір жол жоспарлаушы ескертуін бес минуттық диагностикаға айналдырады.

Қатысты мақалалар