Autorizácia na úrovni objektov kontroluje požadovaný prostriedok, nie iba identitu odosielateľa požiadavky. Používateľ môže mať povolené prehliadať faktúry, no stále by mal mať prístup len k faktúram prislúchajúcim jeho vlastnému účtu. Táto kontrola spája aktéra, akciu a konkrétny objekt pred vrátením alebo zmenou dát.
Prečo ochrana ciest nestačí
Autentifikácia dokáže overiť, že požiadavka prichádza od známeho používateľa. Všeobecné oprávnenie zasa overuje, či používateľ môže vykonať danú operáciu vo všeobecnosti. Ani jedno z toho však nedokazuje, že konkrétny identifikátor v požiadavke patrí prostriedku, ku ktorému má daný používateľ prístup.
Tento nedostatok sa často objavuje pri priamych vyhľadávaniach. Handler načíta objekt podľa ID, potvrdí jeho existenciu a vráti ho. Ak dopyt alebo následné pravidlo neobmedzí rozsah objektu na aktuálny účet, iný platný identifikátor môže prekročiť zamýšľanú hranicu.
| Cesta požiadavky | Kontrolovaný objekt | Overovaný vzťah |
|---|---|---|
GET /orders/:id | Jedna objednávka | Aktér môže čítať jej účet |
PATCH /files/:id | Jeden súbor | Aktér môže zmeniť jeho vlastníka alebo priečinok |
| Hromadný export | Vybrané záznamy | Každý záznam spadá do povoleného rozsahu |
| Úloha na pozadí | Uložený cieľ úlohy | Úloha si zachováva kontext pôvodného účtu |
Kde sa kontrola môže stratiť
Audit softvéru vytvoreného pomocou AI sleduje každú cestu, ktorá prijíma alebo rekonštruuje identifikátor prostriedku. Vygenerované handlery môžu opakovane využívať jednoduché globálne vyhľadávanie namiesto zdieľaného dopytu s obmedzeným rozsahom. Nové hromadné operácie, administratívne nástroje a asynchrónne úlohy môžu obísť kontrolu, ktorá existuje na pôvodnej obrazovke.
Audit hľadá niekoľko vzorcov:
- Globálne vyhľadávanie: Objekt je načítaný podľa identifikátora bez obmedzenia rozsahu na účet alebo vlastníka.
- Vlastník určený klientom: Požiadavka priamo určuje, ktorý používateľ alebo tenant vlastní daný objekt.
- Čiastočná hromadná kontrola: Prvá položka je povolená, ale ďalšie položky už kontrolované nie sú.
- Odpojený dcérsky objekt: Podradený záznam je načítaný bez overenia jeho nadradeného objektu.
- Zastaraný kontext úlohy: Úloha v rade sa spustí až po tom, čo sa zmení prístup používateľa, ktorý ju inicioval.
Vzťah kontroly objektov k bezpečnostným pravidlám
Riadenie prístupu na základe atribútov môže vyjadriť tento vzťah ako politiku pomocou atribútov aktéra a prostriedku. Jednoduchšia aplikácia môže rovnaké pravidlo vynútiť obmedzením databázových dopytov na aktuálny účet. Implementácia sa líši, ale rozhodnutie musí prebehnúť pred vykonaním operácie a musí využívať dôveryhodný kontext.
Hranice tenantov si vyžadujú rovnakú presnosť. Všeobecná rola môže povoliť prístup k faktúram, zatiaľ čo autorizácia na úrovni objektov obmedzí túto rolu na faktúry jediného tenanta. Vďaka tomu je táto kontrola základnou súčasťou izolácie tenantov, a nie iba voliteľným filtrom v rozhraní.
Dôkaz, že každý objekt je chránený
Najsilnejšie testy vytvárajú aspoň dvoch aktérov a dva prostriedky. Dokazujú, že oprávnený aktér môže použiť správny objekt, nemôže použiť cudzí objekt a po zamietnutí nespôsobí žiadne čítanie, zápis, udalosť ani zaradenie úlohy do radu. Hromadné a vnorené cesty vyžadujú ekvivalentné testovacie scenáre pre prekročenie týchto hraníc.
Výstupom auditu je mapa identifikátorov, načítavacích ciest, pravidiel vlastníctva a bodov vynucovania. To podporuje disciplínu potrebnú pri nasadzovaní softvéru vygenerovaného pomocou AI do produkcie, kde funkčná obrazovka sama osebe neukazuje, k čomu všetkému môže upravená požiadavka získať prístup.