我的团队在内部部署了一项服务,该服务的一部分是存储在sql表中的客户帐户列表。 SSRS托管在另一台服务器上,我们有集成作业[最终]将这些客户帐户(以及其他信息)从我们的3个生产环境中提取到此SSRS数据库。
同样在这个SSRS数据库上,我正在创建一个新表,它将是域帐户和客户帐户的映射。我需要这个表,所以我可以根据登录用户可以看到的客户帐户来过滤我的报告。
到目前为止非常简单。
下一个要求是我需要限制对报告本身的访问。我知道我通常可以使用安全组来执行此操作,但这将导致两个单独的位置来管理一个资源的权限,这是我想要避免的。 我正在研究的解决方案是创建一个安全扩展来根据数据库验证登录用户,允许他们访问表中存在的文件夹/报告。进入后,我可以再次使用同一个表来过滤他们的结果。 我不确定的是1)这是否是最好的解决方案2)我是否可以在网站的MY部分使用安全扩展。本网站上有许多其他用户和报告,我没有处理,也不想与这些用户和报告发生冲突。
答案 0 :(得分:1)
您可以自动从AD填写数据库表吗?然后,您可以使用标准的Windows安全性,但仍然只在Active Directory中进行管理。
答案 1 :(得分:0)
您可以设置一个内部报表参数,称为UserID,并将其默认值设置为非查询表达式=User!UserID
。 (可以从“编辑表达式”对话框中的全局变量列表中选择此用户ID。)
然后,您可以在查询中的users表中添加笛卡尔/交叉联接,并根据内部报表参数选择条件 - 例如。 ...... and UserTable.ID = @UserID
。这将确保如果未经授权的用户正在运行报告,则不会返回任何记录。
请注意,User!UserID
字段仅返回交互式运行报告的用户 - 在预定报告中,这将是计划服务的帐户。
答案 2 :(得分:0)
您无法使用安全组(在其自己的文件夹或报告级别权限中)限制对报告的访问。在数据源连接中使用Windows身份验证并使用sql函数ORIGINAL_LOGIN过滤报告检索用户名?