【发布时间】:2016-11-30 15:25:48
【问题描述】:
我有一个用 C# 编写的具有 SQL Server 后端的应用程序。我们将让高级用户能够通过针对系统数据库编写和执行他们自己的 SQL 脚本来创建报告。
现在,很明显,我不能使用系统用于连接的 SQL Server 用户,因为用户很容易能够修改数据库中的数据。我知道我不能强制从 C# 应用程序以只读方式打开连接,因此我必须使用对数据库具有只读权限的用户。
我正计划测试与报告目的连接的用户是否具有对数据库的只读访问权限。如果访问是只读的,则将执行查询,否则将拒绝执行。如何从 C# 应用程序或使用 T-SQL 进行测试?
【问题讨论】:
-
这实际上取决于您如何实现应用程序的安全性。例如,您可以自己滚动并使用只读帐户(或组)。您可以使用 SQL 的安全性并捕获异常。如果您使用的是那里管理的 SSRS,如果您正在使用它的接口。如果可能的话,我喜欢使用内置的安全性并寻找各种异常。
-
我想指出这是一个非常非常糟糕的主意。您实际上是在为“高级用户”提供使您的数据库服务器因编写不佳的查询而瘫痪的能力。
-
Kevin:会的,但是少数被允许执行这些查询的人知识渊博,足以知道他们在做什么。此外,即使查询(这将相当简单)选择整个数据库中的所有数据,我们在系统中的任何时候都没有可能损害性能的大量数据。我想要的只是确保超级用户选择的连接具有只读访问权限。
标签: c# sql-server database tsql access-rights