多租户多维数据集和维度动态安全性

时间:2016-04-06 05:11:29

标签: ssas

我需要为我的维度和多维数据集(事实)实现精细的分层安全性。

要求是当用户连接到SSAS时,我希望他们只能看到属于该特定租户的数据数据子集。

最重要的是,我需要能够允许用户与他/她有权使用的维度和事实进行交互。例如,如果经理A管理管理人员D的人员B和经理C,那么当经理A查看销售时,他/她需要能够看到层级中的每个人,包括经理C和人员D销售。但如果该OLAP客户端是经理C,那么他/她只看到人员D的销售。这必须像任何层次结构(子父关系)那样递归地工作。

我的基本数据集包括:

  • 租户
  • 客户
  • 员工(销售代表,经理,主管等的自引用实体)
  • 主管(多对多关系实体,为特定员工指定其他经理),即员工表上的经理ID指的是主经理。如果该人员另外由其他人管理,则此表格将被填充。
  • 角色(员工的角色,包括他们的资历水平)
  • 销售
  • 促销

至于关系,每个租户都有多个客户,员工角色,促销和销售。我的事务数据库规范化为第3范式,所有租户共享同一个数据库。

在创建维度和事实时,我试图根据我的知识对结构进行非规范化。例如,我在Sales事实和任何其他维度中都有Tenant代理键。顺便问一下,你们会推荐一些东西吗?

我研究过网络,我看到实现这个设计的不同方法,是:

安全明智

  • 事实和维度之间的无事实事实表以及通过USERNAME()设置的用户上下文。在我的情况下,我必须将所有维度映射到员工(使用主键/外键方法)并添加新的度量组等。

  • 在每个租户属性上使用默认成员和允许设置STRMEMBER,将Visual Totals设置为true。

管理层次结构

  • 主要为每个多对多的地图添加新维度,我想要映射

看起来这些方法之间存在一些重叠,但我不确定这会有多好,也不知道是否有其他方法可以实现这一点。

注意:我们的系统是在网上销售的产品,因此我不能简单地为每个租户设置一个角色,否则这将更容易解决。

有人可以推荐一种方法吗?

干杯, 罗布森

0 个答案:

没有答案
相关问题