Одна строка подключения с разными разрешениями пользователя в службе приложений Azure

У меня есть веб-приложение на лазурном.

Мое решение что-то ниже:

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

Веб-задания являются частью веб-приложения. Все они используют один и тот же слой данных для доступа к данным с помощью Entity Framework и на портале Azure, когда параметры приложения определены, параметры приложения переопределяются во всех файлах конфигурации веб-приложения и веб-заданий проекта.

У всех проектов есть ключ строки подключения как DefaultConnection для одной и той же базы данных.

Но я хотел бы сменить пользователя (который имеет больше привилегий на ведение домашнего хозяйства) для веб-заданий. Таким образом, Webjob должен иметь возможность ALTER/Truncate таблиц, тогда как MyApp.Web должен иметь только роли db_datareader и _db_datawriter.

Как я могу разнообразить это? Если я изменю ключ строки подключения на портале Azure, чтобы использовать пользователя, у которого есть разрешение на изменение базы данных, то это не очень хорошее решение, так как общедоступному приложению будут предоставлены ненужные разрешения.

Не хотелось бы, чтобы у каждого приложения была своя страница настроек приложения на портале Azure. Чтобы каждое приложение могло запускать разные пользовательские разрешения.

Есть ли лучший способ добиться этого? Или я должен добавить новые ключи пользователя и пароля в app.config для веб-заданий и прочитать эти ключи, чтобы обновить строку подключения перед выполнением служебных заданий?

1 ответ

Советую не менять connection string на лету. Это может создать условия гонки.

Я бы предложил добавить дополнительные connection strings для тех веб-рабочих мест, если у них разные обязанности. Это, однако, может потребовать дополнительной логики для вашего DbContext создание, если вы в настоящее время не вводите connection string,

С разными connection strings легче перенести веб-задание в другое место (например, функции Azure или что-либо еще), если это необходимо, и ваши веб-задания ограничены в выполнении операций с БД, которые они не могут выполнять, например, создание пользователей, если задание предназначено только для очистки журнала аудита.

Другие вопросы по тегам