我正在使用 LinqToSQL 和可信连接来处理数据库选择/更新/插入/删除。过去,我一直使用存储过程,并且只授予数据库中特定存储过程的应用程序池标识的执行权限。这是我的第一个 LinqToSql 项目(我真的很喜欢它的帮助)。我不希望授予 dbo 对应用程序池身份的访问权限以使 LinqToSql 工作(但如果建议这样做,那么我不介意)。我可以向应用程序池身份授予什么类型的权限,以便 LinqToSql 拥有最低权限?还是我应该只使用 dbo 权限并完成它?
根据KristoferA 的回答,这是我在数据库中授予应用程序池身份的权限:
EXEC sp_addrolemember 'db_datareader', 'app_pool_identity'
EXEC sp_addrolemember 'db_datawriter', 'app_pool_identity'
与仅授予必要的存储过程执行权限的安全级别不完全相同,但考虑到我仅通过使用 Linq2SQL 就获得了巨大的开发收益,我对此非常满意。这比授予完整的 dbo 访问权限要好。