事例研究1 - Litware Inc.
背景
あなたは、従業員の経費管理ソリューションを提供するSaaS企業であるLitware Inc.の開発者です。このソリューションは、Azure WebアプリとしてデプロイされるASP.NET Core Web APIプロジェクトで構成されています。
全体的なアーキテクチャ
従業員は領収書をシステムにアップロードして処理を依頼します。処理が完了すると、従業員は処理結果を詳細に記載した概要レポートメールを受け取ります。その後、従業員はウェブアプリケーションを使用して領収書を管理し、払い戻しに必要なその他の作業を行います。
領収書処理
従業員は領収書を以下の2つの方法でアップロードできます。
* Azure Files マウント済みフォルダーを使用したアップロード
* Webアプリケーションを使用したアップロード
データストレージ
領収書と従業員情報はAzure SQLデータベースに保存されます。
文書
従業員は、ソリューションを初めて使用する際に、入門ドキュメントを受け取ります。このドキュメントには、Azure ファイルアップロードでサポートされているオペレーティングシステムの詳細と、マウントされたフォルダーの設定方法に関する手順が記載されています。
解決策の詳細
ユーザーテーブル

ウェブアプリケーション
Webアプリに対してMSIを有効にし、Webアプリがセキュリティプリンシパル名「WebAppIdentity」を使用するように構成します。
処理
処理は、Azure Functionsランタイムのバージョン2を使用するAzure Functionによって実行されます。
処理が完了すると、結果はAzure Blobに保存されます。
ストレージとAzure SQLデータベースを使用します。その後、処理レポートへのリンクを含む概要メールがユーザーに送信されます。メールが別のユーザーに転送された場合でも、レポートへのリンクは有効なままでなければなりません。
ログ記録
Azure Application Insightsは、プロセッサとWebアプリケーションの両方でテレメトリとログ記録に使用されます。プロセッサでは、TraceWriterによるログ記録も有効になっています。
Application Insightsには、常にすべてのログメッセージが含まれている必要があります。
要件
領収書処理
領収書の同時処理は防止されなければならない。
災害復旧
地域的な障害が発生しても、アプリケーションの可用性に影響があってはなりません。すべての災害復旧(DR)運用は、アプリケーションの稼働状況に依存してはならず、DR地域のデータが常に最新の状態であることを保証する必要があります。
安全
* ユーザーのセキュリティピンは、データベースへのアクセスによって
セキュリティピンの表示。セキュリティピンにアクセスできるのは、Webアプリケーションのみです。
* データ保護に使用されるすべての証明書とシークレットは、Azure Key Vaultに保存する必要があります。
* 最小限の特権の原則に従い、必要不可欠な特権を提供する必要があります。
意図された機能を実行する。
* Azure Storage および Azure SQL データベースへのすべてのアクセスは、アプリケーションのマネージド ストレージを使用する必要があります。
サービスID(MSI)
* レシートデータは保存時に必ず暗号化する必要があります。
* すべてのデータは転送中に保護されなければならない
* ユーザーの経費口座番号は、ログインしているユーザーのみに表示される必要があります。
経費勘定番号には最後の部分のみを含め、残りの部分は伏せ字にする必要があります。
* セキュリティ侵害が発生した場合、すべての要約レポートへのアクセスは取り消されなければならない。
システムの他の部分に影響を与える。
問題
アップロード形式の問題
従業員から、Webアプリケーションを使用して領収書をアップロードする際に問題が発生するという報告が時折寄せられています。Azureファイル共有を使用して領収書をアップロードしても、プロファイルに表示されないとのことです。この問題が発生した場合、従業員はファイル共有内のファイルを削除し、Webアプリケーションを使用しますが、500 Internal Server Errorページが表示されます。
容量の問題
繁忙期には、従業員が領収書をアップロードしてからウェブアプリケーションに表示されるまでに長い遅延が発生すると報告している。
ログ容量の問題
開発者によると、プロセッサのトレース出力におけるログメッセージの数が多すぎるため、ログメッセージが失われるという問題が発生しているとのことです。
アプリケーションコード
Processing.cs

データベース.cs

レシートアップローダー.cs

ConfigureSSE.ps1

注:この問題は、同じシナリオを提示する一連の問題の一部です。このシリーズの各問題には、提示された目標を満たす可能性のある独自の解答が含まれています。問題セットによっては、複数の正解がある場合もあれば、正解がない場合もあります。
この質問に回答すると、後から戻って回答することはできません。そのため、これらの質問は復習画面には表示されません。
SecurityPinのセキュリティ要件が満たされていることを確認する必要があります。
解決策:Azureポータルを使用して、SecurityPin列にデータマスキングを追加し、dboユーザーを除外します。ユーザーIDに基づくフィルタ述語を持つSQLセキュリティポリシーを追加します。
その解決策は目標を達成しているか?