【问题标题】:Single Connection String with different user permissions in Azure App ServiceAzure 应用服务中具有不同用户权限的单个连接字符串
【发布时间】:2017-12-12 21:58:05
【问题描述】:

我有一个 azure 中的网络应用程序。

我的解决方案如下:

  1. MyApp.Web
  2. MyApp.WebjobTasks
  3. MyApp.WebjobAnotherTask

网络作业是网络应用程序的一部分。它们都共享相同的数据层以通过实体框架和 Azure 门户访问数据,当定义应用设置时,应用设置在所有项目 Web 应用和 Web 作业配置文件中被覆盖。

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

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

我怎样才能多样化呢?如果我将 Azure 门户中的连接字符串键更改为使用有权更改数据库的用户,那么这不是一个好的解决方案,即面向公众的应用程序将获得不必要的权限。

如果每个应用程序都应该在 Azure 门户中拥有自己的应用程序设置页面,那就太糟糕了。这样每个应用程序就可以运行不同的用户权限。

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

【问题讨论】:

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


    【解决方案1】:

    我建议不要即时更改connection string。这可能会产生竞争条件。

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

    使用不同的connection strings,如果需要,可以更轻松地将 web 作业迁移到另一个地方(即 Azure Functions 或其他),并且您的 web 作业被限制执行它们不允许执行的数据库操作,例如如果作业是创建用户仅用于清理审计日志。

    【讨论】:

    • 我也想过。但是连接字符串名称在 dbcontext 中是硬编码的。我需要更改所有以注入连接字符串名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    相关资源
    最近更新 更多