我的 SQL Server 2005 DB 需要什么权限才能成为 WebUser?

我的 SQL Server 2005 DB 需要什么权限才能成为 WebUser?

我的 asp.net 代码中有一个连接字符串,用于查看 SQL Server 2005 数据库。我创建了一个名为 WebUser 的用户名,并在 SQL Server 2005 中授予他 db_datawriter 和 db_datareader。在登录名和数据库下,用户都必须能够读取并进行更新?这是我所需要的全部内容还是正确的做法?

连接字符串将如下所示。

<add name="ConnectionStringName" connectionString="DataSource=localhost;
 Initial Catalog=DBName;User ID=WebUser; Password=mypassword; 
 Integrated Security=FALSE" 
 providerName="System.Data.SqlClient"/>
</connectionStrings>

答案1

如果您愿意冒着数据库被黑客下载或删除的风险,那么是的,这就是您需要做的全部。

如果您希望数据库免受各种攻击,那么您将需要创建存储过程来处理数据库中所有数据的插入、更新和删除,然后调用这些存储过程而不是直接访问表。

然后从 db_datareader 和 db_datawriter 固定数据库角色中删除用户。创建一个新角色(您可以随意命名)并让您的用户成为该角色的成员。然后授予该角色对数据库中所有存储过程的执行访问权限。授予角色(或用户)运行存储过程的权限的代码是:

GRANT EXEC ON {ProcedureName} TO {User Or Role Name}

答案2

如果您能做到这一点,mrdenny 的评论非常正确。如果您从头开始开发系统,请使用 SP 并且不要授予对基表/视图的访问权限。

在许多情况下,这不是一个可行的解决方案。如果您的应用程序需要访问基表/视图,请确保它是最小权限。对架构使用单独的权限,而不是 db_datareader 和 db_datawriter。

您的应用程序应该在仅限应用程序的 Windows 登录下运行,并且可能需要被授予对该模式的 SELECT、INSERT、UPDATE、DELETE、EXECUTE 和 REFERENCES 权限。

如果您只需要访问用于报告的表/视图,请在不同的用户下运行报告并授予用户的CRUD权限。

相关内容