c# - Azure 应用服务中具有不同用户权限的单个连接字符串

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

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

我的解决方案如下:

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

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

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

但我想更改网络作业的用户(具有更多执行内务管理的权限)。因此,Webjob 应该能够更改/截断表,而 MyApp.Web 应该只有 db_datareader 和 _db_datawriter 角色。

我该如何多样化?如果我更改 Azure 门户中的连接字符串 key 以使用有权更改数据库的用户,那么这不是一个好的解决方案,面向公众的应用程序将被授予不必要的权限。

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

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

最佳答案

我建议不要即时更改连接字符串。这可能会产生竞争条件。

如果这些网络作业具有不同的职责,我建议为它们添加额外的连接字符串。但是,如果您当前没有注入(inject)连接字符串,则这可能需要额外的逻辑来创建DbContext

使用不同的连接字符串,如果需要,可以更轻松地将 Web 作业迁移到另一个地方(即 Azure Functions 或其他),并且您的 Web 作业被限制执行不允许执行的数据库操作,如果作业仅设计用于清理审核日志,则类似于创建用户。

关于c# - Azure 应用服务中具有不同用户权限的单个连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47772666/

相关文章:

c# - MSBuild 不会将直接引用的 dll 复制到 bin 文件夹

json - 部署模板解析失败 : 'Required property ' type' not found in JSON. 路径 '',行,位置。'。 (代码:无效模板)

c# - 在 Azure AD b2c 中创建新用户错误 : Another object with the same value for property proxyAddresses already exists

azure - 按计划从 VS2013 部署 Azure webjob

c# - 服务总线触发 azure webjob

c# - 模拟界面没有意义?

c# - .NET 核心 : HttpClientFactory: How to configure ConfigurePrimaryHttpMessageHandler without dependency injection?

c# - 使用 C# 在 ASP.Net 中下载文件

Azure 认知 : Supplied language not supported

azure-web-app-service - 在 Azure WebApps(以前的网站)中,我可以获得运行的实例数量吗?