Azure App Service中具有不同用户权限的单个连接字符串

时间:2017-12-12 12:27:56

标签: c# azure azure-webjobs azure-web-app-service azure-application-settings

我有一个天蓝色的网络应用程序。

我的解决方案如下:

  1. MyApp.Web
  2. MyApp.WebjobTasks
  3. MyApp.WebjobAnotherTask
  4. webjobs是Web应用程序的一部分。它们共享相同的数据层以通过Entity Framework和Azure门户共享数据,当定义应用程序设置时,应用程序设置将覆盖所有项目Web应用程序和Web作业配置文件。

    所有项目都有一个连接字符串键作为“DefaultConnection”,用于同一个数据库。

    但是我想改变用户(具有更多管理权限)的用户。所以Webjob应该能够ALTER / Truncate表,而MyApp.Web应该只有db_datareader和_db_datawriter角色。

    我怎么能多样化这个?如果我更改Azure门户中的连接字符串键以使用具有更改数据库权限的用户,那么这不是一个很好的解决方案,公共面临的应用程序将被赋予不必要的权限。

    每个应用程序在Azure门户中都应有自己的“应用程序设置”页面,这样做并不好。这样每个应用程序都可以运行不同的用户权限。

    有没有更好的方法来实现这一目标?或者我应该为webjobs的app.config添加新的用户和密码密钥,并在运行内务工作之前读取这些密钥以更新连接字符串?

1 个答案:

答案 0 :(得分:1)

我建议不要动态更改connection string。这可能会造成竞争条件。

如果他们有不同的职责,我建议为这些网络工作添加额外的connection strings。但是,如果您当前没有注入DbContext,则可能需要额外的connection string创建逻辑。

使用不同的connection strings,如果需要,可以更轻松地将Web作业迁移到其他位置(例如Azure功能或其他任何位置),并且限制您的Web作业执行数据库操作,如果不允许这样做,例如创建用户job仅用于清理审计日志。

相关问题