Sql server 2008 EF或存储过程安全性

Sql server 2008 EF或存储过程安全性,sql-server-2008,entity-framework,Sql Server 2008,Entity Framework,我试图说服我的团队使用类似ORM层的实体框架,而不是使用从存储过程创建数据表的老式方法 他们认为存储过程更安全,因为您可以确保修改数据库的唯一方法是通过存储过程。我们拥有数据库,应用程序可以在内部构建,也可以由第三方构建 担心的是,如果我们使用实体框架,我们将不得不放松数据库的安全性,第三方可能会开始编写代码来直接修改数据库 您能告诉我们是否可以控制数据库的安全性,这样数据库只能由EF修改,而不能直接修改吗。或者如果我们可以控制EF,使EF只能进行选择,而不能进行插入或删除 抱歉,如果我听起来有

我试图说服我的团队使用类似ORM层的实体框架,而不是使用从存储过程创建数据表的老式方法

他们认为存储过程更安全,因为您可以确保修改数据库的唯一方法是通过存储过程。我们拥有数据库,应用程序可以在内部构建,也可以由第三方构建

担心的是,如果我们使用实体框架,我们将不得不放松数据库的安全性,第三方可能会开始编写代码来直接修改数据库

您能告诉我们是否可以控制数据库的安全性,这样数据库只能由EF修改,而不能直接修改吗。或者如果我们可以控制EF,使EF只能进行选择,而不能进行插入或删除

抱歉,如果我听起来有点含糊不清,但我不是很擅长数据库安全方面。我们正在使用SQLServer2008


谢谢

数据库安全仍保留在数据库中。您仍然可以控制用户是否只能选择数据或执行任何其他操作。这与EF无关

使用EF,您甚至可以使用当前模型—您可以映射存储过程(仅允许使用EDMX)以对每个实体执行更新、插入和删除操作,并且只允许选择数据和执行这些映射的存储过程。如果需要额外的安全级别,甚至可以将数据库视图映射到EF,并使用映射的存储过程进行插入、删除和更新,而不允许直接访问数据库表


顺便说一句,每个连接到数据库的用户/角色都可以控制数据库安全性,因此您的应用程序可以拥有与第三方应用程序不同的权限。

不,您不能使不受信任的应用程序受信任。应用程序只是向数据库发送SQL字符串,即使在使用EF时也是如此。SQL Server对EF一无所知。它无法确定是否使用了EF

我会通过代码检查和数据库权限来解决这个问题。

找到了一个有用的链接:


你是说第三方没有访问数据库的权限,这会让他们现在修改基础数据吗?所以没有dbo/admin/sa?谢谢Ladislav,实际上这是一个新的数据库,显然,为了提供这种额外的安全性,我们必须编写许多存储过程。我正在创建服务层,其中包含EF。第三方正在使用此服务库创建web应用程序。是否可能我对EF使用了连接字符串,而web应用程序对EF使用了不同的连接字符串,即他们使用了不同的用户,权限较低?否,一旦他们使用了您的库,他们就可以完全控制连接字符串。这样他们就可以和你的图书馆一样使用了。谢谢。你能详细说明什么样的数据库权限吗?