Zpět na domů

RBACX aktualizace: ReBAC a AI-politiky

Knihovna RBACX se aktualizovala: přidána ReBAC s integracemi SpiceDB/OpenFGA, AI-generace politik z OpenAPI, batchová evaluace práv. Opravena zranitelnosti DoS a SSRF, přidán Redis cache a async Django.

Evoluce RBACX: od RBAC k ReBAC s AI
Advertisement 728x90

RBACX za půl roku: ReBAC, AI politiky a dávková autorizace

Za posledních šest měsíců se knihovna RBACX vyvinula z jednoduchého RBAC/ABAC enginu na plnohodnotný systém s ReBAC a AI generováním politik. Byly opraveny kritické zranitelnosti: obejití deny-overrides v kompilátoru, DoS prostřednictvím rekurze podmínek a SSRF v HTTP zdroji. Nyní se uplatňuje MAX_CONDITION_DEPTH=50, verify_ssl a blokování privátních IP adres.

Dávková kontrola práv je implementována metodami evaluate_batch_async a evaluate_batch_sync ve třídě Guard. To řeší problém s mnoha požadavky v UI aplikacích, kde paralelní vyhodnocení pomocí asyncio.gather snižuje latenci.

decisions = await guard.evaluate_batch_async([
    (subject, Action("read"),   doc, ctx),
    (subject, Action("write"),  doc, ctx),
    (subject, Action("delete"), doc, ctx),
])

ReBAC: graf vztahů místo atributů

Autorizace založená na vztazích (ReBAC) zavádí model "kdo komu co povolil", podobný jako v Google Drive nebo GitHub. Práva jsou definována grafem entit: vlastník dokumentu deleguje přístup. Integrace s OpenFGA a SpiceDB podporují synchronní/asynchronní volání, včetně dávkového gRPC pro seznamy objektů. Lokální graf je vhodný pro testování.

Google AdInline article slot

Implementace vyžadovala přepracování vyhodnocování politik podle specifičnosti zdrojů, s testy na ekvivalenci cest kompilace a interpretace.

Generování politik pomocí LLM

Extra rbacx[ai] přidává AIPolicy pro automatizaci tvorby politik z OpenAPI schémat. Pipeline: generování LLM → validace JSON Schema → opakované pokusy → linter → kompilace.

from rbacx.ai import AIPolicy

ai = AIPolicy(api_key="sk-...", model="gpt-4o")
result = await ai.from_schema(openapi_schema)
guard = Guard(result.policy)

Metody refine_policy pro upřesnění v přirozeném jazyce a explain_decision zachovávají determinismus enginu. Podpora OpenAI, Ollama, Azure a kompatibilních poskytovatelů s limity na opakované pokusy.

Google AdInline article slot

Zkratka roles: ["admin", "editor"] zjednodušuje RBAC bez ztráty flexibility. Kombinace s condition přes AND, linter varuje před překryvy.

Další vylepšení výkonu

  • Ukládání do mezipaměti s Redis adaptérem (rbacx[cache-redis]) pro nasazení na více hostitelích.
  • Async adaptér pro Django ASGI 4.1+.
  • Strict types mode: Guard(policy, strict_types=True) vypíná implicitní převody.
  • Sledování rozhodnutí s explain=True pro ladění shody pravidel.

Tyto změny zajišťují škálovatelnost v produkci: od PyQt UI až po mikroslužby.

Co je důležité

  • Bezpečnost na prvním místě: uzavřeno obejití deny, DoS rekurze a SSRF; chování fail-closed.
  • ReBAC integrace: OpenFGA/SpiceDB s dávkovým gRPC, lokální graf pro vývoj.
  • AI automatizace: politiky z OpenAPI bez manuálního DSL, s validací a opakovanými pokusy.
  • Dávková kontrola práv: paralelní vyhodnocení pro UI a seznamy objektů.
  • Výkon: Redis mezipaměť, async Django, strict typing.

— Editorial Team

Google AdInline article slot
Advertisement 728x90

Číst dál