練習 - 將雲端原生應用程式中的敏感資料分類

已完成

在此練習中,您會將範例 eShopLite 應用程式中的敏感資料類型分類。

該應用程式處於使用中開發狀態,目前有兩個資料類別: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 即可停止應用程式。

建立分類法和屬性

在此工作中,新增程式碼以建立兩個新的分類法。 然後使用適當的屬性標註 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。 其也會建立兩個屬性:EUIIDataAttributeEUPDataAttribute。 這些屬性會用於標註資料類型。

將資料類型分類

使用這些分類法和屬性將 eShopLite 應用程式中的資料類型分類。

  1. 在 [檔案總管] 窗格中,展開 [DataEntities] 資料夾,然後選取 Product.cs 檔案。

    此類別中沒有特定的客戶敏感性資料,但如果產品識別碼屬性已連線到記錄中的客戶,應用程式可能會洩漏匿名資料。

  2. EUPData 屬性 (Attribute) 新增至 ProductId 屬性 (Property):

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

    上述程式碼會告知修訂引擎,Id 屬性為匿名資料。

  3. 在 [檔案總管] 窗格中,展開 [DataEntities] 資料夾,然後選取 Order.cs 檔案。

    類別 Order 包含敏感性資料。 CustomerNameCustomerAddress 屬性是終端使用者的可識別資訊。 屬性 Id 是終端使用者的匿名資訊。

  4. EUIIData 屬性 (Attribute) 新增至 CustomerNameCustomerAddress 屬性 (Property):

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

    上述程式碼會告知修訂引擎,CustomerNameCustomerAddress 屬性是終端使用者的可識別資訊。

  5. EUPData 屬性 (Attribute) 新增至 Id 屬性 (Property):

    [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+C 即可停止應用程式。

您在下一個練習中會新增修訂的記錄。