Застосунок VPN просить контакти й доступність: що дозволити
VPN потрібен один мережевий дозвіл. Доступність, контакти й встановлення сертифіката потребують власного обґрунтування, якого функція маршрутизації дати не може.
Інсталятор просить доступ до мережі, потім контакти, доступність і встановлення сертифіката. До завдання належить лише перший запит. Другий екран — це місце, де ухвалюється справжнє рішення.
Оцінюйте кожен запит щодо функції, яку ви обрали, на платформі, яку використовуєте. Жоден універсальний список дозволів не охоплює кожен продукт VPN, а довгий список сам собою нічого не доводить.
Єдиний дозвіл, який завданню справді потрібен
Android просить користувача схвалити службу VPN через системний діалог до запуску будь-якого тунелю, а служба застосунку оголошує BIND_VPN_SERVICE, щоб система могла прив'язатися до неї. Операційно застосунок виконує маршрутизацію. Згоду дає людина, яка тримає пристрій, у діалозі, де названо застосунок, а відкликання згодом — підтримувана дія.
Платформи Apple виражають ту саму ідею через мережеве розширення плюс схвалення встановлення, а не через екран дозволів. Windows використовує драйвер віртуального адаптера й запит на підвищення прав. Дві форми, один сенс: ця програма може обробляти пакети. Ніщо в цьому дозволі не охоплює читання вашої адресної книги чи видачу власного центру сертифікації.
Додатковий доступ — це окремий дозвіл з окремими наслідками. Клієнту маршрутизації, який його хоче, потрібне власне обґрунтування.
Де додатковим запитам потрібна власна історія
Служба доступності може читати вміст екрана й діяти від вашого імені, що далеко виходить за межі маршрутизації. Адміністрування пристрою може застосовувати політики блокування й стирати дані. Встановлений користувачем кореневий сертифікат дозволяє тому, хто має відповідний ключ, читати трафік, який TLS інакше захистив би.
Будь-що з цього може бути законним. Продуктам для керованих пристроїв і батьківського контролю можуть знадобитися повноваження політики, а інструменту підтримки може знадобитися доступність, щоб провести вас налаштуваннями.
Вимога — простежуваність: запит указує на названу функцію, і ця функція видима в продукті, який ви встановили. Запит контактів без екрана, зверненого до контактів, не має чого пояснити. Аргумент про шифрування теж не переноситься, бо захист пакетів нічого не каже про те, ким є ваші друзі. Законний продукт усе одно може просити зайве через вбудовану бібліотеку, і це вада, про яку варто повідомити, а не злочин, про який варто заявляти.
Запишіть запит і функцію, до якої він належить, потім вирішіть. Цей запис — ще й те, що ви показуєте підтримці, коли функція ламається після відмови.
Читання запиту на пристрої
Картка в магазині описує намір, а встановлений пакет описує реальність. Запитайте менеджер пакетів, що оголошено і що надано, перш ніж схвалювати будь-що інше. Ця пара найважливіша, коли картка й маніфест розходяться.
Дві команди охоплюють більшість:
adb shell dumpsys package com.example.vpn | grep -E "requested permissions|install permissions" -A 30 adb shell cmd appops get com.example.vpn
Перша перелічує оголошені дозволи проти наданих, і саме це порівняння виявляє занадто широкий маніфест. Друга показує app-ops під час виконання, включно з особливими доступами, які ніколи не з'являються як звичайні дозволи. Там, де інструменти розробника недоступні, прочитайте ті самі факти на екранах налаштувань платформи.
Ці екрани займають хвилину й не потребують програмного забезпечення. Доступність, адміністрування пристрою й сховище сертифікатів — кожен перелічує застосунки, які мають дозвіл.
Рішення, а потім обмеження шкоди
Надайте мережевий дозвіл обраному вами клієнту й розглядайте кожен додатковий запит як окреме рішення. Відмовте тим, у кого немає відповідної функції, потім подивіться, що зламається. Клієнт маршрутизації, який відмовляє, коли доступ до контактів заборонено, ніколи не просив контакти від вашого імені.
Відкликання одного дозволу зазвичай вимикає одну функцію без видалення застосунку чи розбирання кожного профілю. Після цього підключіться знову й переконайтеся, що тунель досі встановлюється.
Розділіть два питання, які діалог зазвичай зливає: що ця програма може робити на пристрої й що її оператор робить із трафіком після підняття тунелю. Перше вирішується тут. Друге потребує політики зберігання, і жоден діалог її не надає.