SQL Server用户的权限有限

时间:2012-03-13 06:35:03

标签: sql-server sql-server-2008 ssms user-permissions

我有一个.NET应用程序,它连接到SQL Server 2008以存储一些数据。我使用SQL Server身份验证为app.config文件中的最终用户提供sq用户名和密码。如果需要更改某些内容,我会向最终用户提供其他一些凭据。

如何限制sql用户只有读/写数据和执行现有存储过程的权限以及其他禁止的内容? 为应用程序用于连接数据库的sql用户设置permisions的最佳实践是什么?我可以以某种方式阻止用户登录Management Studio并弄乱我的数据吗? 我不是在寻找完美的100%可靠解决方案,而是最好的现有做法。非常感谢你提前。

更新:我在共享托管SQL Server环境中工作。

3 个答案:

答案 0 :(得分:4)

您需要创建一个新的SQL用户,例如'LimitedUser'。要在SSMS中执行此操作,请选择正在使用的服务器的安全性文件夹,右键单击,选择“新建”,然后选择“登录”。

选择您的身份验证类型(轻松管理SQL Server身份验证),并将Default数据库设置为您的数据库。

您需要设置服务器角色,以便此新用户仅映射到您的数据库,并在最后一页(状态)中将Login设置为false,这样他们就无法使用这些凭据登录SSMS并“弄乱您的数据”。

点击确定,您就完成了创建受限用户的工作。

将其分配给您的数据库,然后在SSMS中,右键单击您的数据库,选择“属性”,“权限”。

选择您的用户或角色,并在下面的权限网格中,仅启用需要打开的内容。

答案 1 :(得分:0)

如我所见,您的问题完全与SQL服务器安全性有关。

您可以使用GRANT语句,服务器或database roles限制服务器,数据库或对象范围的用户权限。例如,您可以为user分配db_datareader角色,然后为该用户授予某些存储过程(或整个数据库)的EXECUTE权限。

我的组织目前的做法是创建数据库角色(例如应用程序管理员,操作员等),为这些角色添加适当的权限,然后将这些角色分配给数据库用户。

我不完全确定您可以阻止登录到SQL Server Managent studio(SSMS),但是SSMS不会显示对于具有用户当前权限的用户必须是不可见的信息。

答案 2 :(得分:0)

在多个客户之间共享单个实例的共享SQL Server托管与典型的客户端 - 服务器应用程序不兼容。您需要通过中间层服务器(如WCF数据服务)执行所有操作,并在具有表单身份验证等的表中维护数据库中的用户帐户。

对于您的客户端 - 服务器应用程序,您需要使用自己的SQL Server实例进行VPS托管,您可以在其中创建服务器级别的登录。在不创建服务器级别登录的情况下,有方法来保护客户端 - 服务器应用程序。任何变通方法都只是伪安全性。