Megosztás:


Adatbesorolás a .NET-ben

Az adatbesorolás segít az adatok besorolásában (vagy besorolásában) a bizalmassági és védelmi szint alapján. A DataClassification struktúra lehetővé teszi a bizalmas információk címkézését és a szabályzatok kikényszerítését ezen címkék alapján.

Bizonyos esetekben szükséges lehet megadnia, hogy az adatoknak kifejezetten nincs adatbesorolásuk, ezt a DataClassification.Nonejelöli. Hasonlóképpen előfordulhat, hogy meg kell adnia, hogy az adatbesorolás ismeretlen, ilyen esetekben a DataClassification.Unknown-t kell használnia.

A csomag telepítése

Első lépésként telepítse a 📦 Microsoft.Extensions.Compliance.Abstractions NuGet-csomagot:

dotnet add package Microsoft.Extensions.Compliance.Abstractions

Vagy ha a .NET 10+ SDK-t használod:

dotnet package add Microsoft.Extensions.Compliance.Abstractions

Egyéni besorolások létrehozása

Egyéni besorolások definiálásához hozzon létre static tagokat a különböző típusú bizalmas adatokhoz. Így egységesen címkézheti és kezelheti az adatokat az alkalmazásban. Vegye figyelembe a következő példaosztályt:

using Microsoft.Extensions.Compliance.Classification;

internal static class MyTaxonomyClassifications
{
    internal static string Name => "MyTaxonomy";

    internal static DataClassification PrivateInformation => new(Name, nameof(PrivateInformation));
    internal static DataClassification CreditCardNumber => new(Name, nameof(CreditCardNumber));
    internal static DataClassification SocialSecurityNumber => new(Name, nameof(SocialSecurityNumber));

    internal static DataClassificationSet PrivateAndSocialSet => new(PrivateInformation, SocialSecurityNumber);
}

Ha meg szeretné osztani az egyéni besorolási osztályozást más alkalmazásokkal, ennek az osztálynak és tagjainak public kell lennie internalhelyett. Létrehozhat például egy egyéni besorolásokat tartalmazó megosztott kódtárat, amelyet több alkalmazásban is használhat.

DataClassificationSet lehetővé teszi több adatbesorolás egyetlen készletbe való összeállítását. Ez lehetővé teszi az adatok több adatbesorolással való besorolását. Emellett a .NET kitakarási API-k egy DataClassificationSet-t használnak.

Megjegyzés:

Ha több adatbesorolás együtt szerepel DataClassificationSet, a rendszer egyetlen besorolásként kezeli őket. Olyan, mint egy logikus AND művelet. Ha például az olyan adatok kitakarását konfigurálta, amelyek DataClassificationSet és PrivateInformation és SocialSecurityNumber besorolásúak, az nem vonatkozik a csak PrivateInformation vagy csak SocialSecurityNumber besorolású adatokra.

Egyéni besorolási attribútumok létrehozása

Egyéni attribútumok létrehozása az egyéni besorolások alapján. Ezekkel az attribútumokkal címkézheti meg az adatokat a megfelelő besorolással. Vegye figyelembe az alábbi egyéni attribútumosztálydefiníciót:

public sealed class PrivateInformationAttribute : DataClassificationAttribute
{
    public PrivateInformationAttribute()
        : base(MyTaxonomyClassifications.PrivateInformation)
    {
    }
}

Az előző kód deklarál egy privát adatattribútumot, amely a DataClassificationAttribute típusú alosztály. Definiál egy paraméter nélküli konstruktort, és átadja az egyéni DataClassification-at a base-nek.

Adatbesorolási beállítások összekapcsolása

Az adatbesorolási beállítások kötéséhez használja a .NET konfigurációs rendszert. Tegyük fel például, hogy JSON-konfigurációszolgáltatót használ, a appsettings.json a következőképpen definiálható:

{
    "Key": {
        "PhoneNumber": "MyTaxonomy:PrivateInformation",
        "ExampleDictionary": {
            "CreditCard": "MyTaxonomy:CreditCardNumber",
            "SSN": "MyTaxonomy:SocialSecurityNumber"
        }
    }
}

Most vegye figyelembe a következő beállításminta-megközelítést, amely ezeket a konfigurációs beállításokat a TestOptions objektumhoz köti:

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Compliance.Classification;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Options;

public class TestOptions
{
    public DataClassification? PhoneNumber { get; set; }
    public IDictionary<string, DataClassification> ExampleDictionary { get; set; } = new Dictionary<string, DataClassification>();
}

class Program
{
    static void Main(string[] args)
    {
        // Build configuration from an external json file.
        IConfiguration configuration = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .Build();

        // Setup DI container and bind the configuration section "Key" to TestOptions.
        IServiceCollection services = new ServiceCollection();
        services.Configure<TestOptions>(configuration.GetSection("Key"));

        // Build the service provider.
        IServiceProvider serviceProvider = services.BuildServiceProvider();

        // Get the bound options.
        TestOptions options = serviceProvider.GetRequiredService<IOptions<TestOptions>>().Value;

        // Simple output demonstrating binding results.
        Console.WriteLine("Configuration bound to TestOptions:");
        Console.WriteLine($"PhoneNumber: {options.PhoneNumber}");
        foreach (var item in options.ExampleDictionary)
        {
            Console.WriteLine($"{item.Key}: {item.Value}");
        }
    }
}