Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Классификация данных помогает классифицировать (или классифицировать) данные на основе уровня конфиденциальности и защиты. Структура DataClassification позволяет пометить конфиденциальную информацию и применить политики на основе этих меток.
- DataClassification.TaxonomyName: определяет систему классификации.
- DataClassification.Value: представляет конкретную метку в таксономии.
В некоторых ситуациях может потребоваться указать, что данные не имеют явной классификации данных, это достигается с помощью DataClassification.None. Аналогичным образом может потребоваться указать, что классификация данных неизвестна— в этих случаях используется DataClassification.Unknown .
Установка пакета
Чтобы приступить к работе, установите 📦 пакет NuGet Microsoft.Extensions.Compliance.Abstractions :
dotnet add package Microsoft.Extensions.Compliance.Abstractions
Или, если вы используете .NET 10+ SDK:
dotnet package add Microsoft.Extensions.Compliance.Abstractions
Создание настраиваемой классификации
Определите пользовательские классификации путем создания static элементов для различных типов конфиденциальных данных. Это обеспечивает согласованный способ маркировки и обработки данных в приложении. Рассмотрим следующий пример класса:
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);
}
Если вы хотите предоставить общий доступ к таксономии пользовательской классификации другим приложениям, этот класс и его члены должны быть public вместо internal. Например, можно использовать общую библиотеку, содержащую пользовательские классификации, которые можно использовать в нескольких приложениях.
DataClassificationSet позволяет создавать несколько классификаций данных в одном наборе. Это позволяет классифицировать данные с помощью нескольких классификаций данных. Кроме того, API редакции .NET используют DataClassificationSet.
Замечание
Несколько классификаций данных, которые объединяются, рассматриваются как DataClassificationSet единая классификация. Его можно рассматривать как логическую AND операцию. Например, если вы настроили редактирование для данных, классифицируемых как DataClassificationSet, PrivateInformation и SocialSecurityNumber, оно не будет применяться к данным, классифицируемым только как PrivateInformation или только как SocialSecurityNumber.
Создание настраиваемых атрибутов классификации
Создайте настраиваемые атрибуты на основе пользовательских классификаций. Используйте эти атрибуты для тегов данных с правильной классификацией. Рассмотрим следующее определение класса настраиваемых атрибутов:
public sealed class PrivateInformationAttribute : DataClassificationAttribute
{
public PrivateInformationAttribute()
: base(MyTaxonomyClassifications.PrivateInformation)
{
}
}
Предыдущий код объявляет атрибут частной информации, который является подклассом DataClassificationAttribute типа. Он определяет конструктор без параметров и передает пользовательский DataClassification в base.
Привязка параметров классификации данных
Чтобы привязать параметры классификации данных, используйте систему конфигурации .NET. Например, если вы используете провайдер конфигурации JSON, appsettings.json можно определить следующим образом:
{
"Key": {
"PhoneNumber": "MyTaxonomy:PrivateInformation",
"ExampleDictionary": {
"CreditCard": "MyTaxonomy:CreditCardNumber",
"SSN": "MyTaxonomy:SocialSecurityNumber"
}
}
}
Теперь рассмотрим следующий подход к шаблону параметров, который привязывает эти параметры конфигурации к объекту 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}");
}
}
}