ACL是数据仓库实际应用中比较必要的一个模块。
权限平台最主要的几个概念:用户、角色、操作和资源。常见的:如人是用户,管理员是角色,读/写属于操作,而表格就属于资源。用户通过角色拥有对资源的操作权限。事实上,在实际中,考虑一个用户可能只需要拥有某张表格的某几列的写权限,可能不适宜直接创建一个特殊的角色来支持这种需求,为防止角色的数目过于泛滥,可以支持用户直接拥有具体资源的权限,不过这样在概念上有点不合适宜。具体可根据实际应用取舍。
最复杂的可能就是资源方面了,在数据仓库的权限控制中,可能需要细致到A角色对某表的某几列某几行拥有权限。此时,最基本的资源分配单位就是一张表格中的一个单元格。
但是单元格作为分配在大多数情况下作为分配单位是非常繁琐的。因此,需要对资源进行分组,举例来说,可以引入资源的类型、部门、表、列和行。从而建立一颗资源树如下:
|--部门
|--数据类型
|--表
|--列
|--行
当然,根据实际情况会有所不同,顺序也可以调整,这只是一个例子。
如果我们有一个前端,如网页的地址是warehouse.com/getData/departmentA/click/pv/20120101/name/,表示要请求departmentA的click类型的数据,表格名称为pv,字段为name的20120101日期的数据,那么ACL时,用户首先在浏览器端登录认证,在请求具体这个URL时,服务端向ACL模块提交验证请求即可。当前ACL需要提供不同粒度的接口,如有时只要认证对表格是否有读权限,对部门是否有权限,如是等。