Microsoft.Extensions.Compliance.Abstractions 9.10.0
Microsoft.Extensions.Compliance.Abstractions
This package introduces data classification and data redaction features.
Install the package
From the command-line:
dotnet add package Microsoft.Extensions.Compliance.Abstractions
Or directly in the C# project file:
<ItemGroup>
  <PackageReference Include="Microsoft.Extensions.Compliance.Abstractions" Version="[CURRENTVERSION]" />
</ItemGroup>
Usage Example
Data Classification
The DataClassification structure encapsulates a classification label within a specific taxonomy for your data. It allows you to mark sensitive information and enforce policies based on classifications.
- Taxonomy Name: Identifies the classification system.
 - Value: Represents the specific label within the taxonomy.
 
Creating Custom Classifications
You can define custom classifications by creating static members that represent different types of sensitive data. This provides a consistent way to label and handle data across your application.
Example:
using Microsoft.Extensions.Compliance.Classification;
public static class MyTaxonomyClassifications
{
    public static string Name => "MyTaxonomy";
    public static DataClassification PrivateInformation => new DataClassification(Name, nameof(PrivateInformation));
    public static DataClassification CreditCardNumber => new DataClassification(Name, nameof(CreditCardNumber));
    public static DataClassification SocialSecurityNumber => new DataClassification(Name, nameof(SocialSecurityNumber));
}
Binding Data Classification Settings
You can bind data classification settings directly from your configuration using the options pattern. For example:
appsettings.json
{
    "Key": {
        "PhoneNumber": "MyTaxonomy:PrivateInformation",
        "ExampleDictionary": {
            "CreditCard": "MyTaxonomy:CreditCardNumber",
            "SSN": "MyTaxonomy:SocialSecurityNumber",
        }
    }
}
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}");
        }
    }
}
Implementing Redactors
Redactors can be implemented by inheriting from Microsoft.Extensions.Compliance.Redaction.Redactor. For example:
using Microsoft.Extensions.Compliance.Redaction;
public 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;
    }
}
Implementing Redactor Providers
Redactor Providers implement Microsoft.Extensions.Compliance.Redaction.IRedactorProvider.
For example:
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;
}
Feedback & Contributing
We welcome feedback and contributions in our GitHub repo.
Showing the top 20 packages that depend on Microsoft.Extensions.Compliance.Abstractions.
| Packages | Downloads | 
|---|---|
| 
                                                    Microsoft.Extensions.Http.Resilience
                                                     Resilience mechanisms for HTTP Client. 
                                                 | 
                                                30 | 
| 
                                                    Microsoft.Extensions.Telemetry
                                                     Provides canonical implementations of telemetry abstractions 
                                                 | 
                                                27 | 
| 
                                                    Microsoft.Extensions.Telemetry
                                                     Provides canonical implementations of telemetry abstractions. 
                                                 | 
                                                25 | 
| 
                                                    Microsoft.Extensions.Telemetry
                                                     Provides canonical implementations of telemetry abstractions. 
                                                 | 
                                                26 | 
| 
                                                    Microsoft.Extensions.Telemetry
                                                     Provides canonical implementations of telemetry abstractions. 
                                                 | 
                                                27 | 
| 
                                                    Microsoft.Extensions.Telemetry
                                                     Provides canonical implementations of telemetry abstractions. 
                                                 | 
                                                28 | 
| 
                                                    Microsoft.Extensions.Telemetry
                                                     Provides canonical implementations of telemetry abstractions. 
                                                 | 
                                                30 | 
| 
                                                    Microsoft.Extensions.Telemetry
                                                     Provides canonical implementations of telemetry abstractions. 
                                                 | 
                                                31 | 
| 
                                                    Microsoft.Extensions.Telemetry
                                                     Provides canonical implementations of telemetry abstractions. 
                                                 | 
                                                33 | 
| 
                                                    Microsoft.Extensions.Telemetry.Abstractions
                                                     Common abstractions for high-level telemetry primitives. 
                                                 | 
                                                26 | 
