首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在TSQL中处理安全性

在TSQL中处理安全性
EN

Stack Overflow用户
提问于 2015-03-22 08:48:17
回答 4查看 72关注 0票数 0

在SSRS中,我遇到了一些行级安全性的挑战,这涉及运行一些SQL逻辑来根据简单的安全模型过滤返回的结果集。

  1. 我获取当前用户的用户名,并将其与部门列表相匹配。每个用户只会看到其审批路径上的部门。这一点很容易,而且工作得很好。
  2. 在金融业务领域有许多用户,这些人需要绕过安全模型,查看每个部门。该查询只需选择每个部门,而不考虑当前用户。

我的问题是,如何可选地将两者都包括在内,从而使财务用户看到所有的东西,而其他人只看到自己的部门?

这听起来很简单,但我正在努力想出最好的方法&最简单的方法,我的搜索结果已经变得毫无意义,因为很难知道问谷歌的正确问题,等等。

解决方案既可以在数据查询中完成,也可以在SSRS本身中完成,但是我不能回去修改数据库--我必须使用我所拥有的。

数据结构概述.

USER表有user_iddepartmentDEPT表有departmentbusiness area

金融是一个包含多个部门的业务领域。

任何拥有部门的用户都必须能够看到所有部门和业务领域。

我希望这件事足够彻底,有人能给我一个正确的方向。它可能正盯着我的脸,但我有很大的时间压力,所以不可能永远花在它上。谢谢!

EN

回答 4

Stack Overflow用户

发布于 2015-03-22 13:23:45

代码语言:javascript
复制
select distinct table.col1, table,col2  
  from table 
  join user 
    on ( user.ID = 'userone' and department.area = 'finance' )
    or ( user.ID = 'userone' and department.dept = user.dept' )
票数 1
EN

Stack Overflow用户

发布于 2015-03-23 20:22:27

最简单的方法是拥有一个UserDepartment表,并在添加财务用户时简单地添加所有部门。并设置它,以便部门表有一个触发器来向所有财务用户添加任何新部门。

这使得查询变得很简单,它为您提供了添加其他用户的灵活性,如果您以后需要的话,其他用户可以看到的比他们的部门更多。它还避免了具有OR条件复杂逻辑的各种性能较差的查询。

票数 0
EN

Stack Overflow用户

发布于 2015-03-26 15:14:06

在SSRS中有非常简单的处理方法。

在报告中包含两个数据集。一个没有过滤器。还有一个有限制的,在

代码语言:javascript
复制
username = @CurrentUserName

您可以使用SELECT SUSER_NAME()获取当前用户的用户名。将其存储在参数@CurrentUserName中。

将两个表放在相同的位置,从上面的两个数据集中获取资源。

对于下一部分,您需要了解SSRS中的“隐藏”属性。查找当前用户名。如果它属于“Finance”,则不受任何限制地显示该表,并隐藏另一个表。如果没有,请隐藏第一个表并显示第二个(筛选)表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29192507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档