注釈付きクラウド ネイティブ アプリのコンプライアンス レポートを生成する

完了

コンプライアンス部門は、コードとコンプライアンス レポートをレビューして、アプリケーションが会社のポリシーに準拠していることを確認できる必要があります。 .NET コンプライアンス フレームワークは、アプリケーションのコンプライアンス状態を示すレポートを生成する方法を提供します。

コンプライアンス レポートとは

コンパイル時にコンプライアンス レポートを生成できます。 .NET コンプライアンス フレームワークにより、アプリケーションで使用されるデータ分類とリダクション方法の詳細を含む JSON ファイルが生成されます。

{
    "Name": "DataEntities",
    "Types": [
        {
            "Name": "DataEntities.Order",
            "Members": [
                {
                    "Name": "CustomerAddress",
                    "Type": "string",
                    "File": "C:\\Developer\\mslearn-dotnet-cloudnative\\dotnet-compliance\\eShopLite\\DataEntities\\Order.cs",
                    "Line": "25",
                    "Classifications": [
                        {
                            "Name": "EUIIData"
                        }
                    ]
                },
                {
                    "Name": "CustomerName",
                    "Type": "string",
                    "File": "C:\\Developer\\mslearn-dotnet-cloudnative\\dotnet-compliance\\eShopLite\\DataEntities\\Order.cs",
                    "Line": "21",
                    "Classifications": [
                        {
                            "Name": "EUIIData"
                        }
                    ]
                },
    ...

上記のレポートは、eShopLite.DataEntities プロジェクトの例です。 これは、Order クラスに EUIIData として分類される 2 つのプロパティがあることを示しています。

{
    "Name": "Store",
    "Types": [
        {
            "Name": "Store.Services.Log",
            "Logging Methods": [
                {
                    "Name": "LogOrders",
                    "Parameters": [
                        {
                            "Name": "logger",
                            "Type": "Microsoft.Extensions.Logging.ILogger",
                            "File": "C:\\Developer\\mslearn-dotnet-cloudnative\\dotnet-compliance\\eShopLite\\Store\\Services\\ProductService.cs",
                            "Line": "103"
                        },
                        {
                            "Name": "order",
                            "Type": "DataEntities.Order",
                            "File": "C:\\Developer\\mslearn-dotnet-cloudnative\\dotnet-compliance\\eShopLite\\Store\\Services\\ProductService.cs",
                            "Line": "103"
                        }
                    ]
                }
            ]
        }
    ]
}

上記のレポートは、eShopLite.Store プロジェクトの例です。 これは、ProductService クラスの LogOrders メソッドが Order オブジェクトをログ用のパラメータとして受け取ることを示しています。

コンプライアンス レポートを生成する方法

レポートを生成するプロジェクトごとに、次の 2 つの手順を実行する必要があります。

  1. Microsoft.Extensions.AuditReports NuGet パッケージを各プロジェクトに追加します。

  2. csproj プロジェクト ファイルの PropertyGroup セクションに 2 つのエントリを追加します。

    <GenerateComplianceReport>true</GenerateComplianceReport>
    <ComplianceReportOutputPath>$(MSBuildThisFileDirectory)\path to folder location</ComplianceReportOutputPath>
    

    1 つ目は、コンプライアンス レポートの生成をオンに切り替えます。 2 つ目は、レポートが生成されるフォルダーへのパスを指定します。 ファイル名は ComplianceReport.json です。

これらの更新により、ソリューション フォルダーで dotnet build を実行すると、GenerateComplianceReport プロパティが true に設定されているプロジェクトごとにコンプライアンス レポートが生成されます。