演習 - クラウドネイティブ アプリケーションで機密データを分類する

完了

この演習では、サンプル eShopLite アプリケーションで機密データの型を分類します。

アプリは開発中であり、現在は 2 つのデータ クラス (ProductOrder) があります。 注文プロセスを構築しており、あなたはデータ型を分類するコードを追加するように求められています。

この演習では、次の方法を確認します。

  • 現在のアプリとそのデータ型を調べる。
  • データ型を分類するコードを追加する。
  • アプリを実行してテストする。

開発環境を開く

演習をホストする GitHub codespace を使うか、Visual Studio Code でローカルで演習を完了するかを選択できます。

codespace を使用するには、こちらの codespace 作成リンクを使用して、事前構成済みの GitHub codespace を作成します。

GitHub による codespace の作成と構成には数分かかります。 このプロセスが完了すると、演習用のコード ファイルが表示されます。 このモジュールの残りの部分で使われるコードは、/dotnet-compliance ディレクトリにあります。

Visual Studio Code を使うには、https://github.com/MicrosoftDocs/mslearn-dotnet-cloudnative リポジトリをご自分の GitHub アカウントにフォークしてください。 その後、以下を実行します。

  1. Docker が動作していることを確認します。 新しい Visual Studio Code ウィンドウで、Ctrl+Shift+P キーを押してコマンド パレットを開きます。
  2. [開発コンテナー: コンテナー ボリューム内のリポジトリのクローン] を検索して選択します。
  3. フォークしたリポジトリを選んでください。 Visual Studio Code により、ローカルで開発コンテナーが作成されます。

eShopLite アプリをテストする

  1. Visual Studio Code ウィンドウの下部にある [ターミナル] タブを選びます。

  2. 演習フォルダーに移動します。

    cd dotnet-compliance/eShopLite
    
  3. アプリ コンテナーをビルドしてください。

    dotnet publish /p:PublishProfile=DefaultContainer 
    
  4. Docker を使用してアプリを実行してください。

    cd ..
    docker compose up
    
  5. [ポート] タブを選び、[フロント エンド (32000)] ポートの [ブラウザーで開く] 地球儀アイコンを選びます。

  6. [製品] リンクを選びます。 アプリに製品の一覧が表示されます。

    A screenshot of the running eShopLite app.

  7. [ターミナル] タブを選び、Ctrl+C キーを押してアプリを停止します。

分類と属性を作成する

このタスクでは、2 つの新しい分類を作成するコードを追加します。 次に、ProductOrder のデータ型に適切な属性の注釈を付けます。

  1. [ターミナル] タブで eShopLite/DataEntities フォルダーに移動します。

    cd eShopLite/DataEntities/
    
  2. コンプライアンス パッケージを追加します。

    dotnet add package Microsoft.Extensions.Compliance.Redaction
    
  3. [エクスプローラー] ペインの DataEntities フォルダーを右クリックし、[新しいファイル] を選びます。

  4. ファイル名に「Compliance.cs」と入力します。

  5. エディターで、次のコードを入力します。

    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) { }
    }
    
    

    上記のコードにより、EUIIEUPI という 2 つの分類が作成されます。 また、EUIIDataAttributeEUPDataAttribute という 2 つの属性も作成されます。 これらの属性は、データ型に注釈を付けるために使われます。

データ型を分類する

これらの分類と属性を使って、eShopLite アプリのデータ型を分類します。

  1. [エクスプローラー] ペインで DataEntities フォルダーを展開し、Product.cs ファイルを選びます。

    このクラスには特定の顧客の機密データはありませんが、製品 ID プロパティがログ内の顧客に接続されている場合、アプリによって仮名データが漏えいする可能性があります。

  2. ProductId プロパティに EUPData 属性を追加します。

    [EUPData]
    [Key]
    [JsonPropertyName("id")]
    public int Id { get; set; }
    

    上記のコードを使って、秘匿化エンジンに Id プロパティが仮名データであることを伝えます。

  3. [エクスプローラー] ペインで DataEntities フォルダーを展開し、Order.cs ファイルを選びます。

    Order クラスには機密データが含まれています。 CustomerNameCustomerAddress のプロパティは、エンド ユーザーを特定できる情報です。 Id プロパティは、エンド ユーザーの仮名情報です。

  4. CustomerNameCustomerAddress のプロパティに EUIIData 属性を追加します。

    [EUIIData]
    [JsonPropertyName("customerName")]
    public string? CustomerName { get; set; }
    
    [EUIIData]
    [JsonPropertyName("customerAddress")]
    public string? CustomerAddress { get; set; }
    

    上記のコードを使って、CustomerNameCustomerAddress のプロパティがエンド ユーザーを特定できる情報であることを秘匿化エンジンに伝えます。

  5. Id プロパティに EUPData 属性を追加します。

    [Key]
    [EUPData]
    [JsonPropertyName("id")]
    public int Id { get; set; }
    

    上記のコードを使って、秘匿化エンジンに Id プロパティがエンド ユーザーの仮名情報であることを伝えます。

eShopLite アプリに対する変更をテストする

  1. 下部の [TERMINAL] ペインで、dotnet-compliance/eShopLite フォルダーに移動してください。

    cd ..
    
  2. アプリ コンテナーを更新してください。

    dotnet publish /p:PublishProfile=DefaultContainer 
    
  3. dotnet-compliance フォルダーに移動し、Docker でアプリを起動してください。

    cd ..
    docker compose up
    
  4. ブラウザーのタブを閉じた場合は、[ポート] タブを選び、[フロント エンド (32000)] ポートの [ブラウザーで開く] アイコンを選びます。

  5. eShopLite アプリは変更されないことに注意してください。

  6. いくつかの商品をバスケットに追加してから、[Buy Basket] (バスケットの内容を購入) を選びます。

  7. [TERMINAL] ウィンドウで Ctrl+C キーを押してアプリを停止してください。

次の演習では、編集されたログを追加します。