Gerar relatórios de conformidade para um aplicativo nativo da nuvem anotado

Concluído

Os departamentos de conformidade precisam ser capazes de revisar o código e os relatórios de conformidade para garantir que o aplicativo esteja em conformidade com as políticas da empresa. A estrutura de conformidade do .NET fornece uma maneira de gerar relatórios que mostram o status de conformidade do aplicativo.

O que é um relatório de conformidade?

Um relatório de conformidade pode ser gerado em tempo de compilação. A estrutura de conformidade .NET gera um arquivo JSON que contém detalhes sobre as classificações de dados e métodos de edição usados no aplicativo.

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

O relatório acima é um exemplo do projeto eShopLite.DataEntities. Ele mostra que a classe Order tem duas propriedades que são classificadas como 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"
                        }
                    ]
                }
            ]
        }
    ]
}

O relatório acima é um exemplo do projeto eShopLite.Store. Ele mostra que o método LogOrders na classe ProductService usa um objeto como um parâmetro Order para registro em log.

Como gerar um relatório de conformidade

Há duas etapas que você precisa seguir para cada projeto para o qual deseja gerar um relatório:

  1. Adicionar o pacote NuGet Microsoft.Extensions.AuditReports para cada projeto.

  2. Adicione duas entradas à seção PropertyGroup do arquivo de projeto csproj:

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

    A primeira ativa a geração do relatório de conformidade. A segunda especifica o caminho para a pasta em que o relatório será gerado. O nome do arquivo é ComplianceReport.json.

Com essas atualizações, a execução de dotnet build na pasta da solução gera um relatório de conformidade para cada projeto que tem a propriedade GenerateComplianceReport definida como true.