Autorizácia na úrovni objektov (Object-Level Authorization)

Aktualizované

Autorizácia na úrovni objektov je kontrola prístupu, ktorá rozhoduje, či overený aktér môže vykonať akciu nad konkrétnym záznamom, súborom alebo iným prostriedkom. Pri audite softvéru vytvoreného pomocou AI (vibe-coded) overuje, či každé vyhľadávanie, cesta a operácia na pozadí kontrolujú vzťah medzi aktérom a požadovaným objektom.

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žiadavkyKontrolovaný objektOverovaný vzťah
GET /orders/:idJedna objednávkaAktér môže čítať jej účet
PATCH /files/:idJeden súborAktér môže zmeniť jeho vlastníka alebo priečinok
Hromadný exportVybrané záznamyKaž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.