事例研究7 - Proseware, Inc.
背景
あなたはProseware社の開発者です。Proseware社の内部サービス、外部サービス、およびアプリケーションに一連のガバナンスポリシーを適用するアプリケーションを開発しています。このアプリケーションは、共通機能のための共有ライブラリも提供します。
要件
ポリシーサービス
「ポリシー サービス」という名前のステートフルな ASP.NET Core 2.1 Web アプリケーションを開発し、Azure App Service Web アプリにデプロイします。このアプリケーションは、Azure Event Grid からのイベントに反応し、それらのイベントに基づいてポリシー アクションを実行します。
アプリケーションは、すべての Application Insights テレメトリに Event Grid イベント ID フィールドを含める必要があります。
ポリシーサービスは、実行するポリシーアクションの数に応じて自動的にスケーリングするために、Application Insightsを使用する必要があります。
ポリシー
ログポリシー
すべての Azure App Service Web アプリは、ログを Azure Blob ストレージに書き込む必要があります。すべてのログ ファイルは、logdrop という名前のコンテナーに保存する必要があります。ログは、コンテナー内に 15 日間保持する必要があります。
認証イベント
認証イベントは、ユーザーのサインインとサインアウトを監視するために使用されます。すべての認証イベントは、ポリシーサービスによって処理される必要があります。サインアウトは、できるだけ迅速に処理されなければなりません。
ポリシーライブラリ
PolicyLib という名前の共有ライブラリがあり、このライブラリにはすべての ASP.NET Core Web サービスおよびアプリケーションに共通する機能が含まれています。PolicyLib ライブラリは次の要件を満たす必要があります。
* Application Insightsのテレメトリから、ユーザー以外の操作を除外します。
* Webサービスが自身をスケーリングできるようにするメソッドを提供する
* スケーリング操作がアプリケーションの使用を妨げないようにする
他の
異常検知サービス
ログ情報を分析して異常を検出する異常検知サービスがあります。これはAzure Machine Learningモデルとして実装されており、Webサービスとしてデプロイされています。
異常が検出された場合、HTTP Webhookを使用して管理者にメールを送信するAzure Functionが呼び出されます。
健康状態のモニタリング
すべてのWebアプリケーションとサービスは、/healthサービスエンドポイントでヘルスモニタリング機能を備えています。
保険金損失
ポリシーサービスをデプロイする際、デプロイ中に適用処理中だったポリシーは適用されない場合があります。
パフォーマンスの問題
負荷が高い場合、異常検知サービスは処理速度が低下し、接続を拒否します。
通知遅延
ユーザーからは、異常検知メールが異常検知から数分後に届くことがあるとの報告がある。
アプリファイルの関連部分を以下に示します。行番号は参考のために記載されており、各行番号には、該当するファイルを示す2文字の接頭辞が付いています。


アプリファイルの関連部分を以下に示します。行番号は参考のために記載されており、各行番号には、該当するファイルを示す2文字の接頭辞が付いています。

ドラッグアンドドロップ問題
ログポリシーがすべてのサービスに適用されるようにするには、EventGridController.cs の EG15 行目にコードを追加する必要があります。
コードを完成させるにはどうすればよいでしょうか?適切なコードセグメントを正しい場所にドラッグして解答してください。各コードセグメントは、1回、複数回、または全く使用しない場合があります。コンテンツを表示するには、ペイン間の分割バーをドラッグするか、スクロールする必要がある場合があります。
注:正解ごとに1ポイントが加算されます。

正解:

Explanation:
Scenario, Log policy: All Azure App Service Web Apps must write logs to Azure Blob storage.
Box 1: Status
Box 2: Succeeded
Box 3: operationName
Once a new web app is created, an event is triggered from the resource group...
That event contains the status, which must be Succeeded in order for it to make sense to apply the policy. The above site also mentions that the event["data"] contains an operationName property for resource group events, which in this case is an "Microsoft.web/sites/write" operation.
References:
https://docs.microsoft.com/en-us/azure/event-grid/event-schema-resource-groups?tabs=event-grid-event-schema