Authorization — Moteurs de Conditions¶
Les moteurs de conditions évaluent les conditions ABAC des politiques. Trois moteurs pluggables sont disponibles.
Module : src.module.authorization.infrastructure.condition_engines
Factory¶
- src.module.authorization.infrastructure.condition_engines.get_condition_engine() → ConditionEngine[source]¶
Retourne le moteur de conditions configuré. Lit
MULTITENANT['ABAC_CONDITION_ENGINE'].- Raises:
ConfigurationError – Si le type de moteur est inconnu.
JSON Engine (défaut)¶
Module : src.module.authorization.infrastructure.condition_engines.json_engine
- class src.module.authorization.infrastructure.condition_engines.json_engine.JSONConditionEngine(ConditionEngine)¶
Moteur par défaut. Évalue des conditions JSON structurées.
Opérateurs supportés :
Opérateur
Description
Exemple
eqÉgalité stricte
{"attribute": "role", "operator": "eq", "value": "admin"}neqInégalité
{"attribute": "status", "operator": "neq", "value": "suspended"}gtPlus grand que
{"attribute": "level", "operator": "gt", "value": 3}gtePlus grand ou égal
{"attribute": "age", "operator": "gte", "value": 18}ltPlus petit que
{"attribute": "attempts", "operator": "lt", "value": 5}ltePlus petit ou égal
{"attribute": "risk_score", "operator": "lte", "value": 0.7}inInclusion dans une liste
{"attribute": "role", "operator": "in", "value": ["admin", "manager"]}not_inExclusion d’une liste
{"attribute": "status", "operator": "not_in", "value": ["banned"]}containsContient (pour les listes)
{"attribute": "roles", "operator": "contains", "value": "admin"}regexExpression régulière
{"attribute": "email", "operator": "regex", "value": ".*@acme\\.com$"}existsL’attribut existe
{"attribute": "department", "operator": "exists", "value": true}Opérateurs logiques :
{ "operator": "and", "conditions": [ {"attribute": "role", "operator": "eq", "value": "admin"}, {"attribute": "level", "operator": "gte", "value": 3} ] }
{ "operator": "or", "conditions": [ {"attribute": "role", "operator": "eq", "value": "admin"}, {"attribute": "is_superuser", "operator": "eq", "value": true} ] }
{ "operator": "not", "condition": {"attribute": "status", "operator": "eq", "value": "suspended"} }
Protections :
Profondeur maximale configurable (
ABAC_MAX_CONDITION_DEPTH)Nombre max de conditions par politique (
ABAC_MAX_CONDITIONS_PER_POLICY)Timeout regex (
ABAC_REGEX_TIMEOUT_MS)
Cedar Engine¶
Module : src.module.authorization.infrastructure.condition_engines.cedar_engine
- class src.module.authorization.infrastructure.condition_engines.cedar_engine.CedarConditionEngine(ConditionEngine)[source]¶
Moteur utilisant le langage Cedar d’Amazon.
Prérequis :
pip install cedarpyCedar est un langage de politique formellement vérifié, recommandé pour les déploiements de production avec des politiques complexes.
permit( principal == User::"admin", action == Action::"read", resource in Folder::"documents" );Configuration :
MULTITENANT = { 'ABAC_CONDITION_ENGINE': 'cedar', }
Casbin Engine¶
Module : src.module.authorization.infrastructure.condition_engines.casbin_engine
- class src.module.authorization.infrastructure.condition_engines.casbin_engine.CasbinConditionEngine(ConditionEngine)¶
Moteur utilisant Casbin pour le RBAC/ABAC.
Prérequis :
pip install casbinCasbin supporte de nombreux modèles d’accès (ACL, RBAC, ABAC) avec des enforcers cachés par tenant.
Configuration :
MULTITENANT = { 'ABAC_CONDITION_ENGINE': 'casbin', }