Retour à l'accueil

Mises à jour RBACX : ReBAC et politiques AI

Bibliothèque RBACX mise à jour : ajout de ReBAC avec intégrations SpiceDB/OpenFGA, génération de politiques AI depuis OpenAPI, évaluation de permissions par lots. Vulnérabilités DoS et SSRF corrigées, ajout du cache Redis et de Django asynchrone.

Évolution de RBACX : du RBAC au ReBAC avec AI
Advertisement 728x90

RBACX après six mois : ReBAC, politiques IA et autorisation par lots

Au cours des six derniers mois, la bibliothèque RBACX est passée d'un moteur RBAC/ABAC basique à un système complet intégrant ReBAC et des politiques générées par IA. Des vulnérabilités critiques ont été corrigées : contournement des règles de refus dans le compilateur, DoS via récursion de conditions et SSRF dans la source HTTP. Le système applique désormais MAX_CONDITION_DEPTH=50, verify_ssl et bloque les IP privées.

La vérification des permissions par lots est implémentée via les méthodes evaluate_batch_async et evaluate_batch_sync de la classe Guard. Cela résout le problème des requêtes multiples dans les applications UI, où l'évaluation parallèle avec asyncio.gather réduit la latence.

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

ReBAC : graphes relationnels au lieu d'attributs

L'autorisation basée sur les relations (ReBAC) introduit un modèle "qui a accordé quoi à qui", similaire à Google Drive ou GitHub. Les permissions sont définies par un graphe d'entités : un propriétaire de document délègue l'accès. Les intégrations avec OpenFGA et SpiceDB prennent en charge les appels synchrones/asynchrones, y compris le gRPC par lots pour les listes d'objets. Un graphe local convient aux tests.

Google AdInline article slot

L'implémentation a nécessité de repenser l'évaluation des politiques basée sur la spécificité des ressources, avec des tests pour l'équivalence entre compilation et interprétation.

Génération de politiques avec LLM

Le package supplémentaire rbacx[ai] ajoute AIPolicy pour automatiser la création de politiques à partir de schémas OpenAPI. Le pipeline : génération LLM → validation JSON Schema → nouvelles tentatives → linter → compilation.

from rbacx.ai import AIPolicy

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

Des méthodes comme refine_policy pour l'affinement en langage naturel et explain_decision maintiennent le déterminisme du moteur. La prise en charge inclut OpenAI, Ollama, Azure et les fournisseurs compatibles avec des limites de nouvelles tentatives.

Google AdInline article slot

Le raccourci roles: ["admin", "editor"] simplifie RBAC sans perdre en flexibilité. Combinaison avec condition via AND, avec le linter avertissant des chevauchements.

Améliorations de performances supplémentaires

  • Mise en cache avec un adaptateur Redis (rbacx[cache-redis]) pour les déploiements multi-hôtes.
  • Adaptateur asynchrone pour Django ASGI 4.1+.
  • Mode types stricts : Guard(policy, strict_types=True) désactive les conversions de types implicites.
  • Traçage des décisions avec explain=True pour le débogage des correspondances de règles.

Ces changements assurent l'évolutivité en production : des interfaces PyQt aux microservices.

Points clés à retenir

  • Sécurité d'abord : Correction du contournement des refus, récursion DoS et SSRF ; comportement en échec fermé.
  • Intégrations ReBAC : OpenFGA/SpiceDB avec gRPC par lots, graphe local pour le développement.
  • Automatisation IA : Politiques depuis OpenAPI sans DSL manuel, avec validation et nouvelles tentatives.
  • Permissions par lots : Évaluation parallèle pour les UI et listes d'objets.
  • Performances : Cache Redis, Django asynchrone, typage strict.

— Editorial Team

Google AdInline article slot
Advertisement 728x90

Lire ensuite