데이터 분류는 민감도 및 보호 수준에 따라 데이터를 분류(또는 분류)하는 데 도움이 됩니다. DataClassification 구조를 사용하면 중요한 정보에 레이블을 지정하고 이러한 레이블에 따라 정책을 적용할 수 있습니다.
- DataClassification.TaxonomyName: 분류 시스템을 식별합니다.
- DataClassification.Value: 분류 내의 특정 레이블을 나타냅니다.
경우에 따라 데이터에 명시적으로 데이터 분류가 없음을 지정해야 할 수 있습니다. 이 작업은 DataClassification.None을 사용하여 수행됩니다. 마찬가지로 데이터 분류를 알 수 없음을 지정해야 할 수 있습니다. 이러한 경우 DataClassification.Unknown 사용합니다.
패키지 설치
시작하려면 📦 Microsoft.Extensions.Compliance.Abstractions NuGet 패키지를 설치합니다.
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 여러 데이터 분류를 단일 집합으로 작성할 수 있습니다. 이렇게 하면 여러 데이터 분류를 사용하여 데이터를 분류할 수 있습니다. 또한 .NET 편집 API는 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}");
}
}
}
.NET