Bizalmas adatok ismételt használata natív felhőbeli alkalmazásokban

Befejeződött

Az alkalmazásokon belüli újrapróbálkozást leggyakrabban naplóüzeneteken és telemetrián végzik. Más helyzetekben is használható, például dimenziók metrikákban történő újramegálmodásához vagy a köztes szoftver fejlécadataihoz.

A .NET naplózási keretrendszere egyszerű módot kínál az adatok naplózási üzenetekben való újrakódolására. A Microsoft.Extensions.Compliance.Abstractions csomag javítja a naplózást, hogy tartalmazzon egy Redactor olyan osztályt, amely újrakontrasztja az adatokat.

Mi az a redaction?

A redaction a bizalmas információk üzenetből való eltávolításának folyamata. Előfordulhat például, hogy egy felhasználó nevét egy naplóüzenetből szeretné kiírni. Vagy előfordulhat, hogy egy felhasználó IP-címét telemetriaeseményből szeretné újra kiírni.

A legegyszerűbb újraműveltség az érték törlése, és egy üres sztring visszaadása egy változóhoz. Ez a viselkedés alapértelmezés szerint azért fordul elő, mert az ErasingRedactor alapértelmezett tartalék újrabontás. A Microsoft tartalmaz egy osztályt HMACSHA256Redactor , amely kivonatfüggvények használatával történő adat-redactálásra használható. A HMAC-újraműveltség akkor hasznos, ha újra szeretné használni az adatokat, de továbbra is képes korrelálni a naplóüzeneteket több naplóüzenet között. Az utolsó lehetőség a saját újrafelfedezési függvény biztosítása, amely akkor hasznos, ha egyéni algoritmussal szeretné újrakontolni az adatokat.

Tegyük fel például, hogy a naplókban egyértelműbbé szeretné tenni, hogy egy érték újra van-e módosítva *****.

Adatok újrakonformálása natív felhőbeli alkalmazásokban

A szervezetek natív felhőbeli alkalmazása naplókat írhat, és telemetriát hozhat létre több projektben. Például naplókat írhat az adatbázis-szolgáltatásból, a webalkalmazásból vagy bármely más API-ból. A naplózás típusától függően mindegyikhez hozzá kell adnia a redaction szolgáltatást.

Négy lépésre van szükség az újraműveltség engedélyezéséhez az alkalmazásban:

  1. Adja hozzá a Microsoft.Extensions.Compliance.Redaction NuGet-csomagot minden projekthez.
  2. Adja hozzá a redaction szolgáltatást a függőséginjektálási tárolóhoz.
  3. Válassza ki, hogy melyik redaction implementációt használja az egyes minősített adatok típusaihoz.
  4. Engedélyezze az újraművelést a naplózási keretrendszerben.

Adja hozzá az újraküldő szolgáltatást a Függőséginjektálási tárolóhoz

Az alábbi példa egy Blazor WebAssembly-alkalmazásra mutat. A folyamat hasonló más típusú alkalmazásokhoz, de a kód kissé eltérő attól függően, hogy a függőséginjektálási tároló hogyan van konfigurálva.

A program.cs fájlban adja hozzá a következő függőségeket:

using Microsoft.Extensions.Compliance.Classification;
using Microsoft.Extensions.Compliance.Redaction;

A fenti csomagok lehetővé teszik, hogy a kóddal adja hozzá a redaction szolgáltatást a függőséginjektáló tárolóhoz:

builder.Services.AddRedaction();

Válassza ki, hogy melyik redaction implementációt használja az egyes minősített adatok típusaihoz

A AddRedactor metódus tartalmazhat egy paramétert RedactorOptions . A paraméterrel megadhatja, hogy az egyes adatosztályozásokhoz melyik redaction implementációt használja.

Az alábbi kód például azt határozza meg, hogy az HMACSHA256Redactor adatokat kell-e használni EUII .

builder.Services.AddRedaction(configure =>
{
    // Configure to use the HMAC redactor
    configure.SetHmacRedactor(configureHmac =>
    {
        // This key should be fetched from keyvault or some other secure store.
        configureHmac.Key = "thisisadummykeythatshouldbereplacedwithakeyfromakeystore";
        // Some discriminator to differentiate between different deployments of a service.
        configureHmac.KeyId = 1;

    }, new DataClassificationSet(DataClassifications.EUIIDataClassification));
});

Megjegyzés:

A HMAC redactor algoritmus kísérleti, ezért ha használja, le kell tiltania a fordító figyelmeztetését. A fenti kód körülöleli #pragma warning disable EXTEXP0002 a projektet, és #pragma warning restore EXTEXP0002 lehetővé teszi a projekt fordítását.

A paraméterhez több újraművelési implementációt RedactorOptions is hozzáadhat. Az alábbi kód például egy egyéni újrabontást ad hozzá az adatokhoz EUPI .

builder.Services.AddRedaction(configure =>
{
    // Configure to use the HMAC redactor for EUII data
    configure.SetHmacRedactor(configureHmac =>
    {
        // This key should be fetched from keyvault or some other secure store.
        configureHmac.Key = "thisisadummykeythatshouldbereplacedwithakeyfromakeystore";
        // Some discriminator to differentiate between different deployments of a service.
        configureHmac.KeyId = 1;

    }, new DataClassificationSet(DataClassifications.EUIIDataClassification));

    // Configure a custom redactor for EUPI data
    configure.SetRedactor<EShopCustomRedactor>(new DataClassificationSet(DataClassifications.EUPIDataClassification));
});

Újraműveltség engedélyezése a naplózási keretrendszerben

A következő lépés az újraműveltség engedélyezése a naplózási keretrendszerben. Ezt úgy végezheti el, hogy a tulajdonságot az .EnableRedaction alkalmazásnaplózási generátorra állítja. A példaalkalmazás esetében a kód a következő:

builder.Services.AddLogging(logging => 
{
    logging.EnableRedaction();
    logging.AddJsonConsole(); //Enable structure logs on the console to view the redacted data.
});

A fenti kód használatával létrehozhat egy új naplózót, amely a redaction szolgáltatást használja. Implementáljon egy új LogOrders naplózót, ahol rendelési adatokat szeretne írni a naplókba.

public static partial class Log
{
    [LoggerMessage(1, LogLevel.Information, "Write the Order data formatted as JSON: {order}")]
    public static partial void LogOrders(this ILogger logger, [LogProperties] Order order);
}

Egyéni újraaction implementáció létrehozása

A Microsoft lehetővé teszi, hogy egyéni újraművelési implementációt hozzon létre. Egyéni újraművelést fog használni, ha saját algoritmussal szeretné újrakontolni az adatokat. Implementáljunk egy egyéni redaktort, amely a bizalmas adatokat lecseréli a *****gombra.

Az egyéni redaktornak implementálnia kell az osztályt Redactor . Az osztálynak két metódust kell implementálnia:

public class EShopCustomRedactor : Redactor
{
    private const string Stars = "*****";

    public override int GetRedactedLength(ReadOnlySpan<char> input) => Stars.Length;

    public override int Redact(ReadOnlySpan<char> source, Span<char> destination)
    {
        Stars.CopyTo(destination);
        return Stars.Length;
    }
}

A példaarchitektúrában eShopLite ezt az osztályt hozzáadhatja a DataEntities projekthez az adatbesorolási kód alatti Compliance.cs fájlban.