Powrót do strony głównej

RBACX aktualizacje: ReBAC i polityki AI

Biblioteka RBACX zaktualizowana: dodano ReBAC z integracjami SpiceDB/OpenFGA, generowanie polityk AI z OpenAPI, wsadowa ocena uprawnień. Naprawiono luki DoS i SSRF, dodano cache Redis i async Django.

Ewolucja RBACX: od RBAC do ReBAC z AI
Advertisement 728x90

RBACX po pół roku: ReBAC, polityki AI i autoryzacja wsadowa

W ciągu pół roku biblioteka RBACX ewoluowała od podstawowego silnika RBAC/ABAC do pełnoprawnego systemu z ReBAC i generowaniem polityk przez AI. Naprawiono krytyczne luki: obejście deny-overrides w kompilatorze, DoS przez rekurencję warunków oraz SSRF w źródle HTTP. Obecnie stosowane są MAX_CONDITION_DEPTH=50, verify_ssl i blokowanie prywatnych adresów IP.

Wsadowa weryfikacja uprawnień została zaimplementowana metodami evaluate_batch_async i evaluate_batch_sync w klasie Guard. Rozwiązuje to problem wielu zapytań w aplikacjach UI, gdzie równoległa ocena przez asyncio.gather zmniejsza opóźnienia.

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

ReBAC: graf relacji zamiast atrybutów

Autoryzacja oparta na relacjach (ReBAC) wprowadza model "kto komu co zezwolił", analogiczny do Google Drive czy GitHub. Uprawnienia definiowane są przez graf encji: właściciel dokumentu deleguje dostęp. Integracje z OpenFGA i SpiceDB obsługują wywołania synchroniczne/asynchroniczne, w tym wsadowe gRPC dla list obiektów. Lokalny graf nadaje się do testów.

Google AdInline article slot

Implementacja wymagała przeprojektowania oceny polityk pod kątem specyficzności zasobów, z testami na równoważność ścieżek kompilacji i interpretacji.

Generowanie polityk za pomocą LLM

Dodatek rbacx[ai] wprowadza AIPolicy do automatyzacji tworzenia polityk ze schematów OpenAPI. Potok: generowanie przez LLM → walidacja JSON Schema → ponowne próby → linter → kompilacja.

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 do doprecyzowania w języku naturalnym oraz explain_decision zachowują determinizm silnika. Obsługa OpenAI, Ollama, Azure i kompatybilnych dostawców z limitami ponownych prób.

Google AdInline article slot

Skrót roles: ["admin", "editor"] upraszcza RBAC bez utraty elastyczności. Kombinacja z condition przez AND, linter ostrzega o nakładaniu się.

Dodatkowe usprawnienia wydajności

  • Buforowanie z adapterem Redis (rbacx[cache-redis]) dla wdrożeń multi-host.
  • Async-adapter dla Django ASGI 4.1+.
  • Tryb ścisłych typów: Guard(policy, strict_types=True) wyłącza niejawne konwersje.
  • Śledzenie decyzji z explain=True do debugowania dopasowania reguł.

Te zmiany zapewniają skalowalność w produkcji: od UI PyQt po mikrousługi.

Co jest ważne

  • Bezpieczeństwo na pierwszym miejscu: zamknięto obejścia deny, rekurencję DoS i SSRF; zachowanie fail-closed.
  • Integracje ReBAC: OpenFGA/SpiceDB z wsadowym gRPC, lokalny graf dla dev.
  • Automatyzacja AI: polityki z OpenAPI bez ręcznego DSL, z walidacją i ponownymi próbami.
  • Wsadowa weryfikacja uprawnień: równoległa ocena dla UI i list obiektów.
  • Wydajność: bufor Redis, async Django, ścisłe typowanie.

— Editorial Team

Google AdInline article slot
Advertisement 728x90

Czytaj dalej