1

私は青いところにWebアプリケーションを持っています。Azure Appサービスで異なるユーザー権限を持つ単一の接続文字列

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

webjobsは、Webアプリケーションの一部である:

私のソリューションは、以下のものです。アプリケーション設定が定義されている場合、エンティティフレームワークとAzureポータルでデータにアクセスするために、すべて同じデータレイヤーを共有します。アプリケーション設定は、すべてのプロジェクトWebアプリケーションおよびWebジョブ設定ファイルでオーバーライドされます。

すべてのプロジェクトには、同じデータベースに対する「DefaultConnection」という接続文字列キーがあります。

しかし、私はwebjobsのために(ハウスキーピングを行うより多くの特権を持っている)ユーザーを変更したいと思います。 WebJobはテーブルをALTER/Truncateできるはずですが、MyApp.Webはdb_datareaderと_db_datawriterロールしか持たないはずです。

どうすればこのことができますか? Azureポータルの接続文字列キーを変更してデータベースを変更する権限を持つユーザーを使用すると、公開されているアプリケーションに不要な権限が与えられるという良い解決策ではありません。

各アプリケーションがAzureポータルで独自のApp Settingsページを持っているといいわけがありません。そのため、各アプリケーションは異なるユーザー権限を実行できます。

これを実現する方法はありますか?または、WebJobのapp.configに新しいユーザーとパスワードのキーを追加し、ハウスキーピングジョブを実行する前にそれらのキーを読み取って接続文字列を更新する必要がありますか?

答えて

1

connection stringをオンザフライで変更することをお勧めします。競合状態が発生する可能性があります。

これらのウェブジョブに別の責任がある場合は、connection stringsを追加することをお勧めします。ただし、現在connection stringを注入していない場合は、DbContextの作成に余分なロジックが必要になることがあります。

異なるconnection stringsを使用すると、Webジョブを別の場所(つまりAzureファンクションなど)に移行することが容易になります。必要な場合はWebジョブが許可されていないDB操作を制限されます監査ログを消去するように設計されています。

+0

私もそれについて考えました。しかし、接続文字列名はdbcontextにハードコードされています。私は接続文字列名を注入するためにすべてを変更する必要があります。 – akd

関連する問題