Ako čítať stav VPN a proxy v spravovanej pracovnej aplikácii
Ikona VPN na spravovanom telefóne dokazuje veľmi málo. Prečítaj aktívnu sieť, jej schopnosti a účinnú proxy, potom čítaj každú nulu takú, aká je.
Pracovná aplikácia zlyhá na spravovanom telefóne, niekto skontroluje prepínač VPN, vidí, že je zapnutý, a vyhlási cestu za zdravú. Tu sa končí väčšina týchto diagnostík a je to príliš skoro: aktívny VPN transport nehovorí, že cez neho išli požiadavky tejto aplikácie, a proxy, ktorá skutočne platí, môže byť pre jednotlivú aplikáciu alebo zvolená súborom PAC namiesto zobrazenia v Nastaveniach. Začni konkrétnou aplikáciou a profilom, ktoré ladíš, potom si prečítaj vlastný pohľad platformy na cestu.
Začni aplikáciou a jej profilom
Aplikácia s pracovným odznakom zvyčajne beží v samostatnom profile s vlastnou sieťovou politikou. Osobný prehliadač na tom istom telefóne pre ňu nie je dôkazom, rovnako ako výsledok z kolegovho zariadenia s inou správou. Predtým, než čokoľvek prečítaš, poznač si, do ktorého profilu aplikácia patrí.
V Nastaveniach vymenuj nakonfigurované položky VPN a poznač si, komu každá patrí. V zostaveniach Samsungu sa popisy ponuky medzi verziami posúvajú, preto opisuj položku, nie cestu k nej. Sivá alebo spravovaná položka patrí tomu, kto zariadenie spravuje; vypnutie ako experiment mení to, čo sa snažíš zmerať, a môže byť proti politike.
Prečítaj stav, ktorý hlási platforma
Vnútri existujúcej aktivity v tvojich podporných nástrojoch, na API 23 alebo novšom, sa stav siete dá prečítať bez odoslania bajtu. Volanie potrebuje bežné povolenie manifestu ACCESS_NETWORK_STATE na čítanie schopností.
val cm = getSystemService(android.net.ConnectivityManager::class.java) ?: return
val network = cm.activeNetwork
val caps = network?.let { cm.getNetworkCapabilities(it) }
val hasVpn = caps?.hasTransport(android.net.NetworkCapabilities.TRANSPORT_VPN)
val proxy = cm.defaultProxyKaždá hodnota odpovedá na úzku otázku. Aktívna sieť je predvolená sieť volajúceho procesu v danom okamihu. Kontrola schopností hovorí, či je táto predvolená sieť podložená VPN. Volanie proxy hlási účinnú predvolenú HTTP proxy a vrátený objekt môže opisovať buď statickú proxy, alebo skript PAC.
Ak potrebuješ pohľad po jednotlivých sieťach namiesto predvoleného, prečítaj vlastnosti pripojenia tej istej siete a porovnaj s cm.getLinkProperties(network)?.httpProxy. Proxy nainštalovaná správou zariadenia sa objaví vo volaní predvolenej proxy a nie vo vlastnostiach pripojenia, čo je rýchly spôsob, ako odlíšiť proxy danú politikou od tej, ktorú pridelila sieť.
Výstup uchovaj vo svojom podpornom kanáli, nie vo verejnej správe. Názvy hostiteľov proxy, adresy PAC a interné prípony prezrádzajú, ako tvoja organizácia smeruje prevádzku, a nič z toho nie je potrebné na opis zlyhania.
Vykladaj každé pole úzko
Nulová sieť alebo nulový objekt schopností znamená, že stav siete volajúceho nebol dostupný alebo sa počas čítania zmenil. Neznamená to, že VPN nie je. Ber to ako neznáme a prečítaj znova po tom, čo sa aplikácia dostala do popredia, nie ako negatívny výsledok.
VPN transport je najslabší z pozitív. Každá aplikácia, ktorá drží VpnService, nejaký vytvorí, vrátane lokálnej filtračnej aplikácie, ktorá tvoj prenos nikdy nikam neposiela. Takže hodnota true hovorí, že existuje predvolená sieť podložená VPN, nie že sa použil výstup tvojej organizácie a určite nie že prebehla inšpekcia.
Nulová predvolená proxy znamená, že toto API nehlási žiadnu predvolenú HTTP proxy pre účinnú konfiguráciu. Vylučuje veľmi málo: aplikácia môže mať vlastné nastavenie SOCKS, implementovať vlastného HTTP klienta alebo byť riadená proxy na bráne, o ktorej sa zariadenie nikdy nedozvie.
PAC je prípad, ktorý poráža odpoveď s jednou hodnotou. Skript môže jednu destináciu smerovať cez proxy a inú poslať priamo, takže dve požiadavky tej istej aplikácie v priebehu sekundy môžu ísť rôznymi cestami. A aplikácia, ktorá svoje sokety viaže na zvolenú sieť alebo volá bindProcessToNetwork, nemá povinnosť nasledovať predvolenú hodnotu vôbec.
Čo ti tento snímok nemôže povedať
Toto nie je história. Nič tu nezaznamenáva, ktorou cestou išla požiadavka, ktorá zlyhala, a úspešné čítanie po zlyhaní nie je dôkazom o zlyhaní. Nie je to ani inventár: dostaneš predvolenú sieť volajúceho procesu, nie zoznam súkromných spojení každej aplikácie.
Nič nehovorí ani o tom, čo sa deje nad soketom. TLS podanie ruky, ktoré na spravovanom zariadení zlyhá, môže byť problém úložiska dôvery, nezhoda pripnutia alebo meno, ktoré proxy odmieta, a nič z toho sa v čítaní konektivity neobjaví.
Preto platia obe polovice spolu: snímka zužuje, kam sa pozerať, a vlastná diagnostika aplikácie hovorí, čo skutočne zlyhalo.
Nahlás to vo forme, ktorú správca môže použiť
Uveď postihnutú aplikáciu, profil, časovú značku a presnú fázu, ktorá zlyhala: preklad názvov, spojenie TCP, TLS podanie ruky alebo stav HTTP. Pridaj hodnoty snímky tak, ako boli prečítané, s nulami zapísanými ako nuly, nie ako slovo nič. Poznač si, či iné aplikácie v tom istom profile zlyhávajú rovnako, čo oddeľuje problém aplikácie od problému cesty v celom profile.
Potom sa zastav a nechaj vlastníka cesty odpovedať. Neber podnikový certifikát, adresu proxy ani položku VPN ako povolenie odstrániť správu alebo obísť schválenú trasu; to mení prípad podpory na incident politiky.
Zmluva o predvolenej proxy je krátka a stojí za jedno prečítanie, pretože presne určuje, ktorú proxy volanie hlási, a každé prehnané čítanie tejto snímky začína predpokladom, že hlási viac.