Freigeben über


Prüfberichte für Datenschutz und Compliance

Das 📦 Microsoft.Extensions.AuditReports NuGet-Paket bietet Funktionen zum Generieren von Überwachungsberichten über den kompilierten Code. Diese Berichte sind besonders nützlich für Datenschutzüberwachungen, Complianceüberprüfungen und grundlegende Informationen dazu, welche Telemetriedaten Ihre Anwendung sammelt und überträgt.

Gründe für die Verwendung von Überwachungsberichten

Überwachungsberichte helfen Organisationen dabei, Compliance und Transparenz aufrechtzuerhalten:

  • Datenschutzkonformität: Identifizieren Sie alle Orte, an denen auf vertrauliche Daten zugegriffen oder protokolliert wird.
  • Telemetrieverfolgung: Verstehen Sie, welche Metriken und Telemetrie Ihre Anwendung generiert.
  • Codeüberprüfung: Überprüfen Sie die Datenklassifizierungsverwendung in Ihrer Codebasis.
  • Compliance-Audits: Bereitstellen von Dokumentationen für Compliance- und Sicherheitsüberwachungen.
  • Datengovernance: Sicherstellen, dass die Datenverarbeitungspraktiken den Organisationsrichtlinien entsprechen.

Loslegen

Das Microsoft.Extensions.AuditReports Paket ist ein Buildzeittool, das Während der Kompilierung Berichte generiert. Installieren Sie sie als Entwicklungsabhängigkeit:

dotnet add package Microsoft.Extensions.AuditReports

Weitere Informationen finden Sie unter dotnet add package or Manage package dependencies in .NET applications.

Berichtstypen

Das Paket kann drei Arten von Berichten generieren:

Berichtstyp Description
Metriken Generiert einen Bericht über in Ihrem Code verwendete quellgenerierte Metrikdefinitionen , sodass Sie verstehen können, welche Metriken Ihre Anwendung ausgibt.
Konformität Generiert einen Bericht über die Verwendung vertraulicher Daten, einschließlich der vom Quell generierten Protokollierungsmethoden, die persönliche oder vertrauliche Informationen verarbeiten.
Metadaten Generiert einen umfassenden Bericht, der Metriken und Complianceinformationen kombiniert.

Konfigurieren der Berichtsgenerierung

Konfigurieren Sie die Berichtsgenerierung, indem Sie MSBuild-Eigenschaften in Ihrer project Datei festlegen:

<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>

Generieren eines Complianceberichts

Um einen Compliancebericht zu generieren, legen Sie die Eigenschaft GenerateComplianceReport auf true:

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

Dieser Bericht identifiziert Code, der datenschutzrelevante Daten behandelt, insbesondere bei Protokollierungsvorgängen.

Generieren eines Metrikberichts

Um einen Metrikbericht zu generieren, legen Sie die GenerateMetricsReport-Eigenschaft auf true fest.

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

Dieser Bericht dokumentiert alle Metriken, die von Ihrer Anwendung generiert werden.

Generieren eines Metadatenberichts

Für einen umfassenden Bericht, der sowohl Compliance- als auch Metrikinformationen enthält:

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

Beispiel: Ausgabe des Compliance-Berichts

Wenn Sie eine project mit aktivierter Complianceberichterstellung erstellen, erhalten Sie eine JSON-Datei, die die Verwendung vertraulicher Daten identifiziert:

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

Verwendung mit Datenklassifizierung

Die Überwachungsberichte arbeiten in Verbindung mit den Datenklassifizierungsattributen aus 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);
}

Wenn Sie diesen Code mit aktivierter Complianceberichterstattung erstellen, wird im Bericht identifiziert, dass email als PrivateData klassifiziert ist.

Konfigurieren des Speicherorts für die Berichtsausgabe

Geben Sie benutzerdefinierte Pfade für Ihre Überwachungsberichte an:

<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>

Integration mit CI/CD-pipelines

Überwachungsberichte können in Ihre CI/CD-Pipeline für automatisierte Complianceprüfungen integriert werden:

# 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

Beispiel: Ausgabe des Metrikberichts

Ein Metrikbericht dokumentiert die Von Ihrer Anwendung erzeugten Metriken:

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

Praktisches Beispiel: Datenschutzüberwachungsworkflow

Hier ist ein vollständiges Beispiel zum Einrichten der Datenschutzüberwachung:

Projektdatei-Konfiguration:

<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 mit Datenklassifizierung:

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);
}

Wenn Sie dieses Projekt erstellen, identifiziert der Compliancebericht die datenschutzrelevante Protokollierung von cardNumber.

Bewährte Methoden

Berücksichtigen Sie bei der Verwendung von Überwachungsberichten die folgenden bewährten Methoden:

  • Frühzeitig integrieren: Fügen Sie Ihren Projekten frühzeitig Überwachungsberichte hinzu, um Datenschutzprobleme schneller abzufangen.
  • Automatisieren Sie Überprüfungen: Integrieren Sie die Erstellung von Auditberichten in Ihre CI/CD-Pipeline für eine kontinuierliche Compliance-Überwachung.
  • Regelmäßig überprüfen: Regelmäßige Überprüfung von Prüfberichten während Codeüberprüfungen und vor Veröffentlichungen.
  • Klassifizieren von Daten: Verwenden Sie Datenklassifizierungsattribute konsistent, um genaue Überwachungsberichte sicherzustellen.
  • Store-Berichte: Archivieren von Überwachungsberichten für Compliancedokumentation und Verlaufsverfolgung.
  • Versionssteuerung: Nachverfolgen von Änderungen an Überwachungsberichten im Laufe der Zeit, um zu verstehen, wie sich Ihre Datenverarbeitung weiterentwickelt.
  • Sicherheitsüberprüfung: Verwenden Sie Überwachungsberichte als Eingabe für Sicherheits- und Datenschutzüberprüfungstools.

Siehe auch