2009-09-21 55 views
4

我正在使用LinqToSQL和可信连接来处理数据库选择/更新/插入/删除。在过去,我一直使用存储过程,并且只授予对数据库中特定存储过程的应用程序池标识的执行权限。这是我的第一个LinqToSql项目(我真的很喜欢它有多大帮助)。我不希望授予应用程序池标识的dbo访问权限以使LinqToSql正常工作(但如果建议那么我不介意)。我可以授予应用程序池标识什么类型的权限,以便LinqToSql具有最低权限?或者我应该只使用dbo权限并完成它?SQL Server用户应授予LinqToSql什么权限?

按照KristoferA's answer这是我授予数据库的应用程序池标识的权限:
EXEC sp_addrolemember 'db_datareader', 'app_pool_identity'
EXEC sp_addrolemember 'db_datawriter', 'app_pool_identity'

不完全一样的安全级别为只授予执行权限所需的存储过程,但我考虑到我刚刚通过使用Linq2SQL获得的巨大发展收益,它非常好。这比授予完整的dbo访问要好。

回答

1

的db_datareader和db_datawriter是不够的,如果你只是想读取并没有与模式变化和东西乱搞写入数据...

0

LinqToSQL将创建动态生成的SQL。因此,它需要完全访问数据操作语言命令(插入,更新,删除)。您的应用程序帐户不应该需要访问数据定义语言命令(创建,删除,更改等)。