Taképermissions, aplikacni opravneni, opravneni pro aplikaciZákladní
Definice
Oprávnění aplikace je soubor povolení, která uživatel, operační systém nebo správce udělí programu pro přístup k citlivým funkcím a datům, například k poloze, kameře, kontaktům nebo účtu. Správné řízení oprávnění omezuje škody při chybě, úniku dat i zneužití aplikace v provozu.
Nezaměňujte: Oprávnění aplikace může v praxi znamenat systémový přístup k zařízení, oprávnění webového prohlížeče nebo souhlas k rozsahu API u cloudového účtu.
Proč oprávnění aplikace existují
Oprávnění aplikace oddělují běžné používání programu od přístupu k věcem, které mohou zasáhnout soukromí, bezpečnost nebo peníze. Operační systém, prohlížeč nebo cloudová identita tím brání situaci, kdy libovolná aplikace automaticky čte kontakty, zapíná mikrofon, posílá notifikace nebo spravuje firemní data.
Moderní platformy se snaží držet princip nejmenších práv: aplikace má dostat jen takový rozsah přístupu, který skutečně potřebuje pro konkrétní funkci. U nativní aplikace se oprávnění často vážou k zařízení, například ke kameře nebo poloze. U webu může prohlížeč rozhodovat o poloze, oznámeních, schránce nebo přístupu k médiím. U firemních služeb může oprávnění znamenat také rozsah OAuth souhlasu, třeba možnost číst kalendář.
Kdy má aplikace žádat o přístup
Žádost o oprávnění má přijít ve chvíli, kdy uživatel chápe její důvod. Navigační aplikace může požádat o polohu při hledání trasy, ne hned na úvodní obrazovce. Aplikace pro videohovor má smysluplně žádat o kameru a mikrofon až při vstupu do hovoru. Tento okamžik zvyšuje důvěru a snižuje počet zamítnutí.
Rozhraní by mělo vysvětlit hodnotu pro uživatele, ale nesmí obcházet systémový dialog klamavou formulací. U Progressive Web App je typickým příkladem žádost o push notifikace. Oznámení mají být navázaná na očekávanou událost, například hlídání objednávky, ne na neurčitý slib „novinek“.
Kde vzniká bezpečnostní riziko
Riziko nevzniká jen při prvním povolení. Problém nastává i později, když aplikace začne používat schválený přístup šířeji, než uživatel čekal, nebo když útočník zneužije chybu v aplikaci. Povolená kamera, poloha nebo přístup k účtu zvětšují dopad kompromitace.
Správný návrh proto počítá s omezením rozsahu, dočasností a možností odebrání. Citlivé operace mají být kontrolované na straně serveru i klienta. Samotný systémový dialog není bezpečnostní architektura, pouze jedna vrstva ochrany. U týmových a podnikových aplikací je důležitý také audit: kdo oprávnění udělil, kdy se použilo a jaký mělo rozsah.
Rozdíl mezi oprávněním zařízení a souhlasem k účtu
Oprávnění zařízení řídí přístup k lokálním zdrojům, například k fotoaparátu, mikrofonu, poloze nebo souborům. Souhlas k účtu řídí přístup k datům ve službě, například ke kontaktům v cloudu, e-mailu nebo administraci organizace. Uživatel může odmítnout jedno, aniž by nutně odmítal druhé.
Vývojář musí rozlišovat, kdo rozhoduje. Prohlížeč nebo operační systém spravuje lokální schopnosti zařízení. Identitní platforma nebo administrátor organizace spravuje oprávnění k API a datům účtu. Dobře navržená aplikace kombinuje obě kontroly a při odmítnutí nabídne omezený režim místo slepé chyby.
Příklady z praxe
Videohovor v prohlížeči
Webová aplikace pro videohovor nezobrazuje žádost o kameru při načtení hlavní stránky. Aplikace požádá o přístup až po kliknutí na tlačítko „Připojit kameru“. Uživatel díky tomu vidí jasnou souvislost mezi povolením a funkcí, kterou chce právě použít.
const status = await navigator.permissions.query({ name: "camera" }); if (status.state === "granted" || status.state === "prompt") { const stream = await navigator.mediaDevices.getUserMedia({ video: true }); videoElement.srcObject = stream; }Kalendářová integrace
Aplikace pro plánování schůzek chce zobrazit volné termíny z kalendáře, ale nepotřebuje události upravovat. Integrace proto žádá pouze oprávnění pro čtení kalendáře. Pokud by aplikace požadovala plný zápis, administrátor ve firmě by mohl souhlas zamítnout jako zbytečně široký.
{ "scope": "https://www.googleapis.com/auth/calendar.readonly" }
Časté omyly
- MýtusKdyž uživatel jednou klikne na Povolit, aplikace může dělat všechno.
- Ve skutečnostiUdělené oprávnění má konkrétní rozsah daný platformou, například kamera, poloha nebo čtení kalendáře. Aplikace stále podléhá dalším omezením operačního systému, prohlížeče, API a serverové autorizace.
- MýtusOprávnění řeší bezpečnost za vývojáře.
- Ve skutečnostiSystémový dialog je jen jedna ochranná vrstva. Vývojář musí dál omezovat rozsah dat, ověřovat operace na serveru, ukládat tokeny bezpečně a počítat s tím, že udělené oprávnění může být zneužito při chybě v aplikaci.
- MýtusČím víc oprávnění aplikace požádá hned na začátku, tím méně problémů bude později.
- Ve skutečnostiPředčasné a široké žádosti často vedou k odmítnutí nebo nedůvěře. Lepší je žádat postupně, v kontextu konkrétní funkce a s co nejmenším rozsahem.
Časté dotazy
- Podle čeho poznám, že oprávnění aplikace dává smysl?
- Oprávnění aplikace je bezpečné povolit tehdy, když je požadavek srozumitelně spojený s funkcí, kterou uživatel právě zapíná. Aplikace pro navigaci potřebuje polohu, fotoaplikace potřebuje kameru a komunikační aplikace může potřebovat mikrofon. Podezřelé je oprávnění, které nesouvisí s účelem aplikace, například kalkulačka žádající kontakty nebo svítilna žádající přístup k účtu.
- Co se stane, když oprávnění aplikace později odeberu?
- Oprávnění aplikace lze obvykle odebrat v nastavení operačního systému, prohlížeče nebo cloudového účtu. Odebrání může vypnout jen konkrétní funkci, například odesílání notifikací nebo přístup ke kameře. Dobře navržená aplikace po odebrání oprávnění nespadne, ale vysvětlí omezení a nabídne znovu povolení až ve chvíli, kdy je potřeba.
- Proč aplikace žádá oprávnění, když už jsem přihlášený?
- Oprávnění aplikace a přihlášení k účtu řeší různé části bezpečnosti. Přihlášení potvrzuje identitu uživatele, zatímco oprávnění určuje, k jakým funkcím nebo datům smí aplikace přistupovat. Přihlášená aplikace proto automaticky nemá mít přístup ke kameře, poloze ani všem datům v účtu. Rozsah přístupu má být udělen zvlášť a co nejužší.
- Má být oprávnění aplikace povinné pro celé používání?
- Oprávnění aplikace má být povinné jen pro funkci, která bez něj technicky nedává smysl. Aplikace pro skenování QR kódů bez kamery nepracuje plnohodnotně, ale obchodní aplikace může fungovat bez notifikací nebo přesné polohy. Povinné oprávnění bez jasného důvodu zhoršuje důvěru a často vede k horšímu hodnocení aplikace.
Zdroje
- Permissions(otevře se v novém okně)
- Permissions API(otevře se v novém okně)
- Permissions and consent in the Microsoft identity platform(otevře se v novém okně)
- OAuth 2.0 Scopes for Google APIs(otevře se v novém okně)
- OWASP Mobile Top 10(otevře se v novém okně)