Partager via


Rapports d’audit pour la confidentialité et la conformité

Le 📦 Microsoft.Extensions.AuditReports package NuGet fournit des fonctionnalités permettant de générer des rapports d’audit sur le code en cours de compilation. Ces rapports sont particulièrement utiles pour les audits de confidentialité, les révisions de conformité et la compréhension des données de télémétrie que votre application collecte et transmet.

Pourquoi utiliser des rapports d’audit

Les rapports d’audit aident les organisations à maintenir la conformité et la transparence :

  • Conformité à la confidentialité : identifiez tous les emplacements où les données sensibles à la confidentialité sont accessibles ou enregistrées.
  • Suivi des données de télémétrie : comprendre les métriques et les données de télémétrie générées par votre application.
  • Révision du code : passez en revue l’utilisation de la classification des données dans votre base de code.
  • Audits de conformité : fournissez de la documentation pour les audits de conformité et de sécurité.
  • Gouvernance des données : assurez-vous que les pratiques de gestion des données s’alignent sur les stratégies organisationnelles.

Commencer

Le Microsoft.Extensions.AuditReports package est un outil au moment de la génération qui génère des rapports pendant la compilation. Installez-le en tant que dépendance de développement :

dotnet add package Microsoft.Extensions.AuditReports

Pour plus d’informations, consultez dotnet add package ou gérer les dépendances de package dans les applications .NET.

Types de rapports

Le package peut générer trois types de rapports :

Type de rapport Descriptif
Metrics Génère un rapport sur les définitions de métriques générées par la source utilisées dans votre code, afin de comprendre les métriques émises par votre application.
Compliance Génère un rapport sur l’utilisation des données sensibles à la confidentialité, y compris les méthodes de journalisation générées par la source qui gèrent les informations personnelles ou sensibles.
Métadonnées Génère un rapport complet qui combine les métriques et les informations de conformité.

Configurer la génération de rapports

Configurez la génération de rapports en définissant les propriétés MSBuild dans votre fichier project :

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net10.0</TargetFramework>
    
    <!-- Enable audit report generation -->
    <GenerateComplianceReport>true</GenerateComplianceReport>
    
    <!-- Specify report output path (optional) -->
    <ComplianceReportOutputPath>$(OutputPath)compliance-report.json</ComplianceReportOutputPath>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.AuditReports" Version="10.0.0" />
  </ItemGroup>

</Project>

Générer un rapport de conformité

Pour générer un rapport de conformité, définissez la GenerateComplianceReport propriété sur true:

<PropertyGroup>
  <GenerateComplianceReport>true</GenerateComplianceReport>
</PropertyGroup>

Ce rapport identifie le code qui gère les données sensibles à la confidentialité, en particulier dans les opérations de journalisation.

Générer un rapport de métriques

Pour générer un rapport de métriques, définissez la GenerateMetricsReport propriété sur true:

<PropertyGroup>
  <GenerateMetricsReport>true</GenerateMetricsReport>
  <MetricsReportOutputPath>$(OutputPath)metrics-report.json</MetricsReportOutputPath>
</PropertyGroup>

Ce rapport documente toutes les métriques générées par votre application.

Générer un rapport de métadonnées

Pour un rapport complet qui inclut à la fois les informations de conformité et de métriques :

<PropertyGroup>
  <GenerateMetadataReport>true</GenerateMetadataReport>
  <MetadataReportOutputPath>$(OutputPath)metadata-report.json</MetadataReportOutputPath>
</PropertyGroup>

Exemple : sortie du rapport de conformité

Lorsque vous générez un project avec les rapports de conformité activés, vous obtenez un fichier JSON qui identifie l’utilisation des données sensibles à la confidentialité :

{
  "version": "1.0",
  "reportType": "compliance",
  "generatedAt": "2025-10-20T12:00:00Z",
  "entries": [
    {
      "filePath": "Services/UserService.cs",
      "lineNumber": 42,
      "memberName": "LogUserActivity",
      "dataClassification": "PersonalData",
      "message": "Logs user email address"
    },
    {
      "filePath": "Controllers/AccountController.cs",
      "lineNumber": 88,
      "memberName": "LogLoginAttempt",
      "dataClassification": "AuthenticationData",
      "message": "Logs authentication attempt with username"
    }
  ]
}

Utiliser avec la classification des données

Les rapports d’audit fonctionnent conjointement avec les attributs de classification des données de Microsoft.Extensions.Compliance.Abstractions:

using Microsoft.Extensions.Compliance.Classification;
using Microsoft.Extensions.Logging;

public class UserService
{
    private readonly ILogger<UserService> _logger;

    public UserService(ILogger<UserService> logger)
    {
        _logger = logger;
    }

