基于权能的访问控制模型(Capability Based Access Control, CapBAC)。
CapBAC使用基于令牌的体系结构,通过权能令牌为用户授予相应的权能,并允许用户自主将权能委派给其他用户。
权能令牌通常使用一种轻量级的数据交换格式JSON(JavaScript Object Notation)编写,作为权能的凭据。主体通过将权能令牌呈现给客体来获得访问权限。权能令牌可以定义为一个n元组:<资源ID, 委派者ID, 被委派者ID, 权能, 粒度, 有效期, 签名, …>。它就像一个获得权能和支持委派的临时票据。被委派者的权能令牌中包含委派者的旧令牌,如果客体对接收到的权能令牌逐层解密后能够获得由合法机构颁发的根令牌,则可以验证权能令牌的有效性。若权能令牌有效,则允许请求者进行临时访问。
CapBAC的基本流程如图所示。权威机构的管理员为后端服务器制定访问控制策略后,用户向权威机构发起授权请求。权威机构做出是否为用户授权的决策。若可以授权,则为用户颁发权能令牌。用户可以向资源端发起访问请求并出示权能令牌,资源管理器在验证用户身份和权能令牌的合法性后,即允许用户对相应资源进行访问。同时,用户可以将权能令牌委派给其他新用户,使新用户也具有对资源的访问权限。
当面对大规模分布式系统时,RBAC和ABAC往往会面临角色爆炸、属性爆炸、策略管理困难等问题,难以完成访问控制目标。CapBAC的提出为大规模分布式系统提供了新的访问控制机制。在CapBAC中,不仅授权中心具有授权权能,用户也有把自己的权能临时委派给其他用户的权能,这大大减少了授权中心的授权压力,实现了更加灵活的分布式授权。