Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A classificação de dados ajuda você a categorizar (ou classificar) dados com base em seu nível de confidencialidade e proteção. A DataClassification estrutura permite rotular informações confidenciais e impor 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 não têm explicitamente nenhuma classificação de dados, isso é obtido 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 NuGet Microsoft.Extensions.Compliance.Abstractions :
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 static membros 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 estar 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 que você componha 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 do .NET usam um DataClassificationSet.
Observação
Várias classificações de dados em conjunto como uma 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 um DataClassificationSet de PrivateInformation e SocialSecurityNumber, ele não se aplicará a dados classificados como somente PrivateInformation ou apenas SocialSecurityNumber.
Criar atributos de classificação personalizada
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 personalizado:
public sealed class PrivateInformationAttribute : DataClassificationAttribute
{
public PrivateInformationAttribute()
: base(MyTaxonomyClassifications.PrivateInformation)
{
}
}
O código anterior declara um atributo de informações privadas, que é uma subclasse do DataClassificationAttribute tipo. Ele define um construtor sem parâmetros e passa o objeto personalizado DataClassification para seu base.
Associar configurações de classificação de dados
Para associar as configurações de classificação de dados, use o sistema de configuração do .NET. Por exemplo, supondo que você esteja usando um provedor de configuração JSON, seu appsettings.json pode ser definido da seguinte maneira:
{
"Key": {
"PhoneNumber": "MyTaxonomy:PrivateInformation",
"ExampleDictionary": {
"CreditCard": "MyTaxonomy:CreditCardNumber",
"SSN": "MyTaxonomy:SocialSecurityNumber"
}
}
}
Agora considere a seguinte abordagem de padrão de opções, que associa essas configurações ao TestOptions objeto:
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}");
}
}
}