Adatvédelmi és megfelelőségi audit jelentések

A 📦 Microsoft.Extensions.AuditReports NuGet-csomag funkcióval készít naplózási jelentéseket a lefordított kódról. Ezek a jelentések különösen hasznosak adatvédelmi auditok, megfelelőségi felülvizsgálatok és az alkalmazás által gyűjtött és továbbított telemetriai adatok megértéséhez.

Miért érdemes auditjelentéseket használni?

A naplózási jelentések segítenek a szervezeteknek a megfelelőség és az átláthatóság fenntartásában:

  • Adatvédelmi megfelelőség: Azonosítsa azokat a helyeket, ahol bizalmas adatok érhetők el vagy naplózhatók.
  • Telemetriakövetés: Az alkalmazás által generált metrikák és telemetriai adatok megismerése.
  • Kód áttekintése: Az adatbesorolási használat áttekintése a kódbázisban.
  • Megfelelőségi auditok: A megfelelőségi és biztonsági auditok dokumentációjának megadása.
  • Adatkezelés: Győződjön meg arról, hogy az adatkezelési eljárások összhangban vannak a szervezeti szabályzatokkal.

Indítás

A Microsoft.Extensions.AuditReports csomag egy buildelési eszköz, amely jelentéseket hoz létre a fordítás során. Telepítse opcionális fejlesztési függőségként:

dotnet add package Microsoft.Extensions.AuditReports

További információ: dotnet add package vagy A csomagfüggőségek kezelése .NET alkalmazásokban.

Jelentéstípusok

A csomag háromféle jelentést hozhat létre:

Jelentés típusa Description
Mértékek Jelentést hoz létre a kódban használt forrás által létrehozott metrikadefiníciókról , így megértheti, hogy az alkalmazás milyen metrikákat bocsát ki.
Megfelelőség Jelentést készít az adatvédelmi szempontból bizalmas adatok használatáról, beleértve a személyes vagy bizalmas adatokat kezelő, forrás által generált naplózási módszereket.
Metadaták Olyan átfogó jelentést hoz létre, amely a metrikákat és a megfelelőségi információkat is egyesíti.

Jelentéskészítés konfigurálása

A jelentéskészítés konfigurálásához állítsa be az MSBuild tulajdonságokat a project fájlban:

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

Megfelelőségi jelentés létrehozása

Megfelelőségi jelentés létrehozásához állítsa a GenerateComplianceReport tulajdonságot a true értékre.

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

Ez a jelentés azonosítja az adatvédelmi szempontból érzékeny adatokat kezelő kódot, különösen a naplózási műveletek során.

Metrikák jelentésének létrehozása

A metrika jelentés létrehozásához állítsa a GenerateMetricsReport tulajdonságot a true értékre.

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

Ez a jelentés az alkalmazás által létrehozott összes metrikát dokumentálja.

Metaadat-jelentés létrehozása

A megfelelőségre és a metrikákra vonatkozó információkat egyaránt tartalmazó átfogó jelentés esetében:

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

Példa: Megfelelőségi jelentés kimenete

Ha létrehoz egy projektet, amelyben engedélyezve van a megfelelőségi jelentéskészítés, egy JSON-fájlt kap, amely azonosítja az adatvédelemre érzékeny adathasználatot.

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

Használat adatbesorolással

A naplózási jelentések a következő adatosztályozási attribútumokkal Microsoft.Extensions.Compliance.Abstractionsműködnek együtt:

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

Amikor ezt a kódot megfelelőségi jelentéskészítéssel hozza létre, a jelentés azonosítani fogja, hogy a emailPrivateData besorolás alá tartozik.

A jelentés kimeneti helyének konfigurálása

Egyéni elérési utak megadása az auditjelentésekhez:

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

Integrálás a CI/CD folyamatokkal

A naplózási jelentések integrálhatók a CI/CD-folyamatba az automatizált megfelelőségi ellenőrzésekhez:

# 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

Példa: Metrikák jelentéskimenete

A metrikák jelentése az alkalmazás által előállított metrikákat dokumentálja:

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

Gyakorlati példa: Adatvédelmi naplózási munkafolyamat

Íme egy teljes példa az adatvédelmi naplózás beállítására:

Project fájlkonfiguráció:

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

Kód adatbesorolással:

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

A projekt létrehozásakor a megfelelőségi jelentés azonosítja a cardNumber adatvédelmi szempontból érzékeny naplózását.

Bevált gyakorlatok

Auditjelentések használatakor vegye figyelembe az alábbi ajánlott eljárásokat:

  • Korán integrálható: A fejlesztés korai szakaszában adjon hozzá naplózási jelentést a projektekhez, hogy hamarabb elkaphassa az adatvédelmi problémákat.
  • Felülvizsgálatok automatizálása: A folyamatos megfelelőség monitorozásához integrálja a naplózási jelentések létrehozását a CI/CD-folyamatba.
  • Rendszeresen tekintse át: Rendszeresen tekintse át az auditjelentéseket a kódellenőrzések során és a kiadások előtt.
  • Adatok osztályozása: Az adatbesorolási attribútumok következetes használatával biztosíthatja a pontos naplózási jelentéseket.
  • Jelentések tárolása: Auditjelentések archiválása a megfelelőségi dokumentációhoz és az előzménykövetéshez.
  • Verziókövetés: A naplójelentések változásainak nyomon követése az adatkezelés alakulásának megértéséhez.
  • Biztonsági vizsgálat: Naplózási jelentések használata a biztonsági és adatvédelmi ellenőrző eszközök bemeneteként.

Lásd még