Я пытаюсь реализовать защиту персональных данных для определенных c полей в базе данных (некоторые являются частью Identity
, а некоторые - в пользовательских таблицах), и я не могу найти какую-либо надлежащую документацию / примеры того, как чтобы сделать это.
Моя основная идея состояла в том, чтобы использовать встроенную. NET защиту данных ядра и просто внедрить IDataProtectionProvider
в IPersonalDataProtector
, который используется Entity Framework.
services.AddDataProtection();
services.AddTransient<ILookupProtector, LookupProtector>();
services.AddTransient<IPersonalDataProtector, Protector>();
Вот простые реализации
public class LookupProtector : ILookupProtector
{
private readonly IDataProtector dataProtector;
public LookupProtector(IDataProtectionProvider dataProtectionProvider)
{
dataProtector = dataProtectionProvider.CreateProtector("protector-key");
}
public string Protect(string keyId, string data)
{
return "";
}
public string Unprotect(string keyId, string data)
{
return "";
}
}
public class Protector : IPersonalDataProtector
{
private readonly IDataProtector dataProtector;
public Protector(IDataProtectionProvider dataProtectionProvider)
{
dataProtector = dataProtectionProvider.CreateProtector("protector-key");
}
public string Protect(string data)
{
return dataProtector.Protect(data);
}
public string Unprotect(string data)
{
return dataProtector.Unprotect(data);
}
}
Теперь я не совсем уверен, почему мне нужно реализовать ILookupProtector
(в противном случае я получаю ошибку), как используется keyId
, и если кто-то может предложить общие пример того, как реализовать это, используя ключи шифрования от Azure Key Vault.