我的c#.net winforms应用程序使用sql server 2005 express,将由三个用户运行,&我想给出不同的用户ID和每个密码,所以在这种情况下,我应该使用SQL SERVER的哪些安全功能?
应用程序角色 - 可以应用程序 角色可用于此,或做 应用程序角色只提供一个 整体凭证 应用
为userids&创建一个表 密码
为每个用户创建新的登录信息 连接到sql server并授予 每次登录的权限
我的应用程序将安装在3台计算机上,服务器-SVR,客户端-c-1,c-2。所有在局域网上使用windows xp。
我可以为单个应用程序创建多个应用程序角色吗?我的意思是,如果我在申请表中有3个表格。所有3个表单都可以使用不同的应用程序
答案 0 :(得分:2)
您可以在SQL Server中创建角色,比如说YourAppSuperRole,YourAppNormalRole,YourAppReadOnlyRole,然后为每个角色授予对象权限,例如:在someAppSuperRole上为sometable授予插入。或者在someAppReadOnlyRole上选择sometable。然后,无论您在数据库中创建用户,无论他们是SQL Server用户还是域用户,都可以将用户添加到相应的角色。这就是你如何在数据库对象上实现安全性。如何处理GUI /表示层体验可以从后端断开连接。您可以识别Windows域用户,或创建应用程序用户并要求使用这些用户登录,然后相应地管理GUI行为。例如。您可以从已放入Readonly角色的用户中删除SAVE RECORD按钮。
编辑:我认为最简单的方法是使用Windows域用户。授予对后端域用户的db访问权限,并将这些用户添加到适当的后端角色(以确定他们可以在后端看到/更改的内容)。然后,在GUI中,将图形行为调整为正在使用您的应用程序的域用户。如果您没有从表单中删除“保存”按钮,则只读角色用户可以单击它,但更新将失败。因此,您通常不会为该用户提供明显的能力来执行他们无权执行的操作。答案 1 :(得分:0)
我猜你想让不同的用户运行具有不同角色的应用程序(权限和能力以及对应用中功能的访问权限)。
我不会使用SQL Server安全性来为它们提供不同的“应用程序角色”。只需为您的应用程序定义一个服务器用户然后使用某种方式识别用户(NTID,或使用数据库中的某些用户名/密码表登录),并使用它来配置他们在您的应用程序中的体验。