Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Efektywne zarządzanie kluczami ma kluczowe znaczenie dla optymalizacji wydajności, zabezpieczeń i wydajności modułu HSM w chmurze Azure. Ten artykuł zawiera najlepsze praktyki i zalecenia dotyczące obsługi limitów przechowywania kluczy, zabezpieczeń związanych z owijaniem kluczy, kluczowych atrybutów i strategii buforowania.
Zarządzanie limitem przechowywania kluczy
Sprzętowe moduły zabezpieczeń (HSM) mają limity maksymalnej liczby tokenów i kluczy sesji, które mogą być przechowywane jednocześnie. Aby uzyskać szczegółowe informacje na temat tych limitów, zobacz Azure Limity usługi HSM w chmurze.
Aby uniknąć przekroczenia Azure limitów usługi HSM w chmurze, rozważ użycie co najmniej jednej z następujących strategii efektywnego zarządzania kluczami:
- Rotacja kluczy: Obracanie kluczy często w celu zapewnienia wymiany starszych kluczy i zwolnienia miejsca dla nowych. Częsta rotacja pomaga utrzymanie modułu HSM w ramach limitów przechowywania, zapewniając bezpieczeństwo.
- Hierarchia kluczy: użyj hierarchii kluczy, w której klucze podstawowe są używane do szyfrowania innych kluczy. Ta hierarchia zmniejsza liczbę kluczy, które muszą być przechowywane bezpośrednio w module HSM.
- Udostępnianie kluczy i ponowne użycie: w przypadku aplikacji z wieloma sesjami lub tokenami rozważ udostępnienie kluczy lub ponowne użycie ich w celu zmniejszenia całkowitej liczby przechowywanych.
- Usuwanie klucza: po zakończeniu sesji nie potrzebujesz już klucza (na przykład po zakończeniu sesji), upewnij się, że jest bezpiecznie usuwany, aby zwolnić miejsce dla nowych kluczy.
Uwaga
Poczekaj 24 godziny po utworzeniu klucza, aby upewnić się, że synchronizacja i kopie zapasowe w ramach wdrożenia modułu HSM w chmurze Azure zostały ukończone.
Ostrzeżenie
Jeśli klucz istnieje tylko w jednym węźle i ten węzeł ulegnie awarii bez kopii zapasowej, możesz trwale zablokować dostęp do swoich zaszyfrowanych danych bez możliwości odzyskania. Zawsze sprawdzaj, czy klucze są synchronizowane we wszystkich węzłach i utrzymują regularne kopie zapasowe.
Podczas tworzenia użytkowników jest to odpowiedzialność klienta za zapewnienie obecności użytkowników we wszystkich węzłach klastra modułu HSM w chmurze Azure. Aby uzyskać więcej informacji, zobacz Zapewnianie, że użytkownicy modułu HSM są dostępni we wszystkich węzłach klastra. Aby uzyskać instrukcje dotyczące synchronizowania brakujących kluczy, zobacz Synchronizowanie użytkowników i kluczy w węzłach Azure Cloud HSM.
Zarządzanie zawijaniem kluczy
Używasz atrybutu EXTRACTABLE w Azure Cloud HSM do oznaczenia kluczy jako wyodrębnialne lub niewyodrębnialne. Domyślnie klucze HSM są ustawiane jako możliwe do wyodrębnienia. Klucze możliwe do wyodrębnienia można wyeksportować z modułu HSM przy użyciu mechanizmu owijania klucza, który je szyfruje. Następnie klucze muszą zostać rozpakowane przy użyciu tego samego klucza do owinięcia przed użyciem.
Natomiast kluczy nieeksportowalnych nie można w żadnym razie eksportować z Azure Cloud HSM. Po ustawieniu kluczy jako niewyodrębnialne nie ma możliwości zmiany ich na wyodrębnialne. Należy dokładnie rozważyć, czy potrzebne jest, aby klucze były wyciągane i odpowiednio ustawić atrybut klucza.
Jeśli aplikacja wymaga zawijania kluczy, zalecamy użycie zaufanego zawijania kluczy. Takie podejście ogranicza użytkownikom modułu HSM opakowywanie i rozpakowywanie tylko tych kluczy, które administrator jawnie wskazał jako zaufane.
EXTRACTABLE=0: klucze utworzone za pomocą atrybutu ustawionegoEXTRACTABLEna0nie mogą być eksportowane, z wyjątkiem obiektów maskowanych. Są one idealne dla kluczy, które nigdy nie powinny opuszczać modułu HSM.WRAP_WITH_TRUSTED=1: Domyślnie klucze, które można wyodrębnić, utworzone za pomocą Azure Cloud HSM SDK, używają zaufanego opakowywania kluczy. Jednak specyfikacja PKCS#11 domyślnie ustawiaWRAP_WITH_TRUSTEDnaCK_FALSE (0). Bez zaufanego zawijania kluczy użytkownik kryptografii może wyeksportować prywatny materiał klucza bez żadnej autoryzacji. Każdy, kto ma access do aplikacji klienckiej i używa tych kluczy, może je wyeksportować w postaci zwykłego tekstu.
Obsługa atrybutów klucza dla dostawców modułu HSM w chmurze Azure
| Dostawca modułu HSM w chmurze Azure | Atrybuty domyślne dla kluczy prywatnych i symetrycznych | Obsługuje funkcję EXTRACTABLE=0 | Obsługuje konfigurowanie WRAP_WITH_TRUSTED w ramach dostawcy | Domyślna wartość WRAP_WITH_TRUSTED |
|---|---|---|---|---|
azcloudhsm_util |
EXTRACTABLE, !WRAP_WITH_TRUSTED |
Tak | Tak |
1 (0 można ustawić za pomocą parametrów) |
| PKCS#11 |
EXTRACTABLE, !WRAP_WITH_TRUSTED |
Tak | Tak |
0 (określone w specyfikacji PKCS#11, ale można ustawić na 1 w interfejsie API) |
| CNG/KSP |
EXTRACTABLE, !WRAP_WITH_TRUSTED |
Nie. | Nie. | 1 |
| Silnik OpenSSL |
EXTRACTABLE, !WRAP_WITH_TRUSTED |
Nie. | Nie. | 1 |
| JCE |
!EXTRACTABLE, !PERSISTANT, !WRAP_WITH_TRUSTED |
Tak | Nie. | 1 |
Klucze tworzone przy użyciu interfejsu API kryptografii nowej generacji (CNG) są zawsze ustawione jako EXTRACTABLE. Za pomocą narzędzia CavImportKey.exe można zaimportować klucze z innych narzędzi Azure Cloud HSM do dostawcy CNG poprzez ich uchwyty kluczy. Ten import tworzy klucz u dostawcy magazynowania kluczy (KSP) z istniejących uchwytów kluczy.
W przypadku urzędów certyfikacji korzystających z CNG lub KSP jako dostawcy wszystkie klucze wygenerowane w dostawcy CNG są nadal oznaczone jako możliwe do wyodrębnienia. Jeśli klucz jest oznaczony jako TRUSTED w module HSM (na przykład klucz szyfrujący generowany przez użytkownika), może służyć do wyodrębnienia klucza prywatnego w postaci zwykłego tekstu, nawet po zmianie WRAP_WITH_TRUSTED.
W takich przypadkach zalecamy użycie polecenia azcloudhsm_util w celu wygenerowania klucza, jeśli nie chcesz, aby został on oznaczony jako EXTRACTABLE. Zalecamy użycie getAttribute polecenia w celu sprawdzenia, czy wygenerowane klucze mają żądane atrybuty.
Stosowanie atrybutów klucza do zarządzania uprawnieniami klucza
Użyj kluczowych atrybutów, aby zarządzać kluczowymi możliwościami, takimi jak uprawnienia. Podczas generowania klucza użyj atrybutów klucza, aby określić uprawnienia, które zezwalają na określone operacje dla tego klucza lub ograniczają je. Zalecamy generowanie kluczy tylko przy użyciu atrybutów niezbędnych do ich zamierzonego celu.
Na przykład klucz Advanced Encryption Standard (AES), który jest używany do szyfrowania, nie powinien mieć możliwości zawijania kluczy poza modułem HSM. Aby uzyskać więcej informacji na temat atrybutów zestawu AZURE Cloud HSM SDK, zobacz integration guides.
Optymalizowanie opóźnienia przez buforowanie obiektów kluczy
Aby zmniejszyć opóźnienie, należy rozważyć buforowanie obiektów kluczy zawsze, gdy jest to możliwe. W wyszukiwaniu kluczy każdy moduł HSM w klastrze HSM w chmurze Azure jest odpytywany. Ta operacja jest kosztowna i nie jest wydajnie skalowana. Metoda wyszukiwania kluczy zależy od dostawcy:
- W przypadku PKCS#11 wyszukiwanie kluczy używa interfejsu
C_FindObjectsAPI. - W rozszerzeniu kryptografii Java (JCE) wyszukiwanie kluczy używa wartości
KeyStore.
Aby uzyskać optymalną wydajność, zalecamy użycie poleceń znajdowania kluczy (takich jak findKey i key list) tylko raz podczas uruchamiania aplikacji. Zapisz zwrócony obiekt klucza w pamięci aplikacji. Gdy ten obiekt klucza będzie potrzebny później, pobierz go z pamięci podręcznej zamiast wykonywać zapytania dotyczące niego przy użyciu każdej operacji. Wykonywanie zapytań w związku z tym wiąże się ze znacznym obciążeniem wydajności.