C# 您是否允许用户访问您的数据库,或者是否使用共享用户名执行查询

C# 您是否允许用户访问您的数据库,或者是否使用共享用户名执行查询,c#,database,C#,Database,我正在构建一个C#应用程序,它需要与数据库对话——我已经编写了一个模块,检查用户是否获得了适当的权限,然后使用共享用户名运行查询 这意味着许可是在C#中完成的 我现在想知道这是否是一个好主意,是否应该在数据库级别应用权限,即每个用户使用自己的用户名和帐户进行设置。不这样做的原因是,我们不是DBA,没有添加用户 在数据库级别而不是c#级别授权用户有什么好处和问题?我总是使用为我的应用程序设置的数据库登录/用户设置 通过这样做,我可以在一个可能与其他应用程序共享的数据库中合理安全地运行——我的应用程

我正在构建一个C#应用程序,它需要与数据库对话——我已经编写了一个模块,检查用户是否获得了适当的权限,然后使用共享用户名运行查询

这意味着许可是在C#中完成的

我现在想知道这是否是一个好主意,是否应该在数据库级别应用权限,即每个用户使用自己的用户名和帐户进行设置。不这样做的原因是,我们不是DBA,没有添加用户


在数据库级别而不是c#级别授权用户有什么好处和问题?

我总是使用为我的应用程序设置的数据库登录/用户设置

通过这样做,我可以在一个可能与其他应用程序共享的数据库中合理安全地运行——我的应用程序可以被授予它访问所需对象所需的权限

这将用户与数据库分离—这意味着用户Jane Doe不需要获得数据库上的特定权限就可以使用我的应用程序,DBA喜欢我的应用程序,因为这也意味着她不能启动SQL Management Studio并开始查看表(因为她没有权限)

编辑:请注意,没有必要为每个用户提供登录以审核做出更改的用户-我的应用仍然可以作为一个(受限)用户登录,并且我可以将用户的计算机/用户名传递到我正在调用的任何存储过程中,以便记录数据更改


您当然可以在数据库上设置一个组,并为该组分配正确的权限,但这意味着您必须根据需要从该组中添加/删除用户,这可能是一个管理麻烦。

数据库中的数据有多重要?可审核性(记录谁更改了数据、更改了什么以及何时更改)重要吗

如果您的C#程序所做的只是读取数据,并且数据是公开的,那么您所做的一切都是好的。这正是在一个用户不需要登录的网站上发生的事情,所有查询都是从同一个用户运行的

对于高安全性、任务关键型应用程序,在代码中滚动您自己的安全性很少是一个好主意,最好利用内置于操作系统中的安全系统


您的计算机是域的一部分吗?您是否使用?如果是这样,您可能需要考虑使用Windows身份验证和组。< /P>数据是敏感的,这就是问题所在——在C代码中使用DB组与允许数据的利弊是什么。哦,那么如何允许只插入一个单元格:-)