Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A classificação de dados ajuda a categorizar (ou classificar) os dados com base em sua sensibilidade e nível de proteção. A estrutura DataClassification permite rotular informações confidenciais e aplicar políticas com base nesses rótulos.
- DataClassification.TaxonomyName: Identifica o sistema de classificação.
- DataClassification.Value: Representa o rótulo específico dentro da taxonomia.
Em algumas situações, talvez seja necessário especificar que os dados explicitamente não têm classificação de dados, isso é conseguido com DataClassification.None. Da mesma forma, talvez seja necessário especificar que a classificação de dados é desconhecida — use DataClassification.Unknown nesses casos.
Instalar o pacote
Para começar, instale o 📦 pacote Microsoft.Extensions.Compliance.Abstractions NuGet:
dotnet add package Microsoft.Extensions.Compliance.Abstractions
Ou, se você estiver usando o SDK do .NET 10+:
dotnet package add Microsoft.Extensions.Compliance.Abstractions
Criar classificações personalizadas
Defina classificações personalizadas criando membros static para diferentes tipos de dados confidenciais. Isso oferece uma maneira consistente de rotular e manipular dados em seu aplicativo. Considere a seguinte classe de exemplo:
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);
}
Se você quiser compartilhar sua taxonomia de classificação personalizada com outros aplicativos, essa classe e seus membros devem ser public em vez de internal. Por exemplo, você pode ter uma biblioteca compartilhada contendo classificações personalizadas, que você pode usar em vários aplicativos.
DataClassificationSet permite compor várias classificações de dados em um único conjunto. Isso permite que você classifique seus dados com várias classificações de dados. Além disso, as APIs de redação de texto do .NET usam um DataClassificationSet.
Observação
Várias classificações de dados reunidas como um DataClassificationSet são tratadas como uma única classificação. Você pode pensar nisso como uma operação lógica AND . Por exemplo, se você configurou a redação para dados classificados como a DataClassificationSet de PrivateInformation e SocialSecurityNumber, ela não se aplicará aos dados classificados como somente PrivateInformation ou somente SocialSecurityNumber.
Criar atributos de classificação personalizados
Crie atributos personalizados com base em suas classificações personalizadas. Use esses atributos para marcar seus dados com a classificação correta. Considere a seguinte definição de classe de atributo personalizada:
public sealed class PrivateInformationAttribute : DataClassificationAttribute
{
public PrivateInformationAttribute()
: base(MyTaxonomyClassifications.PrivateInformation)
{
}
}
O código anterior declara um atributo de informação privada, que é uma subclasse do tipo DataClassificationAttribute. Define um construtor sem parâmetros e passa o DataClassification personalizado para o seu base.
Vincular configurações de classificação de dados
Para vincular suas configurações de classificação de dados, use o sistema de configuração .NET. Por exemplo, supondo que você esteja usando um provedor de configuração JSON, sua appsettings.json pode ser definida da seguinte forma:
{
"Key": {
"PhoneNumber": "MyTaxonomy:PrivateInformation",
"ExampleDictionary": {
"CreditCard": "MyTaxonomy:CreditCardNumber",
"SSN": "MyTaxonomy:SocialSecurityNumber"
}
}
}
Agora, considere a seguinte abordagem de padrão de opções, que vincula essas definições de configuração ao objeto TestOptions:
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}");
}
}
}