    [LoggerMessage(Level = LogLevel.Information, Message = "User {Email} logged in")]
    public partial void LogUserLogin(
        [PrivateData] string email);
}

Lorsque vous compilez ce code avec la génération de rapports de conformité activée, le rapport indiquera que email est classé comme PrivateData.

Configurer l’emplacement de sortie du rapport

Spécifiez des chemins personnalisés pour vos rapports d’audit :

<PropertyGroup>
  <!-- Generate all report types -->
  <GenerateComplianceReport>true</GenerateComplianceReport>
  <GenerateMetricsReport>true</GenerateMetricsReport>
  
  <!-- Custom output locations -->
  <ComplianceReportOutputPath>$(OutputPath)audit\compliance.json</ComplianceReportOutputPath>
  <MetricsReportOutputPath>$(OutputPath)audit\metrics.json</MetricsReportOutputPath>
</PropertyGroup>

Intégrer aux pipelines CI/CD

Les rapports d’audit peuvent être intégrés à votre pipeline CI/CD pour les vérifications de conformité automatisées :

# Example GitHub Actions workflow
name: Compliance Check

on:
  pull_request:
    branches: [ main ]

jobs:
  audit:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    
    - name: Setup .NET
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: '10.0.x'
    
    - name: Build with compliance report
      run: dotnet build -p:GenerateComplianceReport=true
    
    - name: Upload compliance report
      uses: actions/upload-artifact@v3
      with:
        name: compliance-report
        path: '**/compliance-report.json'
    
    - name: Analyze compliance report
      run: |
        # Add script to analyze the compliance report
        # and fail the build if violations are found
        ./scripts/check-compliance.sh

Exemple : Résultat du rapport de mesures

Un rapport de métriques documente les métriques produites par votre application :

{
  "version": "1.0",
  "reportType": "metrics",
  "generatedAt": "2025-10-20T12:00:00Z",
  "metrics": [
    {
      "name": "http_request_duration",
      "description": "HTTP request duration in milliseconds",
      "unit": "milliseconds",
      "type": "histogram",
      "tags": ["endpoint", "method", "status_code"]
    },
    {
      "name": "active_connections",
      "description": "Number of active connections",
      "unit": "connections",
      "type": "gauge",
      "tags": ["connection_type"]
    }
  ]
}

Exemple pratique : flux de travail d’audit de confidentialité

Voici un exemple complet montrant comment configurer l’audit de confidentialité :

configuration de fichier Project :

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net10.0</TargetFramework>
    
    <!-- Enable compliance reporting -->
    <GenerateComplianceReport>true</GenerateComplianceReport>
    <ComplianceReportOutputPath>$(OutputPath)audit\compliance.json</ComplianceReportOutputPath>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.AuditReports" Version="10.0.0" />
    <PackageReference Include="Microsoft.Extensions.Compliance.Abstractions" Version="10.0.0" />
    <PackageReference Include="Microsoft.Extensions.Telemetry.Abstractions" Version="10.0.0" />
  </ItemGroup>

</Project>

Code avec classification des données :

using Microsoft.Extensions.Compliance.Classification;
using Microsoft.Extensions.Logging;

public partial class OrderService(ILogger<OrderService> logger)
{

    [LoggerMessage(Level = LogLevel.Information, Message = "Order created for customer {CustomerId}")]
    public partial void LogOrderCreated(
        [PublicData] string customerId);

    [LoggerMessage(Level = LogLevel.Information, Message = "Payment processed for {CardNumber}")]
    public partial void LogPaymentProcessed(
        [PrivateData] string cardNumber);
}

Lorsque vous générez ce project, le rapport de conformité identifie la journalisation sensible à la confidentialité de cardNumber.

Meilleures pratiques

Lorsque vous utilisez des rapports d’audit, tenez compte des meilleures pratiques suivantes :

  • Intégrer tôt : ajoutez des rapports d’audit à vos projets dès le début du développement pour détecter les problèmes de confidentialité plus tôt.
  • Automatiser les révisions : intégrez la génération de rapports d’audit à votre pipeline CI/CD pour la surveillance continue de la conformité.
  • Passez régulièrement en revue les rapports d’audit pendant les révisions de code et avant les mises en production.
  • Classifier les données : utilisez des attributs de classification des données de manière cohérente pour garantir des rapports d’audit précis.
  • Stocker des rapports : archivez les rapports d’audit pour la documentation de conformité et le suivi historique.
  • Contrôle de version : suivez les modifications apportées aux rapports d’audit au fil du temps pour comprendre comment la gestion des données évolue.
  • Analyse de la sécurité : utilisez des rapports d’audit comme entrée pour les outils d’analyse de la sécurité et de la confidentialité.

Voir aussi