目录结构以Tree形式展现,按照RBAC的规范,我把目录当做一种资源(resource),然后以permission=resource+operation来定义权限,operation包括view,edit,check in/out等,
定义一个权限的大概流程是:在目录树上选择某一目录节点,然后选择一种操作类型,由此定义一个对该节点的权限permission1。
按此方式授权:permission1->role1->group1,因此属于组group1的用户就拥有对该节点的操作权限permission1,节点权限具有继承特点。
如果按此方式定义权限的话,那么随着目录结构树的增长,权限会越来越多。
另外一种方式就是先定义好操作权限,比如view permission,edit permission,check in permission,check out permission,把role和privilege的概念等同起来,即预先定义好基本的固定角色view role,edit role,check in role,check out role。
目录结构的安全策略是:树节点授权给某个角色role1(edit role),于是拥有该角色的group就有权限对该节点以及子节点进行edit的权限,如果再把该节点授权给role2(check in role),那么同时拥有role1和role2的group就能对该节点及子节点进行edit和check in的权限。此方式对树节点是进行粗粒度授权,而且不符合RBAC中permission=resource+operation的规范。
不知大家对目录结构认证有什么心得和建议?