Үүнийг гурван асуулт шийднэ, гуравхан. Клиент дахин ачаалалтын дараа ч үлддэг холболтын бичлэгийг үйлдлийн системд үүсгэдэг үү? Өөрийн аргументын жагсаалтаас өөр газраас нууц авч чадах командын мөрийг санал болгодог уу? Түүний таних шаардлага хүнийг хөтчийн асуултад хариулахыг албаддаг уу? Энэ дарааллаар хариулбал сонголт амтны асуудал байхаа болино, учир нь товлосон ажил гурван хариултын хамгийн сул нь зөвшөөрсөн хэмжээнд л толгойгүй байж чадна.

Клиентийг скриптлэгдэх гурван давхаргад тааруул

Үйлдлийн системийн уугуул профайл, нийлүүлэгчийн 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

Эдгээр интерфейс зөвхөн үйлдлийн системийн эзэмшлийн профайлыг мэддэг тул дурын гуравдагч талын клиентийг удирдаж чадахгүй. Профайл байхгүй бол нэг удаа үүсгээд, дараагийн ажиллагаа бүрт дахин үүсгэхийн оронд скриптэд шалгуулах хэрэгтэй. Скриптийг идемпотент болго: одоогийн төлвийг уншиж, зөвхөн салсан үед холбогдож, дараа нь ажилд үнэхээр хэрэгтэй хувийн нэрийг шалга.

Хоёр дахь зам: нийлүүлэгч командын мөр өгдөг

Зарим клиент боох боломжтой хэмжээний командын мөр гаргадаг: 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 ачаа эсвэл тохиргооны профайлыг илүүд үз, тэнд платформ нэвтрэх мэдээллийн амьдралын мөчлөгийг эзэмшдэг, мөн ингэж удирдаж болохгүй клиентүүдэд скрипт үлдээ.

Гарах код болон анх бүтэлгүйтсэн нөөцийг бүртгэ, скрипт ажилласан гэдэг баримтыг биш. Яг тэр нэг мөр төлөвлөгчийн анхааруулгыг таван минутын оношлогоо болгодог.

Холбоотой нийтлэлүүд