Нужны ли мне права SQL Server db_ddladmin для подхода Entity Framework Code-First, и это проблема безопасности?
У нас есть внешний проект, который был разработан с использованием C# и Entity Framework 6 Code First вместе с SQL Server 2014. Он имеет веб-сайт и службу wcf.
Теперь для развертывания проект-подрядчик заявил, что пользователю IIS APPOOL, под которым работает веб-сайт, потребуется членство в db_datareader, db_datawriter и db_ddladmin, чтобы оно работало, и, действительно, без предоставления этих прав это не сработало.
У меня есть определенные проблемы с этим, потому что, не будучи SQL-гуру, я чувствую, что для развертывания не нужны права db_ddladmin, в то время как подрядчик говорит, что это совершенно нормально с EF Code First и не видит проблемы. Поиск в сети также показывает, что эти права могут быть проблематичными ( http://akawn.com/blog/2012/02/why-you-should-be-cautious-with-the-dbo_owner-role/), которые также указал бы мне, что было бы немного безумно, что EF Framework Code First действительно будет нуждаться в этих правах...
Так мне нужен db_ddladmin для EF Code First? И проблематично ли, что развернутому веб-проекту нужны права доступа к базе данных db_ddladmin?
Заранее спасибо!
1 ответ
Это действительно возможная болевая точка. Entity Framework предполагает, что у вас есть db_ddladmin
права на миграцию. Это не требует этого разрешения на любом другом этапе.
Есть несколько способов справиться с этим. Вы можете либо дать разрешения, запустить миграцию, затем удалить разрешение, либо вы можете экспортировать сценарий SQL и запустить его на своем сервере, например так: Update-Database -Script -SourceMigration:0
(сценарий от начала до текущего состояния). При любом будущем развертывании миграции вам потребуется выполнить те же действия, начиная с текущего значения миграции сервера или добавляя / удаляя разрешение.