taolib.testing.auth.rbac#

通用 RBAC 策略引擎。

提供与业务领域解耦的基于角色的访问控制。

Classes#

Permission

权限定义。

RoleDefinition

角色定义。

RBACPolicy

RBAC 策略引擎。

Module Contents#

class taolib.testing.auth.rbac.Permission#

权限定义。

参数:
  • resource -- 资源类型

  • action -- 操作类型

resource: str#
action: str#
class taolib.testing.auth.rbac.RoleDefinition#

角色定义。

参数:
  • name -- 角色名称

  • description -- 角色描述

  • permissions -- 权限列表

  • scopes -- 作用域映射,键为作用域类型,值为允许的范围列表。 None 值表示该作用域无限制。

name: str#
description: str#
permissions: list[Permission] = []#
scopes: dict[str, list[str] | None]#
class taolib.testing.auth.rbac.RBACPolicy(roles: dict[str, RoleDefinition])#

RBAC 策略引擎。

提供基于角色的权限检查和作用域验证。

参数:

roles -- 角色名称到 RoleDefinition 的映射

_roles#
get_role(name: str) RoleDefinition | None#

获取角色定义。

参数:

name -- 角色名称

返回:

角色定义,如不存在返回 None

has_permission(user_roles: list[str], resource: str, action: str) bool#

检查用户角色列表中是否有任何角色拥有指定权限。

参数:
  • user_roles -- 用户拥有的角色名称列表

  • resource -- 资源类型

  • action -- 操作类型

返回:

是否有权限

has_scope(user_roles: list[str], scope_type: str, scope_value: str) bool#

检查用户角色列表中是否有任何角色在指定作用域内。

参数:
  • user_roles -- 用户拥有的角色名称列表

  • scope_type -- 作用域类型(如 "environment", "service"

  • scope_value -- 作用域值(如 "production", "auth-service"

返回:

是否在作用域内

classmethod from_dict(data: dict[str, dict[str, Any]]) Self#

从字典构建 RBAC 策略。

兼容现有 RBACService.SYSTEM_ROLES 的数据格式。

参数:

data -- 角色名称到角色数据字典的映射。每个角色数据应包含: - description: 角色描述 - permissions: 权限列表,每项含 resourceactions - 其他以 _scope 结尾的键将被解析为作用域

返回:

RBACPolicy 实例