我使用LinqToSQL和可信连接来处理数据库选择/更新/插入/删除。在过去,我一直使用存储过程,并且只为数据库中的特定sproc授予应用程序池标识的执行权限。这是我的第一个LinqToSql项目(我真的很喜欢它有多大帮助)。我宁愿不授予对应用程序池标识的dbo访问权限以使LinqToSql正常工作(但如果这是建议那么我不介意)。我可以向应用程序池标识授予哪种类型的权限,以便LinqToSql具有最低权限?或者我应该使用dbo权限并完成它?
根据KristoferA's answer,这是我在数据库中授予应用程序池标识的权限:
EXEC sp_addrolemember 'db_datareader', 'app_pool_identity'
EXEC sp_addrolemember 'db_datawriter', 'app_pool_identity'
与仅为必要的sprocs授予执行权限的安全级别不完全相同,但考虑到我通过使用Linq2SQL实现的巨大开发收益,我对此非常满意。它比授予完整的dbo访问权限更好。
答案 0 :(得分:1)
db_datareader和db_datawriter就足够了,如果您只是想读取和写入数据而不需要处理架构更改和内容......
答案 1 :(得分:0)
LinqToSQL创建动态生成的SQL。因此,它需要完全访问数据操作语言命令(插入,更新,删除)。您的应用程序帐户不需要访问数据定义语言命令(创建,删除,更改等)。