是否可以人为地将用户的 sql 权限限制为仅对来自应用程序的任何连接读取?



我对我正在构建的应用程序的安全性有一个问题...这是Crystal Report的查看器的包装器,可为用户提供一些其他功能。

有许多内部用户具有创建/修改Crystal Reports的能力。我已经进行了一些测试,并且对于与各种数据源相连的应用程序的应用程序,似乎并不在乎安全地做到这一点。没有什么可以阻止我修改现有的水晶报告,使每个人都相信将其陷入恶意和有害的东西。它只需要一个添加的命令表,其中包括以下SQL:

DELETE FROM tbl_Employees; SELECT FROM tbl_Employees;

实际上,您可以在用户有权执行的Crystal报告中执行任何操作……只要以选择结束。这使我提出了我的问题:我有什么办法可以确保我的应用程序限制与我们的SQL Server的任何连接以选择?我不能暂时修改用户凭据,也不能仅使用单个读取帐户,因为我仍然需要将用户限制为其正常权限(即他们可以查询哪些数据库)。

我不是很有希望,因为我没有读过的任何东西都使我相信我可以以这种方式限制联系。

另一方面,大多数提出报告的人可能会采取更直接的方法来破坏我们的数据,如果他们倾向于……但是我几乎不认为这是一个很好的借口,不尽我所能确保我的应用程序尽可能安全。我似乎找不到任何可行的答案。

您应该使用只读帐户来报告目的 - no例外!让帐户访问选定的表和视图和exec and Exec and Excect and Exec通过同义词暴露)。避免使用程序,如果可能的话 - 它们通常是不必要的,您可以无意间让用户访问修改数据库的过程(我遇到的客户的经验)。

**编辑**

我想这也取决于如何表示敏感数据。

运行报告时,您将在记录选择公式中添加一个行级过滤器。

如果敏感数据包含在少数表中,则可以使用基于角色的安全性(用户添加到组;分配给组的角色)。

如果您使用的是BusinessObjects Enterprise,则可以使用宇宙来控制数据安全。BusinessViews也是一个选择;它们是支持动态/级联参数的原始(BusinessObjects和SAP)语义层,但已定于过时。

好吧,我将其作为答案,因为我仍然无法发布全局评论,但这是一个可以以某种方式帮助您的想法(我希望)。

我在SQL Server上没有像Oracle DBS一样的经验。在Oracle DBS中,对于每个用户,您都有自己的空间。每个用户只能读取并修改其空间内(架构)(架构)的DB对象(表格和其他内容),这也不例外。然后,您可以将每个用户的访问权限授予其自己的模式之外的特定对象,这是一个合格的访问(例如"仅读取"," Just Update"等)。为了使维护这些赠款变得更容易,您可以创建角色,这基本上是一个可以分配给特定用户的命名赠款组。

好吧,我很确定这对您来说是什么新鲜事通过(非常安全)控件访问信息(表)。

我很确定,在SQL Server中,除了较小的差异外,您还可以执行相同的策略。希望这能引导您解决一些问题...

最新更新