Obsługa zasad dotyczących całej maszyny w usłudze Data Protection w programie ASP.NET Core

Autor: Rick Anderson

W przypadku uruchamiania w systemie Windows system ochrony danych ma ograniczoną obsługę ustawiania domyślnych zasad dla wszystkich aplikacji korzystających z ASP.NET Core Data Protection. Ogólne założenie polega na tym, że administrator może chcieć zmienić ustawienie domyślne, takie jak używane algorytmy lub okres istnienia klucza, bez konieczności ręcznego aktualizowania każdej aplikacji na maszynie.

Ostrzeżenie

Administrator systemu może ustawić domyślne zasady, ale nie może go wymusić. Deweloper aplikacji zawsze może zastąpić dowolną wartość jedną z własnych opcji. Domyślne zasady dotyczą tylko aplikacji, w których deweloper nie określił jawnej wartości ustawienia.

Ustawianie zasad domyślnych

Aby ustawić zasady domyślne, administrator może ustawić znane wartości w rejestrze systemowym w następującym kluczu rejestru:

HKLM\SOFTWARE\Microsoft\DotNetPackages\Microsoft.AspNetCore.DataProtection

Jeśli korzystasz z 64-bitowego systemu operacyjnego i chcesz wpłynąć na zachowanie aplikacji 32-bitowych, pamiętaj, aby skonfigurować odpowiednik Wow6432Node powyższego klucza.

Obsługiwane wartości przedstawiono poniżej.

Wartość Type Opis
EncryptionType string Określa, które algorytmy mają być używane do ochrony danych. Wartość musi być CNG-CBC, CNG-GCM lub Zarządzana i została opisana bardziej szczegółowo poniżej.
DefaultKeyLifetime DWORD Określa okres istnienia nowo wygenerowanych kluczy. Wartość jest określona w dniach i musi być >= 7.
KeyEscrowSinks string Określa typy używane do deponowania kluczy. Wartość jest rozdzieloną średnikami listą ujściów escrow kluczy, gdzie każdy element na liście jest kwalifikowaną nazwą typu, który implementuje IKeyEscrowSinkelement .

Typy szyfrowania

Jeśli wartość EncryptionType to CNG-CBC, system jest skonfigurowany do używania symetrycznego szyfrowania bloków CBC w celu zachowania poufności i HMAC na potrzeby autentyczności z usługami udostępnianymi przez CNG systemu Windows (zobacz Określanie niestandardowych algorytmów CNG systemu Windows, aby uzyskać więcej szczegółów). Obsługiwane są następujące dodatkowe wartości, z których każda odpowiada właściwości w typie CngCbcAuthenticatedEncryption Ustawienia.

Wartość Type Opis
EncryptionAlgorithm string Nazwa symetrycznego algorytmu szyfrowania bloku zrozumiałego przez CNG. Ten algorytm jest otwierany w trybie CBC.
EncryptionAlgorithmProvider string Nazwa implementacji dostawcy CNG, która może utworzyć algorytm EncryptionAlgorithm.
EncryptionAlgorithmKeySize DWORD Długość klucza (w bitach) do uzyskania dla algorytmu szyfrowania bloków symetrycznych.
Algorytm string Nazwa algorytmu skrótu zrozumiałego przez CNG. Ten algorytm jest otwierany w trybie HMAC.
HashAlgorithmProvider string Nazwa implementacji dostawcy CNG, która może utworzyć algorytm HashAlgorithm.

Jeśli wartość EncryptionType to CNG-GCM, system jest skonfigurowany do używania symetrycznego szyfrowania bloków Galois/Counter Mode w celu zachowania poufności i autentyczności z usługami udostępnianymi przez CNG systemu Windows (zobacz Określanie niestandardowych algorytmów CNG systemu Windows, aby uzyskać więcej szczegółów). Obsługiwane są następujące dodatkowe wartości, z których każda odpowiada właściwości w typie CngGcmAuthenticatedEncryption Ustawienia.

Wartość Type Opis
EncryptionAlgorithm string Nazwa symetrycznego algorytmu szyfrowania bloku zrozumiałego przez CNG. Ten algorytm jest otwierany w trybie Galois/Counter.
EncryptionAlgorithmProvider string Nazwa implementacji dostawcy CNG, która może utworzyć algorytm EncryptionAlgorithm.
EncryptionAlgorithmKeySize DWORD Długość klucza (w bitach) do uzyskania dla algorytmu szyfrowania bloków symetrycznych.

Jeśli wartość EncryptionType jest zarządzana, system jest skonfigurowany do używania zarządzanego algorytmu SymmetricAlgorithm na potrzeby poufności i keyedHashAlgorithm pod kątem autentyczności (zobacz Określanie niestandardowych algorytmów zarządzanych , aby uzyskać więcej szczegółów). Obsługiwane są następujące dodatkowe wartości, z których każda odpowiada właściwości w typie ManagedAuthenticatedEncryption Ustawienia.

Wartość Type Opis
EncryptionAlgorithmType string Nazwa kwalifikowana przez zestaw typu, który implementuje SymmetricAlgorithm.
EncryptionAlgorithmKeySize DWORD Długość klucza (w bitach) do uzyskania dla algorytmu szyfrowania symetrycznego.
ValidationAlgorithmType string Kwalifikowana przez zestaw nazwa typu, który implementuje keyedHashAlgorithm.

Jeśli typ EncryptionType ma inną wartość inną niż null lub pustą, system ochrony danych zgłasza wyjątek podczas uruchamiania.

Ostrzeżenie

Podczas konfigurowania domyślnego ustawienia zasad, które obejmuje nazwy typów (EncryptionAlgorithmType, ValidationAlgorithmType, KeyEscrowSinks), typy muszą być dostępne dla aplikacji. Oznacza to, że w przypadku aplikacji działających w środowisku CLR dla komputerów zestawy zawierające te typy powinny znajdować się w globalnej pamięci podręcznej zestawów (GAC). W przypadku aplikacji ASP.NET Core działających na platformie .NET Core należy zainstalować pakiety zawierające te typy.