练习 - 对云原生应用程序中的敏感数据进行分类
在本练习中,你将对示例 eShopLite 应用程序中的敏感数据类型进行分类。
该应用正在积极开发中,目前有两个数据类, Product 以及 Order。 它们正在构建排序过程,并希望添加代码以对数据类型进行分类。
在本练习中,了解如何:
- 浏览当前应用及其数据类型。
- 添加代码以对数据类型进行分类。
- 运行并测试应用。
开放开发环境
可以选择使用托管练习的 GitHub codespace,或者在 Visual Studio Code 中本地完成练习。
若要使用 codespace,请使用此 Codespace 创建链接创建预配置的 GitHub Codespace。
GitHub 需要几分钟才能创建和配置 codespace。 该过程完成后,你将看到练习的代码文件。 用于本模块其余部分的代码位于 /dotnet-compliance 目录中。
若要使用 Visual Studio Code,请将 https://github.com/MicrosoftDocs/mslearn-dotnet-cloudnative 存储库分支到自己的 GitHub 帐户。 然后:
- 确保 Docker 正在运行。 在新 Visual Studio Code 窗口中,按 Ctrl+Shift+P 打开命令面板。
- 搜索并选择“开发容器:在容器卷中克隆存储库”。
- 选择分支存储库。 Visual Studio Code 将在本地创建你的开发容器。
测试 eShopLite 应用
在 Visual Studio Code 窗口底部,选择 “终端 ”选项卡。
移动到练习文件夹:
cd dotnet-compliance/eShopLite
生成应用容器。
dotnet publish /p:PublishProfile=DefaultContainer
使用 docker 运行应用:
cd .. docker compose up
选择“端口”选项卡,然后为前端(32000)端口选择在浏览器中打开地球图标。
选择“产品”链接。 该应用显示产品列表。
选择 “终端 ”选项卡,然后按 Ctrl+C 停止应用。
创建分类和属性
在此任务中,添加代码以创建两个新的分类。 然后,使用相应的属性批注 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。 它还创建两个属性, EUIIDataAttribute 以及 EUPDataAttribute。 这些属性用于批注数据类型。
对数据类型进行分类
使用这些分类和属性对应用中的数据类型 eShopLite 进行分类。
在 “资源管理器 ”窗格中,展开 DataEntities 文件夹,然后选择 Product.cs 文件。
此类中没有特定的客户敏感数据,但如果产品 ID 属性在日志中与客户相关联,应用可能会泄露假名化数据。
将 EUPData 属性添加到 ProductId 属性:
[EUPData] [Key] [JsonPropertyName("id")] public int Id { get; set; }
上面的代码告知编辑引擎属性 Id 是假名数据。
在 “资源管理器 ”窗格中,展开 DataEntities 文件夹,然后选择 Order.cs 文件。
该 Order 类包含敏感数据。 属性CustomerNameCustomerAddress是最终用户身份信息。 该 Id 属性是最终用户假名信息。
将EUIIData属性添加到CustomerNameCustomerAddress属性:
[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=DefaultContainer
转到 dotnet-compliance 文件夹,并使用 Docker 启动应用:
cd .. docker compose up
如果在浏览器中关闭了选项卡,请选择“端口”选项卡,然后选择前端(32000)端口的“在浏览器中打开”图标。
请注意,应用 eShopLite 保持不变。
尝试将某些产品添加到购物篮,然后选择“ 购买购物篮”。
在 终端 窗口中,按 Ctrl+C 停止应用。
在下一个练习中,你将添加经过修订的日志记录。