1. 功能概述
该方案实现在EIS与Cognos系统集成的过程中,Cognos LDAP与EIS系统权限同步(包括了角色与用户的同步)的功能,从而到达通过EIS统一定义完成cognos系统报表数据的细粒度权限控制的目标。
如上图该集成方案的设计中主要包含两个模块:Cognos权限同步模块, Cognos MDL 权限写入模块。
Cognos权限同步模块
Cognos权限同步模块主要完成eis系统与cognos系统中角色、用户信息的映射及同步。该模块主要有三个子模块构成:1、EIS用户、LDAP角色映射算法子模块;2、角色管理子模块;3、用户管理子模块
Cognos MDL 权限写入模块
Cognos MDL权限写入模块:该模块将权限相关的角色信息写入cognos数据模型中,最终实现报表数据级的访问控制。
2. 模块设计
2.1. COGNOS权限同步模块
2.1.1. Eis用户、ldap角色映射算法子模块
角色映射算法
设计思路描述
由于针对cognos的细粒度数据权限控制时,一对一的角色映射无法基于cognos来实现两个以上维度关联的权限控制,因此需要在一对一的角色设置的基础上为复杂的细粒度权限控制延伸一些冗余的关联角色。以最终能够在cognos 数据立方体中实现两个关联维度的数据访问权限控制。
权限的映射分为两种情况:
1、对数据的访问控制只限于单一的维度,没有两个以上维度关联约束的情况。
1:1 即每一个eis系统角色都映射为一个同名的cognos ldap角色。
2、当同时基于两个或两个以上的维度对数据访问权限进行联合控制时,EIS系统的角色不能满足cognos数据访问控制的需要,需要对。
0:n 即一个EIS系统角色有可能映射到多个LDAP角色
如对产品、地域维度均进行权限控制。 一个角色对产品,
产品拥有类别: p1,p2,p3
地区拥有类别: a1,a2,a3
若使一个角色同时对产品P1,地区a2的数据拥有权限。需要增加一个 p1_a2数据角色。
若需要覆盖所有关联的场景,则需增设(p1,p2,p3)*( a1,a2,a3)这些角色。 (*表示笛卡尔集)
三个及以上维度依次类推。
输入:1、相关的维度角色数据。2、维度关联关系
输出:需要建立的角色
实现逻辑:
1、读取第一个维度角色的信息,
2、获取维度关联信息
3、读取相关的维度性息,遍历各维度的各子节点,按照笛卡尔关系生成相应的角色。
4、返回相应的角色列表
用户角色映射算法
设计思路描述
对于每一个eis用户 将以1:1的方式在cognos ldap中建立相应的用户信息。
由于在角色映射是存在1:n的情况,因此用户与角色的对应关系在eis系统配置的归属关系的基础上还需要实现对ldap中存在的衍生角色的映射,以实现在多个维度访问控制时对用户的授权。
若一个用户对产品P1,地区a2的数据拥有权限,则在eis系统中会存在 user1:p1,user1:a2 的归属关系, 由于此时存在多个维度的约束控制,因此ldap系统中需要增加user1:p1_a2 用户角色映射关系。
输入:1、用户ID。2、EIS系统中用户所具有的角色
输出:LDAP中用户所属的角色列表
实现逻辑:
1、读取第一个维度角色的信息,
2、后去维度关联信息
3、读取相关的维度性息,遍历各维度,按照笛卡尔关系生成相应的角色。
4、返回相应的角色列表
2.1.2. Cognos Ldap 角色同步子模块
该模块主要基于novartis对数据权限控制的要求,以及cognos的数据级权限控制的特性,实现eis系统中角色及用户与cognos LDAP 中用户与角色的同步。
增加角色
功能描述:响应前端系统请求向LDAP中增加新角色
输入:角色ID,父ID
输出:是否增加成功
实现逻辑:调用cognos接口在Ldap中新建相应的角色。
流程图:
删除角色
功能描述:响应前端系统请求从LDAP中删除相应的角色
输入:角色ID
输出:是否删除成功
实现逻辑:调用cognos接口在Ldap中删除相应的角色。
流程图:
2.1.3. Cognos LDAP用户同步子模块
增加用户
功能描述:响应前端系统请求向LDAP中增加新用户
输入:用户ID、密码
输出:是否增加成功
实现逻辑:调用cognos接口在Ldap中增加相应的新用户。
流程图:
删除用户
功能描述:响应前端系统请求从LDAP中删除相应的用户
输入:用户ID
输出:是否删除成功
实现逻辑:调用cognos接口在Ldap中删除相应的用户。
流程图
//用户属性修改主要包括用户所属角色的增减,其它相关属性的修改
增加用户角色
功能描述:响应前端系统请求在LDAP中为用户增加新的角色属性
输入:用户ID,相应的角色ID(数组)
输出:角色是否增加成功
实现逻辑:调用cognos接口在Ldap中为用户增加新的角色属性。
流程图
修改用户其它属性
功能描述:响应前端系统请求从在LDAP中修改用户其它一些相关属性
输入:用户ID,邮件地址等
输出:是否修改成功
实现逻辑:调用cognos接口在Ldap中修改用户其它一些相关属性。
2.2. Cognos MDL模型权限加载模块
功能描述:完成cognos mdl模型中权限的加载,针对系统对数据权限的控制要求,在mdl模型中载入相应的UserClass。
输入:1、需要加载权限的模型
2、模型权限控制的维度信息
输出:操作日志
实现逻辑:
1、通过数据库获取需要加载权限的mdl模型信息;
2、在数据库中获取该模型维度数据权限控制维度间的关联信息;
3、访问ldap提取UserClass信息将对应的用户类映射到对应的数据维度上。
4、访问cube ,为cube加载用户类。
5、若多个cube,重复步骤4
6、若多个模型需要添加权限重复步骤1-5;
流程图:
收起