演習 - クラウドネイティブ アプリケーションで機密データを分類する
この演習では、サンプル eShopLite アプリケーションで機密データ型を分類します。
アプリはアクティブな開発段階にあり、現在、 Product と Orderの 2 つのデータ クラスがあります。 これらは順序付けプロセスを構築しており、データ型を分類するコードを追加する必要があります。
この演習では、次の方法を参照してください。
- 現在のアプリとそのデータ型を調べる。
- データ型を分類するコードを追加します。
- アプリを実行してテストする。
開発環境を開く
演習をホストする GitHub codespace を使うか、Visual Studio Code でローカルで演習を完了するかを選択できます。
codespace を使用するには、この codespace 作成リンクを使用して、事前構成済みの GitHub codespace を作成します。
GitHub では、コードスペースの作成と構成に数分かかります。 プロセスが完了すると、演習のコード ファイルが表示されます。 このモジュールの残りの部分で使用するコードは 、/dotnet-compliance ディレクトリにあります。
Visual Studio Code を使用するには、https://github.com/MicrosoftDocs/mslearn-dotnet-cloudnative リポジトリを独自の GitHub アカウントにフォークします。 その後、以下を実行します。
- Docker が動作していることを確認します。 新しい Visual Studio Code ウィンドウで、Ctrl++キーを押してコマンド パレットを開きます。
- [Dev Containers: Clone Repository in Container Volume]\(開発コンテナー: コンテナー ボリューム内のリポジトリの複製\) を検索して選択します。
- フォークしたリポジトリを選択します。 Visual Studio Code により、ローカルで開発コンテナーが作成されます。
eShopLite アプリをテストする
Visual Studio Code ウィンドウの下部にある [ ターミナル ] タブを選択します。
演習フォルダーに移動します。
cd dotnet-compliance/eShopLiteアプリ コンテナーをビルドします。
dotnet publish /p:PublishProfile=DefaultContainerDocker を使用してアプリを実行します。
cd .. docker compose up[ポート] タブを選択し、フロントエンド (32000) ポートの [ブラウザーで開く] 地球アイコンを選択します。
[製品] リンクを選択します。 アプリに製品の一覧が表示されます。
[ターミナル] タブを選択し、Ctrl+キーを押してアプリを停止します。
分類と属性を作成する
このタスクでは、2 つの新しい分類を作成するコードを追加します。 次に、適切な属性を使用して Product と Order データ型に注釈を付けます。
[ターミナル] タブで、eShopLite/DataEntities フォルダーに移動します。
cd eShopLite/DataEntities/コンプライアンス パッケージを追加します。
dotnet add package Microsoft.Extensions.Compliance.Redactionエクスプローラー ウィンドウで、DataEntities フォルダーを右クリックし、[新しいファイル] を選択します。
ファイル名に「Compliance.cs」 と入力します。
エディターで、次のコードを入力します。
using Microsoft.Extensions.Compliance.Classification; using Microsoft.Extensions.Compliance.Redaction; public static class DataClassifications { // End User Identifiable Information public static DataClassification EUIIDataClassification {get;} = new DataClassification("EUIIDataTaxonomy", "EUIIData"); // End User Pseudonymous Information public static DataClassification EUPDataClassification {get;} = new DataClassification("EUPDataTaxonomy", "EUPData"); } public class EUIIDataAttribute : DataClassificationAttribute { public EUIIDataAttribute() : base(DataClassifications.EUIIDataClassification) { } } public class EUPDataAttribute : DataClassificationAttribute { public EUPDataAttribute() : base(DataClassifications.EUPDataClassification) { } }上記のコードでは、 EUII と EUPIという 2 つの分類が作成されます。 また、 EUIIDataAttribute と EUPDataAttributeの 2 つの属性も作成します。 これらの属性は、データ型に注釈を付けるために使用されます。
データ型を分類する
これらの分類と属性を使用して、 eShopLite アプリのデータ型を分類します。
エクスプローラー ウィンドウで、DataEntities フォルダーを展開し、Product.cs ファイルを選択します。
このクラスには特定の顧客の機密データはありませんが、製品 ID プロパティがログ内の顧客に接続されている場合、アプリによって仮名データが漏洩する可能性があります。
EUPData プロパティにProductId属性を追加します。
[EUPData] [Key] [JsonPropertyName("id")] public int Id { get; set; }上記のコードは、 Id プロパティが仮名データであることを再編集エンジンに伝えます。
エクスプローラー ウィンドウで、DataEntities フォルダーを展開し、Order.cs ファイルを選択します。
Order クラスには機密データが含まれています。 CustomerNameプロパティとCustomerAddressプロパティは、エンド ユーザーを特定できる情報です。 Idプロパティは、エンド ユーザーの仮名情報です。
EUIIDataプロパティとCustomerNameプロパティにCustomerAddress属性を追加します。
[EUIIData] [JsonPropertyName("customerName")] public string? CustomerName { get; set; } [EUIIData] [JsonPropertyName("customerAddress")] public string? CustomerAddress { get; set; }上記のコードは、 CustomerName プロパティと CustomerAddress プロパティがエンド ユーザーを特定できる情報であることを再編集エンジンに通知します。
EUPData プロパティにId属性を追加します。
[Key] [EUPData] [JsonPropertyName("id")] public int Id { get; set; }上記のコードは、 Id プロパティがエンド ユーザーの仮名情報であることを編集エンジンに通知します。
eShopLite アプリに対する変更をテストする
下部の [ターミナル ] ウィンドウで、 dotnet-compliance/eShopLite フォルダーに移動します。
cd ..アプリ コンテナーを更新します。
dotnet publish /p:PublishProfile=DefaultContainerdotnet-compliance フォルダーに移動し、Docker でアプリを起動します。
cd .. docker compose upブラウザーでタブを閉じた場合は、[ポート] タブを選択し、フロントエンド (32000) ポートの [ブラウザーで開く] アイコンを選択します。
eShopLite アプリは変更されていないことに注意してください。
バスケットにいくつかの製品を追加して、[ 買い物かご] を選択します。
ターミナル ウィンドウで、Ctrl+キーを押してアプリを停止します。
次の演習では、編集されたログを追加します。