返回首页

RBACX 更新:ReBAC 和 AI 策略

RBACX 库更新:添加了 SpiceDB/OpenFGA 集成的 ReBAC、来自 OpenAPI 的 AI 策略生成、批量权限评估。修复了 DoS 和 SSRF 漏洞,添加了 Redis 缓存和异步 Django。

RBACX 的演进:从 RBAC 到带有 AI 的 ReBAC
Advertisement 728x90

RBACX六个月回顾:关系型授权、AI策略生成与批量权限检查

过去六个月,RBACX库已从一个基础的RBAC/ABAC引擎演变为一个包含ReBAC和AI生成策略的完整系统。关键安全漏洞已得到修复:编译器中的拒绝覆盖绕过、条件递归导致的DoS攻击,以及HTTP源中的SSRF漏洞。系统现在强制执行MAX_CONDITION_DEPTH=50verify_ssl验证,并屏蔽私有IP地址。

批量权限检查通过Guard类中的evaluate_batch_asyncevaluate_batch_sync方法实现。这解决了UI应用中多个请求的问题,使用asyncio.gather进行并行评估可降低延迟。

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

ReBAC:用关系图替代属性

基于关系的授权(ReBAC)引入了“谁授予了什么给谁”的模型,类似于Google Drive或GitHub。权限通过实体图定义:文档所有者委托访问权限。与OpenFGA和SpiceDB的集成支持同步/异步调用,包括对象列表的批量gRPC调用。本地图适用于测试环境。

Google AdInline article slot

实现需要基于资源特异性重新设计策略评估,并测试编译路径和解释路径的等效性。

使用大语言模型生成策略

额外的rbacx[ai]包添加了AIPolicy功能,可从OpenAPI模式自动创建策略。流程包括:LLM生成 → JSON模式验证 → 重试 → 代码检查 → 编译。

from rbacx.ai import AIPolicy

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

refine_policy用于自然语言优化策略,explain_decision保持引擎的确定性。支持OpenAI、Ollama、Azure及兼容提供商,并设有重试限制。

Google AdInline article slot

简写roles: ["admin", "editor"]简化了RBAC配置而不失灵活性。通过AND与condition结合,代码检查器会警告重叠问题。

其他性能改进

  • 使用Redis适配器(rbacx[cache-redis])进行缓存,适用于多主机部署。
  • Django ASGI 4.1+的异步适配器。
  • 严格类型模式:Guard(policy, strict_types=True)禁用隐式类型转换。
  • 使用explain=True进行决策追踪,用于调试规则匹配。

这些改进确保了生产环境中的可扩展性:从PyQt UI到微服务架构。

核心要点

  • 安全优先:修复了拒绝绕过、DoS递归和SSRF漏洞;采用故障关闭行为。
  • ReBAC集成:OpenFGA/SpiceDB支持批量gRPC,本地图用于开发环境。
  • AI自动化:从OpenAPI自动生成策略,无需手动编写DSL,包含验证和重试机制。
  • 批量权限:为UI和对象列表提供并行评估。
  • 性能优化:Redis缓存、异步Django支持、严格类型检查。

— Editorial Team

Google AdInline article slot
Advertisement 728x90

继续阅读