| 
                                                    Microsoft.Extensions.Telemetry.Abstractions
                                                     Common abstractions for high-level telemetry primitives. 
                                                 | 
                                                27 | 
| 
                                                    Microsoft.Extensions.Telemetry.Abstractions
                                                     Common abstractions for high-level telemetry primitives. 
                                                 | 
                                                29 | 
| 
                                                    Microsoft.Extensions.Telemetry.Abstractions
                                                     Common abstractions for high-level telemetry primitives. 
                                                 | 
                                                31 | 
| 
                                                    Microsoft.Extensions.Telemetry.Abstractions
                                                     Common abstractions for high-level telemetry primitives. 
                                                 | 
                                                32 | 
.NET 8.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
 - Microsoft.Extensions.ObjectPool (>= 8.0.21)
 
.NET 9.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.10)
 - Microsoft.Extensions.ObjectPool (>= 9.0.10)
 
.NET Standard 2.0
- Microsoft.Bcl.HashCode (>= 1.1.1)
 - Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
 - Microsoft.Extensions.ObjectPool (>= 8.0.21)
 - System.Memory (>= 4.5.5)
 
| Version | Downloads | Last updated | 
|---|---|---|
| 9.10.0 | 4 | 10/16/2025 | 
| 9.9.0 | 5 | 09/14/2025 | 
| 9.8.0 | 8 | 08/14/2025 | 
| 9.7.0 | 10 | 07/11/2025 | 
| 9.6.0 | 12 | 06/13/2025 | 
| 9.5.0 | 12 | 05/17/2025 | 
| 9.4.0 | 15 | 04/10/2025 | 
| 9.3.0 | 19 | 03/12/2025 | 
| 9.2.0 | 18 | 02/22/2025 | 
| 9.1.0 | 22 | 02/02/2025 | 
| 9.0.0 | 23 | 11/14/2024 | 
| 9.0.0-preview.9.24507.7 | 19 | 11/14/2024 | 
| 9.0.0-preview.8.24460.1 | 18 | 11/14/2024 | 
| 9.0.0-preview.7.24412.10 | 22 | 11/14/2024 | 
| 9.0.0-preview.6.24353.1 | 22 | 11/14/2024 | 
| 9.0.0-preview.5.24311.7 | 20 | 11/14/2024 | 
| 9.0.0-preview.4.24271.2 | 30 | 06/01/2024 | 
| 9.0.0-preview.3.24209.3 | 26 | 06/03/2024 | 
| 9.0.0-preview.2.24157.4 | 27 | 06/03/2024 | 
| 9.0.0-preview.1.24108.1 | 22 | 06/03/2024 | 
| 8.10.0 | 26 | 11/14/2024 | 
| 8.9.1 | 25 | 11/14/2024 | 
| 8.9.0 | 20 | 11/04/2024 | 
| 8.8.0 | 25 | 11/04/2024 | 
| 8.7.0 | 22 | 11/04/2024 | 
| 8.6.0 | 28 | 11/14/2024 | 
| 8.5.0 | 32 | 06/03/2024 | 
| 8.4.0 | 27 | 06/03/2024 | 
| 8.3.0 | 25 | 06/03/2024 | 
| 8.2.0 | 26 | 06/03/2024 | 
| 8.1.0 | 27 | 06/03/2024 | 
| 8.0.0 | 28 | 06/03/2024 | 
| 8.0.0-rc.2.23510.2 | 23 | 06/03/2024 | 
| 8.0.0-rc.1.23453.1 | 25 | 06/03/2024 | 
| 8.0.0-preview.7.23407.5 | 28 | 06/03/2024 | 
| 8.0.0-preview.6.23360.2 | 22 | 06/03/2024 | 
| 8.0.0-preview.5.23308.3 | 23 | 06/03/2024 | 
| 8.0.0-preview.4.23273.7 | 24 | 06/03/2024 |