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

完了

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

アプリはアクティブな開発段階にあり、現在、 ProductOrderの 2 つのデータ クラスがあります。 これらは順序付けプロセスを構築しており、データ型を分類するコードを追加する必要があります。

この演習では、次の方法を参照してください。

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

開発環境を開く

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

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

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

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

  1. Docker が動作していることを確認します。 新しい Visual Studio Code ウィンドウで、Ctrl++キーを押してコマンド パレットを開きます。
  2. [Dev Containers: Clone Repository in Container Volume]\(開発コンテナー: コンテナー ボリューム内のリポジトリの複製\) を検索して選択します。
  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. [製品] リンクを選択します。 アプリに製品の一覧が表示されます。

    実行中の eShopLite アプリのスクリーンショット。

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

分類と属性を作成する

このタスクでは、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. EUPData プロパティにProductId属性を追加します。

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

    上記のコードは、 Id プロパティが仮名データであることを再編集エンジンに伝えます。

  3. エクスプローラー ウィンドウで、DataEntities フォルダーを展開し、Order.cs ファイルを選択します。

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

  4. EUIIDataプロパティとCustomerNameプロパティにCustomerAddress属性を追加します。

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

    上記のコードは、 CustomerName プロパティと CustomerAddress プロパティがエンド ユーザーを特定できる情報であることを再編集エンジンに通知します。

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

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

    上記のコードは、 Id プロパティがエンド ユーザーの仮名情報であることを編集エンジンに通知します。

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

  1. 下部の [ターミナル ] ウィンドウで、 dotnet-compliance/eShopLite フォルダーに移動します。

    cd ..
    
  2. アプリ コンテナーを更新します。

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

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

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

  6. バスケットにいくつかの製品を追加して、[ 買い物かご] を選択します。

  7. ターミナル ウィンドウで、Ctrl+キーを押してアプリを停止します。

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