MS Azure でマルチテナント SaaS アプリを構築しています。これにより、顧客は独自の Azure テナントを私たちに持ち込むことができ、そのデータを監査することができます。このためのアクセス許可を取得するために、お客様のテナントのグローバル管理者がアプリにアクセス許可を付与する標準的な同意フローを採用しています。
共有ポイント ファイルやユーザー/グループなどのテナントのデータを操作する場合、このアプローチは問題ありませんが、最近、顧客のAzure サブスクリプションで監査ログを読み取る必要があります (VM の作成/削除のイベント、ストレージの操作など)。アカウントなど)。これを実装するために、Azure Monitor API (以前の Azure Insights API): https://msdn.microsoft.com/en-us/library/azure/dn931943.aspxを使用します。
問題は、Microsoft が提供する同意フレームワークには、Azure サブスクリプションのデータにアクセスするためのロールを割り当てるメカニズムがないように見えることです。プリンシパルを使用してデータを読み取ろうとすると、次のエラーが発生します。
オブジェクト ID 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' を持つクライアント 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' には、スコープ '/subscriptions でアクション 'microsoft.insights/eventtypes/values/read' を実行する権限がありません/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.
現時点では、Azure ポータル ( https://docs.microsoft.com/en-us/azure /resource-group-create-service-principal-portal、「アプリケーションをロールに割り当てる」部分)、手動の手順は避けたいと思います。
これをよりエレガントな方法で解決する方法はありますか?