Autorizácia premieňa identitu na definovaný súbor povolených akcií. Pravidlo môže byť jednoduché, napríklad povoliť pozývanie používateľov iba administrátorovi. Môže byť aj kontextové, napríklad umožniť členovi účtu upravovať iba záznamy daného účtu. Rozhodujúce je presadzovanie: každá cesta k akcii musí viesť k rovnakému rozhodnutiu.
Odkiaľ pochádzajú medzery v povoleniach
Rozhranie produktu skrýva prvky, ktoré sa nevzťahujú na aktuálneho používateľa, ale ich skrytie nie je autorizácia. Server musí rozhodnutie zopakovať po prijatí požiadavky. Používateľ môže zavolať API bez použitia zamýšľanej obrazovky a úloha na pozadí môže získať údaje bez toho, aby prešla cez prehliadač.
Pri rýchlom generovaní funkcií sa môžu pravidlá rozísť. Jedna serverová funkcia overí účet, ďalšia skontroluje iba prihlásenie a novší API endpoint bez overenia dôveruje identifikátoru z požiadavky. Audit vygenerovaného systému spojí tieto rozhodnutia do jedného prehľadu.
| Miesto kontroly | Autorizačná otázka | Dôkaz |
|---|---|---|
| Používateľské rozhranie | Je ovládací prvok viditeľný pre správnu rolu? | Renderovanie podľa roly |
| Trasa API | Je akcia povolená pre túto identitu a záznam? | Kontrola na strane servera |
| Práca na pozadí | Ktorý účet alebo služba vlastní vykonávanú prácu? | Rozsah úlohy |
| Administrátorský nástroj | Sú privilegované akcie zreteľné a zaznamenané? | Explicitné pravidlo pre správcu |
Identita je len prvý krok
Autentifikácia určuje, kto podal žiadosť. Autorizácia vyhodnotí túto identitu oproti požadovanej akcii a zdroju. Zaobchádzanie s platnou reláciou ako s povolením je bežnou štrukturálnou chybou, pretože chráni trasu pred anonymným prístupom, pričom každému prihlásenému účtu ponecháva rovnaký dosah.
Audit oddeľuje vstupy do rozhodnutia:
- Aktér: Používateľ, služba alebo zariadenie, ktoré žiadosť odoslalo.
- Akcia: Operácia, o ktorú sa pokúšate, napríklad čítanie alebo vymazanie.
- Zdroj: Konkrétny príslušný záznam, súbor, účet alebo konfigurácia.
- Kontext: Vlastníctvo, rola, organizácia, stav pracovného postupu alebo iná podmienka pravidla.
- Rozhodnutie: Pravidlo na strane servera, ktoré povolí alebo zamietne akciu.
Ako audit sleduje autorizáciu
Kontrola začína citlivými akciami a sleduje každú cestu, ktorá ich môže spustiť. Porovnáva API endpointy, priame načítanie objektov, hromadné operácie, plánované úlohy a interné nástroje. Modelovanie hrozieb pomáha identifikovať akcie, ktorých zlyhanie by odhalilo údaje alebo zmenilo kritický stav.
Testy majú hodnotu vtedy, keď preverujú hranice, nie keď iba opakujú úspešné príklady. Užitočný test povolení vytvorí dva odlišné účty, z každého skúsi rovnakú akciu a dokáže, že prístup k jednému účtu neznamená prístup k druhému. Kontroluje aj vedľajšie účinky odmietnutých akcií. Odmietnutie, ktoré napriek tomu zapíše časť záznamu, nie je úplné.
Čo prinesie audit
Výsledkom je mapa oprávnení prepojená s konkrétnymi časťami kódu. Zaznamenáva pravidlo pre každú citlivú akciu, miesto jeho uplatnenia aj alternatívne cesty s odlišným správaním. Náprava je potom konkrétna. Nejde o všeobecné „zlepšenie bezpečnosti“, ale o centralizáciu alebo doplnenie chýbajúcej kontroly a jej overenie na každom vstupnom bode.
Táto úroveň kontroly je súčasťou disciplíny, ktorá oddeľuje softvér pripravený na produkciu od funkčného prototypu. Rozhranie môže po oprave vyzerať rovnako. Rozdiel je v tom, že server odmietne akcie, ktoré aktér nikdy nemal vykonať.