Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La clasificación de datos le ayuda a clasificar (o clasificar) datos en función de su nivel de confidencialidad y protección. La DataClassification estructura le permite etiquetar información confidencial y aplicar directivas basadas en estas etiquetas.
- DataClassification.TaxonomyName: identifica el sistema de clasificación.
- DataClassification.Value: representa la etiqueta específica dentro de la taxonomía.
En algunas situaciones, es posible que tenga que especificar que los datos explícitamente no tienen ninguna clasificación de datos, esto se logra con DataClassification.None. Del mismo modo, es posible que tenga que especificar que la clasificación de datos es desconocida; use DataClassification.Unknown en estos casos.
Instalación del paquete
Para empezar, instale el 📦 paquete NuGet Microsoft.Extensions.Compliance.Abstractions :
dotnet add package Microsoft.Extensions.Compliance.Abstractions
O bien, si usa el SDK de .NET 10+:
dotnet package add Microsoft.Extensions.Compliance.Abstractions
Crear clasificaciones personalizadas
Defina clasificaciones personalizadas mediante la creación static
de miembros para distintos tipos de datos confidenciales. Esto le ofrece una manera coherente de etiquetar y controlar los datos en toda la aplicación. Considere la siguiente clase de ejemplo:
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);
}
Si desea compartir la taxonomía de clasificación personalizada con otras aplicaciones, esta clase y sus miembros deben ser public
en lugar de internal
. Por ejemplo, puede tener una biblioteca compartida que contenga clasificaciones personalizadas, que puede usar en varias aplicaciones.
DataClassificationSet permite crear varias clasificaciones de datos en un único conjunto. Esto le permite clasificar los datos con varias clasificaciones de datos. Además, las API de redacción de .NET usan un DataClassificationSet.
Nota:
Varias clasificaciones de datos que se unen como DataClassificationSet se tratan como una única clasificación. Puede considerarlo como una operación lógica AND
. Por ejemplo, si configuró la redacción para los datos clasificados como DataClassificationSet de PrivateInformation
y SocialSecurityNumber
, no se aplicará a los datos clasificados como solo PrivateInformation
o solo SocialSecurityNumber
.
Creación de atributos de clasificación personalizados
Cree atributos personalizados en función de las clasificaciones personalizadas. Use estos atributos para etiquetar los datos con la clasificación correcta. Tenga en cuenta la siguiente definición de clase de atributo personalizado:
public sealed class PrivateInformationAttribute : DataClassificationAttribute
{
public PrivateInformationAttribute()
: base(MyTaxonomyClassifications.PrivateInformation)
{
}
}
El código anterior declara un atributo de información privada, que es una subclase del DataClassificationAttribute tipo . Define un constructor sin parámetros y pasa el personalizado DataClassification a su base
.
Configuración de clasificación del enlace de datos
Para enlazar la configuración de clasificación de datos, use el sistema de configuración de .NET. Por ejemplo, suponiendo que estás usando un proveedor de configuración JSON, elappsettings.json se podría definir así:
{
"Key": {
"PhoneNumber": "MyTaxonomy:PrivateInformation",
"ExampleDictionary": {
"CreditCard": "MyTaxonomy:CreditCardNumber",
"SSN": "MyTaxonomy:SocialSecurityNumber"
}
}
}
Ahora tenga en cuenta el siguiente enfoque de patrón de opciones, que enlaza estas opciones de configuración al 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}");
}
}
}