我有不同的 Active Directory 组和一个 BO Universe。不同的 Active Directory 组应该对 Universe 中的数据具有不同的受限访问权限。我该如何实施?(遗憾的是我在网上没有找到相应的教程或文档。)如果实现数据访问的方法不止一种,那么最佳实践是什么?谢谢。
问问题
2964 次
1 回答
3
在 Universe 中实现行级安全性有两种主要方法。一种是通过安全配置文件;另一个是通过@variable('BOUSER')
。
如果要在组级别应用安全性(即,组的所有成员都应应用相同的条件),则安全配置文件是合适的。IDT 用户指南的第 17 章对此进行了介绍。概括地说,这些步骤是:
- 从 IDT 启动安全编辑器
- 选择 Universe,并创建数据安全配置文件或业务安全配置文件(阅读文档了解两者之间的差异,但其中之一是使用 DSP,您将编写 WHERE 条件;使用 BSP,您选择对象并定义条件)
- 创建安全配置文件后,选择应应用到的组
- 对应该应用限制的每个组重复上述操作
应用行级安全性的另一种方法仅适用于数据源包含一个表,该表具有 BO 用户 ID 到他们可能有权访问的值的映射。例如,假设您的数据源中有一个安全表,如下所示:
user_id region
------- ------
U123 NE
U123 SE
U321 W
你的事实表看起来像:
pk region value
__ ______ _____
1 NE 3
2 W 4
您可以应用安全性,使用户 U123 只能看到“NE”行,而用户 U321 只能看到“W”行。您将连接区域 ( security.region=fact.region
) 上的两个表,然后在 上创建一个新的强制过滤器security.user_id=@variable('BOUSER')
。这将强制将过滤器应用于所有查询。
请注意,上述两种方法都是通过向查询的 WHERE 条件添加条件来工作的。如果您的用户有权查看和编辑查询的 SQL,他们将在上面覆盖过滤逻辑。为确保安全,用户应被剥夺此权利。
于 2013-11-07T15:52:33.280 回答