事例研究6 - コントソ社
背景
概要
あなたはContoso, Ltd.の開発者です。同社はシングルページアプリケーション(SPA)として開発されたソーシャルネットワーキングWebサイトを運営しています。このソーシャルネットワーキングWebサイトのメインWebアプリケーションは、ブロブストレージからユーザーがアップロードしたコンテンツを読み込みます。
あなたは、アップロードされたデータに不適切なコンテンツが含まれていないか監視するソリューションを開発しています。ユーザーがSPAを使用してコンテンツをアップロードすると、次のプロセスが発生します。
* メッセージはContentUploadServiceに送信されます。
* コンテンツはContentAnalysisServiceによって処理されます。
処理完了後、コンテンツはソーシャルネットワークに投稿されるか、拒否メッセージが送信されます。
その代わりに掲示されています。
ContentAnalysisServiceは、contosoimagesという名前のプライベートAzureコンテナレジストリからAzureコンテナインスタンスを使用してデプロイされます。
このソリューションでは、8つのCPUコアを使用します。
Azure Active Directory
Contoso, Ltd.は、社内アカウントとゲストアカウントの両方にAzure Active Directory(Azure AD)を使用しています。
要件
コンテンツ分析サービス
同社のデータサイエンスグループは、ユーザーが生成したコンテンツを文字列として受け取り、不適切なコンテンツである可能性を示す値を返すContentAnalysisServiceを開発しました。特定のしきい値を超える値は、Contoso, Ltd.の従業員による確認が必要です。
コンテンツチェックを実行するには、CheckUserContent という名前の Azure Function を作成する必要があります。
費用
すべてのAzureサービスのコストを最小限に抑える必要があります。
マニュアルレビュー
コンテンツをレビューするには、ユーザーはAzure ADの認証情報を使用してContentAnalysisServiceのWebサイト部分に認証する必要があります。WebサイトはReactで構築されており、すべてのページとAPIエンドポイントで認証が必要です。コンテンツをレビューするには、ユーザーはContentReviewerロールに属している必要があります。完了したすべてのレビューには、監査目的でレビュー担当者のメールアドレスを含める必要があります。
高可用性
すべてのサービスは複数のリージョンで稼働する必要があります。いずれかのリージョンにおけるサービスの障害が、アプリケーション全体の可用性に影響を与えてはなりません。
監視
ContentUploadServiceが利用可能なCPUコアの80%以上を使用した場合は、アラートを発する必要があります。
安全
セキュリティ要件は以下のとおりです。
インターネット経由でアクセス可能なウェブサービスは、クロスサイトスクリプティングから保護されなければならない。
攻撃。
* すべてのウェブサイトおよびサービスは、有効なルート認証局によるSSL証明書を使用する必要があります。
* Azure Storage アクセス キーはメモリにのみ保存され、
サービス。
* すべての内部サービスは、内部仮想ネットワーク(VNet)からのみアクセス可能である必要があります。
* システムのすべての部分は、送受信トラフィックの制限をサポートする必要があります。
* すべてのサービス呼び出しは、Azure ADを使用して認証する必要があります。
ユーザー規約
ユーザーがコンテンツを投稿する際には、利用規約に同意する必要があります。この規約により、Contoso, Ltd.の従業員はコンテンツを審査し、ユーザーのデバイスにCookieを保存し、ユーザーのIPアドレスを追跡することが可能になります。
契約に関する情報は、Contoso, Ltd. 内の複数の部門で使用されます。
ユーザーからの回答は失われてはならず、個々のサービス稼働時間に関わらず、すべての関係者が利用できる状態である必要がある。合意件数は1時間あたり数百万件に達すると予想される。
検証テスト
ContentAnalysisServiceの新しいバージョンが利用可能になった場合、新しいバージョンが古いバージョンと大きく異なっていないことを確認するために、過去7日間のコンテンツを新しいバージョンで処理する必要があります。
問題
ContentUploadServiceのユーザーから、特定のページでHTTP 502エラーが発生することがあるとの報告が寄せられています。
コード
コンテンツアップロードサービス

アプリケーションマニフェスト

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

正解:

Explanation:
Box 1: allowedMemberTypes
allowedMemberTypes specifies whether this app role definition can be assigned to users and groups by setting to "User", or to other applications (that are accessing this application in daemon service scenarios) by setting to "Application", or to both.
Note: The following example shows the appRoles that you can assign to users.
"appId": "8763f1c4-f988-489c-a51e-158e9ef97d6a",
"appRoles": [
{
"allowedMemberTypes": [
"User"
],
"displayName": "Writer",
"id": "d1c2ade8-98f8-45fd-aa4a-6d06b947c66f",
"isEnabled": true,
"description": "Writers Have the ability to create tasks.",
"value": "Writer"
}
],
"availableToOtherTenants": false,
Box 2: User
Scenario: In order to review content a user must be part of a ContentReviewer role.
Box 3: value
value specifies the value which will be included in the roles claim in authentication and access tokens.
Reference:
https://docs.microsoft.com/en-us/graph/api/resources/approle