Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Redaction pomáhá sanitizovat nebo maskovat citlivé informace v protokolech, chybových zprávách nebo jiných výstupech. Tím budete dodržovat pravidla ochrany osobních údajů a chránit citlivá data. Je užitečné v aplikacích, které zpracovávají osobní údaje, finanční informace nebo jiné důvěrné datové body.
Instalace balíčku redaction
Začněte instalací 📦 balíčku NuGet Microsoft.Extensions.Compliance.Redaction :
dotnet add package Microsoft.Extensions.Compliance.Redaction
Nebo pokud používáte sadu .NET 10+ SDK:
dotnet package add Microsoft.Extensions.Compliance.Redaction
Dostupné redaktory
Redaktory jsou zodpovědné za úpravu citlivých dat. Redakce, nahrazování nebo maskování citlivých informací. Zvažte následující dostupné redaktory poskytované knihovnou:
- Nahradí ErasingRedactor všechny vstupy prázdným řetězcem.
- Používá se HmacRedactor s
HMACSHA256ke kódování dat, která mají být upravena.
Příklad použití
Pokud chcete používat předdefinované redaktory, musíte zaregistrovat požadované služby. Zaregistrujte služby pomocí jedné z dostupných AddRedaction metod, jak je popsáno v následujícím seznamu:
- AddRedaction(IServiceCollection): Zaregistruje implementaci IRedactorProvider v sadě IServiceCollection.
-
AddRedaction(IServiceCollection, Action<IRedactionBuilder>): Zaregistruje implementaci IRedactorProvider v IServiceCollection prostředí a konfiguruje dostupné redaktory s daným
configuredelegátem.
Konfigurace redactoru
Získání redaktorů za běhu pomocí IRedactorProvider. Můžete implementovat vlastního poskytovatele a zaregistrovat ho v rámci volání AddRedaction, nebo použít poskytovatele výchozího. Konfigurujte redaktory pomocí těchto IRedactionBuilder metod:
// This will use the default redactor, which is the ErasingRedactor
var serviceCollection = new ServiceCollection();
serviceCollection.AddRedaction();
// Using the default redactor provider:
serviceCollection.AddRedaction(redactionBuilder =>
{
// Assign a redactor to use for a set of data classifications.
redactionBuilder.SetRedactor<StarRedactor>(
MyTaxonomyClassifications.Private,
MyTaxonomyClassifications.Personal);
// Assign a fallback redactor to use when processing classified data for which no specific redactor has been registered.
// The `ErasingRedactor` is the default fallback redactor. If no redactor is configured for a data classification then the data will be erased.
redactionBuilder.SetFallbackRedactor<MyFallbackRedactor>();
});
// Using a custom redactor provider:
builder.Services.AddSingleton<IRedactorProvider, StarRedactorProvider>();
Vzhledem k tomu, jak jsou data klasifikována ve vašem kódu:
public static class MyTaxonomyClassifications
{
public static string Name => "MyTaxonomy";
public static DataClassification Private => new(Name, nameof(Private));
public static DataClassification Public => new(Name, nameof(Public));
public static DataClassification Personal => new(Name, nameof(Personal));
}
Nakonfigurujte nástroj HMAC pro úpravy
Konfigurujte nástroj HMAC redactor pomocí těchto IRedactionBuilder metod:
var serviceCollection = new ServiceCollection();
serviceCollection.AddRedaction(builder =>
{
builder.SetHmacRedactor(
options =>
{
options.KeyId = 1234567890;
options.Key = Convert.ToBase64String("1234567890abcdefghijklmnopqrstuvwxyz");
},
// Any data tagged with Personal or Private attributes will be redacted by the Hmac redactor.
MyTaxonomyClassifications.Personal, MyTaxonomyClassifications.Private,
// "DataClassificationSet" lets you compose multiple data classifications:
// For example, here the Hmac redactor will be used for data tagged
// with BOTH Personal and Private (but not one without the other).
new DataClassificationSet(MyTaxonomyClassifications.Personal,
MyTaxonomyClassifications.Private));
});
Případně ho nakonfigurujte tímto způsobem:
var serviceCollection = new ServiceCollection();
serviceCollection.AddRedaction(builder =>
{
builder.SetHmacRedactor(
Configuration.GetSection("HmacRedactorOptions"), MyTaxonomyClassifications.Personal);
});
Tuto část vložte do konfiguračního souboru JSON:
{
"HmacRedactorOptions": {
"KeyId": 1234567890,
"Key": "1234567890abcdefghijklmnopqrstuvwxyz"
}
}
- HmacRedactorOptions vyžaduje nastavení vlastností HmacRedactorOptions.Key a HmacRedactorOptions.KeyId.
- Měl by být
Keyve formátu base64 a mít délku nejméně 44 znaků. Pro každé hlavní nasazení služby použijte jedinečný klíč. Udržujte klíčový materiál v tajnosti a pravidelně ho obměňujte. - Ke každé upravené hodnotě se připojuje
KeyIdpro identifikaci klíče použitého k hashování dat. - Různá ID klíčů znamenají, že hodnoty nesouvisejí a nejde je použít pro korelaci.
Poznámka:
HmacRedactor je stále experimentální, takže předchozí metody způsobí upozornění EXTEXP0002, že není ještě stabilní.
Pokud ho chcete použít, přidejte <NoWarn>$(NoWarn);EXTEXP0002</NoWarn> do souboru projektu nebo přidejte #pragma warning disable EXTEXP0002 kolem volání SetHmacRedactor.
Konfigurace vlastního redactoru
Pokud chcete vytvořit vlastní editor, definujte podtřídu, která dědí z Redactor:
public sealed class StarRedactor : 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;
}
}
Vytvoření vlastního poskytovatele editoru
Rozhraní IRedactorProvider poskytuje instance redaktorů na základě klasifikace dat. Pokud chcete vytvořit vlastního poskytovatele pro redaktor, zděděte ho z IRedactorProvider, jak je znázorněno v následujícím příkladu:
using Microsoft.Extensions.Compliance.Classification;
using Microsoft.Extensions.Compliance.Redaction;
public sealed class StarRedactorProvider : IRedactorProvider
{
private static readonly StarRedactor _starRedactor = new();
public static StarRedactorProvider Instance { get; } = new();
public Redactor GetRedactor(DataClassificationSet classifications) => _starRedactor;
}
Protokolování citlivých informací
Protokolování je běžným zdrojem náhodné expozice dat. Citlivé informace, jako jsou osobní údaje, přihlašovací údaje nebo finanční údaje, by se nikdy neměly zapisovat do protokolů ve formátu prostého textu. Chcete-li tomu zabránit, při protokolování potenciálně citlivých dat vždy používejte redaction.
Postup protokolování citlivých dat
- Nainstalujte balíček rozšíření telemetrie: NainstalujteMicrosoft.Extensions.Telemetry, aby bylo možné pomocí rozšířeného protokolovače povolit funkci redaction.
- Nastavení redakce dat: Integrujte redakční nástroje s kanálem protokolování voláním AddRedaction(IServiceCollection) metody, aby se citlivé údaje před zápisem do protokolů automaticky vyčistily nebo zamaskovaly.
- Identifikace citlivých polí: Zjistěte, která data ve vaší aplikaci jsou citlivá a vyžadují ochranu, a označte je příslušnou klasifikací dat.
- Zkontrolujte výstup protokolu: Pravidelně auditujte protokoly, abyste měli jistotu, že se nezjistí žádná citlivá data.
Příklad: Redigování dat v rámci protokolů
Při použití microsoft.Extensions.Logging můžete zkombinovat redaction s protokolováním následujícím způsobem:
using Microsoft.Extensions.Telemetry;
using Microsoft.Extensions.Compliance.Redaction;
var services = new ServiceCollection();
services.AddLogging(builder =>
{
// Enable redaction.
builder.EnableRedaction();
});
services.AddRedaction(builder =>
{
// configure redactors for your data classifications
builder.SetRedactor<StarRedactor>(MyTaxonomyClassifications.Private);
});
// Use annotations to mark sensitive data.
// For example, apply the Private classification to SSN data.
[LoggerMessage(0, LogLevel.Information, "User SSN: {SSN}")]
public static partial void LogPrivateInformation(
this ILogger logger,
[MyTaxonomyClassifications.Private] string SSN);
public void TestLogging()
{
LogPrivateInformation("MySSN");
}
Výstup by měl vypadat takto:
User SSN: *****
Tím se zajistí, že se citlivá data před zaprotokolováním revidují, což snižuje riziko úniku dat.