我是否需要实体框架代码优先方法的 SQL Server db_ddladmin 权限,这是否是一个安全问题

本文关键字:是否是 权限 ddladmin 安全 问题 一个 db 实体 框架 是否 代码 | 更新日期: 2023-09-27 18:33:06

我们有一个外部项目,它是使用C#和Entity Framework 6 Code First和SQL Server 2014开发的。它有一个网站和一个WCF服务。

现在,对于部署,项目承包商表示,运行网站的IIS APPOOL用户将需要成员资格才能db_datareader,db_datawriter和db_ddladmin才能工作,实际上,如果不授予这些权利,它就不起作用。

我对此有一些问题,因为如果没有成为 SQL-Guru,我觉得部署不应该需要db_ddladmin权限,而承包商说这在 EF Code First 是完全正常的并且没有看到问题。在网上搜索似乎也揭示了这些权利可能存在问题(http://akawn.com/blog/2012/02/why-you-should-be-cautious-with-the-dbo_owner-role/(,这也向我表明,EF 框架 Code First 真的需要这些权利有点疯狂......

那么我是否需要先db_ddladmin EF 代码?部署的 Web 项目需要db_ddladmin的数据库访问权限是否存在问题?

提前感谢!

我是否需要实体框架代码优先方法的 SQL Server db_ddladmin 权限,这是否是一个安全问题

这确实是一个可能的痛点。 实体框架假定您具有db_ddladmin迁移权限。 它在任何其他阶段都不需要此权限。

有几种方法可以解决这个问题。您可以授予权限,运行迁移,然后删除权限,也可以导出 SQL 脚本并针对服务器运行它,如下所示:Update-Database -Script -SourceMigration:0(从开始到当前状态的脚本(。 任何将来的迁移部署都需要您执行相同的步骤,从服务器的当前迁移值开始,或者添加/删除权限。