Générer des rapports de conformité pour une application cloud native annotée

Effectué

Les services chargés de la conformité doivent pouvoir examiner le code et les rapports de conformité pour s'assurer que l'application est conforme aux politiques de l'entreprise. Le cadre de conformité .NET permet de générer des rapports indiquant l'état de conformité de l'application.

Qu’est-ce qu’un rapport de conformité ?

Un rapport de conformité peut être généré au moment de la compilation. Le cadre de conformité .NET génère un fichier JSON qui contient des détails sur les classifications de données et les méthodes de rédaction utilisées dans l'application.

{
    "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"
                        }
                    ]
                },
    ...

Le rapport ci-dessus est un exemple du projet eShopLite.DataEntities. Il montre que la classe Order a deux propriétés classées en tant que EUIIData.

{
    "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"
                        }
                    ]
                }
            ]
        }
    ]
}

Le rapport ci-dessus est un exemple du projet eShopLite.Store. Il montre que la méthode LogOrders de la classe ProductService prend un objet Order comme paramètre pour la journalisation.

Comment générer un rapport de conformité

Vous devez suivre deux étapes pour chaque projet pour lequel vous souhaitez générer un rapport :

  1. Ajouter le package NuGet Microsoft.Extensions.AuditReports à chaque projet.

  2. Ajoutez deux entrées dans la section PropertyGroup du fichier projet csproj :

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

    La première active la génération du rapport de conformité. Le second indique le chemin d'accès au dossier dans lequel le rapport sera généré. Le nom de fichier est ComplianceReport.json.

Avec ces mises à jour, l’exécution de dotnet build dans le dossier de la solution génère un rapport de conformité pour chaque projet sur lequel la propriété GenerateComplianceReport est définie sur true.