本文将在 IBM Cognos Dynamic Cube 红皮书的 “第 7 章 - 多维安全性” 基础上展开介绍,通过一些示例介绍多维安全过滤器的各种组合如何影响用户可看到的数据视图,并给出最终创建的聚合。
本文是使用 IBM Cognos BI 10.2.1 创建的。
文中假设读者熟悉 Dynamic Cube 建模的基本概念,并且已阅读 IBM Cognos Dynamic Cube 红皮书 。
本文使用 great_outdoors_dynamiccube 示例模型作为基础模型,我们将修改该模型以包含本文中演示的安全过滤器和视图。还假设您已安装和配置 IBM Cognos BI 示例和合适的数据源。
回页首
根据 Dynamic Cube 多维安全视图的配置方式,它们可能对用户可看到的数据和聚合产生不同影响。本文将分析围绕排序方法 Email 及产品 Firefly 4 和 Firefly 2 的 6 种不同的安全场景。为每个维度分别创建了两个安全过滤器的不同实现。
回页首
安全过滤器定义了如何向用户授予或拒绝对一种分层结构中的一个或多个成员的访问。在 Dynamic Cube Designer 中打开 great_outdoors_dynamiccube 模型,确保您已连接到合适的数据源。我们将使用来自数据源的成员组来构建安全过滤器,而且将需要访问数据源。
图 1. Project Explorer 视图,其中展开了 Model 和 Order method 维度
图 2. Order method 分层结构属性窗格
图 3. Order method 分层结构属性,其中选择了 New Role Security Filter 对象
图 4. order method 的安全过滤器定义
set(Firefly 4;Firefly 2)图 5 显示了 product 过滤器创建完成后应有的外观。
图 5. 创建完成的 product 安全过滤器的定义
回页首
安全视图包含一个或多个安全过滤器。结合使用多个安全过滤器,建模人员可创建同一个多维数据集的多个视图,而无需删除级别或成员。对于本文,我们将创建 7 个安全视图,用以演示各种视图对用户看到的哪些成员有何影响,还会给出所创建的聚合。表 1 给出了每个视图的名称和简短定义。
表 1. 表 1 - 安全视图定义
安全视图名称 | 安全视图定义 |
---|---|
Admin View | 允许管理员查看来自所有分层结构的所有成员 |
Order Method | 允许用户查看来自除 Order method 外的所有分层结构的所有成员,Order method 分层结构使用 order method 安全过滤器过滤 |
Products | 允许用户查看来自除 Products 外的所有分层结构的所有成员,Products 分层结构使用 product 安全过滤器过滤 |
Email and Firefly only | 仅允许用户查看 Order method 和 Products 分层结构,它们通过相应的安全过滤器过滤 |
Email and Firefly combined | 允许用户查看来自除 Order method(使用 order method 安全过滤器过滤)和 Products(使用 product 安全过滤器过滤)外的所有分层结构的所有成员 |
Firefly | 仅允许用户查看 Products 分层结构,该分层结构使用 product 安全过滤器过滤 |
仅允许用户查看 Order method 分层结构,该分层结构使用 ‘order method’ 安全过滤器过滤 |
图 6. gosldw_sales 多维数据集安全属性
图 7. gosldw_sales 和其中名为 Admin View 的安全视图
图 8. Admin View 安全视图的 Add Security Filters 对话框
图 9. 包含 Admin View 定义的 Security View 选项卡视图
图 10. Order Method 安全视图的定义
图 11. Products 安全视图的定义
图 12. Email and Firefly only 安全视图的定义
图 13. Email and firefly combined 安全视图的定义
图 14. Firefly 安全视图的定义
图 15. email 安全视图的定义
在下一节中,我们要将这些安全视图分配给 LDAP 验证来源中的用户,并在同一个报告上检查每个安全视图的影响。
回页首
为了看到每个安全视图对成员和聚合的影响,需要创建单个报告。此报告不会更改,因此展示了每个视图如何更改所返回的用户的成员和聚合视图来满足查询要求。
图 16. 为 gosldw_sales 动态多维数据集打开 Analysis Studio
图 17. 在 Analysis Studio 中构建的 Security View 报告
创建报告后,剩余的工作就是为一系列用户分配安全视图,以展示视图对数据的影响。对于本文,创建了一组用户,使得每个安全视图有一个不同的用户。表 2 显示了每个用户分配到的安全视图。
表 2. 表 2 LDAP 用户和它们关联的安全视图
用户名 | 安全视图 |
---|---|
Admin | Admin View |
emailonly | |
combuser | Email and firefly combined |
bothonlyuser | Email and Firefly only |
fireflyonly | Firefly |
omuser | Order Method |
produser | Products |
图 18. gosldw_sales 多维数据集的 IBM Cognos Administration 视图
图 19. Admin View 安全视图的用户权限
回页首
我们已定义安全视图并关联到一组用户,接下来看看每个安全视图对用户将看到的结果的影响。下面您将看到每个报告输出,以及对为什么该安全视图以某种方式限制数据的解释。
第一个报告输出(如图 20 所示)由 Admin user 运行 - 此用户在运行报告时使用了 Admin View。Admin View 允许用户访问每个分层结构的所有级别和成员。因此,Admin user 可看到多维数据集的所有成员和聚合,因此显示的报告就好像没有启用安全性。
图 20. 针对 Admin user 的报告输出
如果用户仅被授权访问 email 安全视图或 Order Method 安全视图,他们就会看到图 21 所示的输出。该报告有效和他们能够看到所有产品的原因在于,默认情况下,用户有权访问一个维度中的所有对象,除非该维度使用了安全视图来保护。Order Method 安全视图授予用户所有其他分层结构的访问权,仅将 Order Method 分层结构限制到成员 E-mail。email 安全视图限制用户仅能看到成员 E-mail,但为了访问多维数据集,他们被授予所有其他分层结构的访问权,因为这些分层结构不存在安全性定义。
请注意,每种产品的总计与成员 E-mail 的值不匹配,All member 和 Lanterns 的总计也不匹配。发生此情况的原因在于,在定义安全性时,我们将范围设置为 Grant Members, Descendants and Ancestors。因此,尽管用户被限制仅能看到 Order method 级别的成员 E-mail,但授予了对 All 级别的访问权。与其花时间聚合 Order method 子级别上存在的所有成员,查询返回 All 级别的聚合要快得多。此外,因为用户能够访问 All 级别,所以查询返回该级别的聚合值,而不是它们可查看的惟一成员的值的总计。使用名为 Firefly Lite 的 lantern 为例,它返回所有 order method 的 Firefly Lite 的总量。
图 21. 启用了 email 或 Order Method 安全视图的安全报告的示例输出
非常类似于 Order method 的安全视图,分配给用户 fireflyonly 和 produsers 的安全视图返回相同的输出。两个安全视图都限制了 Products 分层结构,使得只有成员 Firefly 2 和 Firefly 4 可见。再一次,尽管用户 fireflyonly 仅能访问 Firefly 安全视图,该视图仅定义了 Products 分层结构的安全性,但默认情况下,该用户可访问所有分层结构,除非另行指定。图 22 中的输出显示了限制 Products 分层结构的结果。
类似于上一个例子,尽管该用户仅能访问成员 Firefly 2 和 Firefly 4,但他们可访问父成员 Lanterns。结果,它没有对在 Products 级别返回的成员求和,而是仅请求 Lanterns 成员的聚合值 - 对于 Fax,这将是所有采用 Fax 订购方法的灯笼的总量。
图 22. 启用了 Firefly 或 Products 安全视图的安全报告的示例输出
在接下来要解释的两个安全视图中,在第一个中我们专门确保了 Order method 和 Products 分层结构的安全性,在第二个中我们确保了 Order method 和 Products 分层结构的安全性,但能够访问所有其他分层结构。在两种情况下,返回的 Order method 和 Products 成员都受到安全视图的限制。结果,Lanterns 和 All 级别的总计是所有采用 E-mail 订购方法的 Lanterns 及产品 Firefly 2 和 Firefly 4 的所有订购方法的总计(图 23)。
图 23. 启用了 Order method 和 Products 分层结构的安全报告的示例输出
在最后一个示例中,我们将授予名为 combuser 的用户对 Order Method 和 Products 安全视图的读取、执行和遍历权限。请注意,每个视图会授予对多维数据集中所有分层结构的访问权,而仅限制其各自的分层结构。表 3 显示了在组合这两种安全视图时将创建的组合安全设置。
表 3. 表 3 - 组合 Order Method 和 Products 安全视图的结果
分层结构 | Products 安全视图 | Order Method 安全视图 |
---|---|---|
Branch | 授予所有成员访问权 | 授予所有成员访问权 |
Employee by Region | 授予所有成员访问权 | 授予所有成员访问权 |
Order Method | 授予所有成员访问权 | |
Product brand | 授予所有成员访问权 | 授予所有成员访问权 |
Products | Firefly 2、Firefly 4 | 授予所有成员访问权 |
Promotions | 授予所有成员访问权 | 授予所有成员访问权 |
Retailers | 授予所有成员访问权 | 授予所有成员访问权 |
Time | 授予所有成员访问权 | 授予所有成员访问权 |
Time (close date) | 授予所有成员访问权 | 授予所有成员访问权 |
Time (ship date) | 授予所有成员访问权 | 授予所有成员访问权 |
Sales order | 授予所有成员访问权 | 授予所有成员访问权 |
运行同一个报告(如图 24 所示)的输出表明,他们能够访问 Order Method 和 Products 分层结构的所有成员。在实际中,他们获得了一种权限组合,所以他们能够看到所有采用 E-mail 订购方法的 Lanterns 的度量值,他们能够看到 lanterns Firefly 2 和 Firefly 4 的所有订购方法的度量值。看到的 Fax 订购方法的总和值,没有反映用户能够访问的成员,因此 All 订购方法的总和与返回的 E-mail 的值不匹配。同样地,原因在于一个事实,即用户能访问订购方法的父方法或 All 级别,以及成员 Firefly 2 和 Firefly 4 的父成员或 Lanterns,返回的是它们的聚合值,而不是用户可看到的成员的总和。
图 24. 组合 Order method 和 Products 安全视图的报告输出
IBM Cognos Dynamic Cubes 红皮书 的 7.8.1 节描述了上述看到的行为,即可看到成员但看不到度量值。这是因为,事实上每个安全视图中都有一些成员是其他视图中无法看到的。在最终的组合安全视图中,应返回值的元组的结果为 ERR 。有关组合安全性的更多信息,请参阅 IBM Cognos Dynamic Cubes 红皮书 。