Udostępnij za pośrednictwem


Zalecenia dotyczące ochrony wpisów tajnych aplikacji

Dotyczy tego zalecenia dotyczącego listy kontrolnej zabezpieczeń platformy Azure Well-Architected Framework:

SE:09 Ochrona wpisów tajnych aplikacji przez wzmacnianie ich magazynu oraz ograniczanie dostępu i manipulowania nimi oraz inspekcja tych akcji. Uruchom niezawodny i regularny proces rotacji, który może improwizować rotacje w nagłych wypadkach.

W tym przewodniku opisano zalecenia dotyczące zabezpieczania poufnych informacji w aplikacjach. Właściwe zarządzanie wpisami tajnymi ma kluczowe znaczenie dla utrzymania bezpieczeństwa i integralności aplikacji, obciążenia i skojarzonych danych. Niewłaściwa obsługa wpisów tajnych może prowadzić do naruszeń danych, przerw w działaniu usług, naruszeń przepisów i innych problemów.

Poświadczenia, takie jak klucze interfejsu API, tokeny Open Authorization (OAuth) i klucze protokołu Secure Shell (SSH) są wpisami tajnymi. Niektóre poświadczenia, takie jak tokeny OAuth po stronie klienta, można dynamicznie tworzyć w czasie wykonywania. Dynamiczne wpisy tajne muszą być nadal chronione pomimo tymczasowego charakteru. Informacje nieutwórcze, takie jak certyfikaty i klucze podpisu cyfrowego, mogą być również poufne. Wymagania dotyczące zgodności mogą spowodować, że ustawienia konfiguracji, które nie są zwykle uważane za wpis tajny, są traktowane jako wpisy tajne aplikacji.

Definicje 

Okres Definicja
Certyfikaty Pliki cyfrowe, które przechowują klucze publiczne na potrzeby szyfrowania lub odszyfrowywania.
Referencja Informacje używane do weryfikowania tożsamości wydawcy lub konsumenta w kanale komunikacyjnym.
Skanowanie poświadczeń Proces sprawdzania poprawności kodu źródłowego w celu upewnienia się, że wpisy tajne nie są uwzględnione.
Szyfrowanie Proces, za pomocą którego dane są nieprzeczytane i zablokowane za pomocą tajnego kodu.
Klucz Tajny kod używany do blokowania lub odblokowywania zaszyfrowanych danych.
Dostęp z najmniejszymi uprawnieniami Zasada Zero Trust, która ma na celu zminimalizowanie zestawu uprawnień do ukończenia funkcji zadania.
Tożsamość zarządzana Tożsamość przypisana do zasobów i zarządzana przez platformę Azure.
Niesekret Informacje, które nie zagrażają stanowi zabezpieczeń obciążenia w przypadku wycieku.
Wymiana Proces regularnego aktualizowania wpisów tajnych w taki sposób, aby w przypadku ich naruszenia był dostępny tylko przez ograniczony czas.
Wpis tajny Poufny składnik systemu, który ułatwia komunikację między składnikami obciążenia. W przypadku wycieku wpisy tajne mogą spowodować naruszenie.
X.509 Standard definiujący format certyfikatów kluczy publicznych.

Ważne

Nie traktuj niesekretów, takich jak wpisy tajne. Wpisy tajne wymagają platformy operacyjnej, która jest niepotrzebna w przypadku niezabezpieczeń i może to spowodować dodatkowe koszty.

Ustawienia konfiguracji aplikacji, takie jak adresy URL dla interfejsów API używanych przez aplikację, są przykładem niesekretów. Te informacje nie powinny być przechowywane przy użyciu kodu aplikacji ani wpisów tajnych aplikacji. Rozważ użycie dedykowanego systemu zarządzania konfiguracją, takiego jak Azure App Configuration do zarządzania tymi ustawieniami. Aby uzyskać więcej informacji, zobacz Co to jest Azure App Configuration?.

Kluczowe strategie projektowania

Strategia zarządzania wpisami tajnymi powinna zminimalizować jak najwięcej wpisów tajnych i zintegrować je ze środowiskiem, korzystając z funkcji platformy. Jeśli na przykład używasz tożsamości zarządzanej dla aplikacji, informacje o dostępie nie są osadzone w parametrach połączenia i można bezpiecznie przechowywać informacje w pliku konfiguracji. Przed przechowywaniem wpisów tajnych i zarządzaniem nimi należy rozważyć następujące zagadnienia:

  • Utworzone wpisy tajne powinny być przechowywane w bezpiecznym magazynie z rygorystycznymi mechanizmami kontroli dostępu.

  • Rotacja wpisów tajnych to aktywna operacja, podczas gdy odwoływanie jest reaktywne.

  • Tylko zaufane tożsamości powinny mieć dostęp do wpisów tajnych.

  • Należy zachować dziennik inspekcji, aby sprawdzić i zweryfikować dostęp do wpisów tajnych.

Utwórz strategię wokół tych punktów, aby zapobiec kradzieży tożsamości, uniknąć odrzucenia i zminimalizować niepotrzebne narażenie na informacje.

Bezpieczne rozwiązania dotyczące zarządzania wpisami tajnymi

Jeśli to możliwe, unikaj tworzenia wpisów tajnych. Znajdź sposoby delegowania odpowiedzialności za platformę. Na przykład użyj wbudowanych tożsamości zarządzanych platformy do obsługi poświadczeń. Mniejsza liczba wpisów tajnych powoduje zmniejszenie obszaru powierzchni i mniej czasu poświęcane na zarządzanie wpisami tajnymi.

Zalecamy, aby klucze miały trzy odrębne role: użytkownika, administratora i audytora. Rozróżnienie ról pomaga zapewnić, że tylko zaufane tożsamości mają dostęp do wpisów tajnych z odpowiednim poziomem uprawnień. Poinformuj deweloperów, administratorów i innych odpowiednich pracowników o znaczeniu zarządzania wpisami tajnymi i najlepszych rozwiązań w zakresie zabezpieczeń.

Klucze wstępnego udostępniania

Dostęp można kontrolować, tworząc odrębne klucze dla każdego konsumenta. Na przykład klient komunikuje się z interfejsem API innej firmy przy użyciu klucza wstępnego. Jeśli inny klient musi uzyskać dostęp do tego samego interfejsu API, musi użyć innego klucza. Nie udostępniaj kluczy, nawet jeśli dwóch użytkowników ma te same wzorce dostępu lub role. Zakresy odbiorców mogą ulec zmianie w czasie i nie można niezależnie aktualizować uprawnień ani rozróżniać wzorców użycia po udostępnieniu klucza. Odrębny dostęp ułatwia również odwoływanie. Jeśli klucz konsumenta zostanie naruszony, łatwiej jest odwołać lub obrócić ten klucz bez wpływu na innych użytkowników.

Te wskazówki dotyczą różnych środowisk. Ten sam klucz nie powinien być używany zarówno w środowiskach przedprodukcyjnych, jak i produkcyjnych. Jeśli jesteś odpowiedzialny za tworzenie kluczy wstępnych, upewnij się, że utworzono wiele kluczy do obsługi wielu klientów.

Aby uzyskać więcej informacji, zobacz Zalecenia dotyczące zarządzania tożsamościami i dostępem.

Magazyn wpisów tajnych

Użyj systemu zarządzania wpisami tajnymi, takiego jak Azure Key Vault, do przechowywania wpisów tajnych w środowisku ze wzmocnionymi zabezpieczeniami, szyfrowania magazynowanych i przesyłanych oraz inspekcji dostępu i zmian w wpisach tajnych. Jeśli musisz przechowywać wpisy tajne aplikacji, zachowaj je poza kodem źródłowym, aby ułatwić rotację.

Certyfikaty powinny być przechowywane tylko w Key Vault lub w magazynie certyfikatów systemu operacyjnego. Na przykład przechowywanie certyfikatu X.509 w pliku PFX lub na dysku nie jest zalecane. Jeśli potrzebujesz wyższego poziomu zabezpieczeń, wybierz systemy, które mają możliwości sprzętowego modułu zabezpieczeń (HSM) zamiast magazynów wpisów tajnych opartych na oprogramowaniu.

Kompromis: rozwiązania HSM są oferowane przy wyższych kosztach. Może być również widoczny wpływ na wydajność aplikacji ze względu na dodatkowe warstwy zabezpieczeń.

Dedykowany system zarządzania wpisami tajnymi ułatwia przechowywanie, dystrybuowanie i kontrolowanie dostępu do wpisów tajnych aplikacji. Tylko autoryzowane tożsamości i usługi powinny mieć dostęp do magazynów wpisów tajnych. Dostęp do systemu można ograniczyć za pośrednictwem uprawnień. Zawsze stosuje się podejście do najniższych uprawnień podczas przypisywania uprawnień.

Należy również kontrolować dostęp na poziomie wpisu tajnego. Każdy wpis tajny powinien mieć dostęp tylko do jednego zakresu zasobów. Utwórz granice izolacji, aby składnik mógł używać tylko potrzebnych wpisów tajnych. Jeśli naruszono bezpieczeństwo izolowanego składnika, nie może przejąć kontroli nad innymi wpisami tajnymi i potencjalnie całym obciążeniem. Jednym ze sposobów izolowania wpisów tajnych jest użycie wielu magazynów kluczy. Nie ma żadnych dodatkowych kosztów tworzenia dodatkowych magazynów kluczy.

Zaimplementuj inspekcję i monitorowanie dostępu wpisów tajnych. Zaloguj się, kto uzyskuje dostęp do wpisów tajnych i kiedy zidentyfikować nieautoryzowane lub podejrzane działania. Aby uzyskać informacje na temat rejestrowania z perspektywy zabezpieczeń, zobacz Zalecenia dotyczące monitorowania zabezpieczeń i wykrywania zagrożeń.

Rotacja wpisów tajnych

Należy dysponować procesem, który utrzymuje tajną higienę. Długowieczność wpisu tajnego wpływa na zarządzanie tym wpisem tajnym. Aby zmniejszyć wektory ataków, wpisy tajne powinny zostać wycofane i zastąpione nowymi wpisami tajnymi tak często, jak to możliwe.

Dokładnie obsłuż tokeny dostępu OAuth, biorąc pod uwagę czas wygaśnięcia. Rozważ, czy okno ekspozycji należy dostosować do krótszego okresu. Tokeny odświeżania muszą być bezpiecznie przechowywane z ograniczoną ekspozycją na aplikację. Odnowione certyfikaty powinny również używać nowego klucza. Aby uzyskać informacje na temat tokenów odświeżania, zobacz Secure OAuth 2.0 On-Behalf-Of refresh tokens (Zabezpieczanie tokenów odświeżania protokołu OAuth 2.0 w imieniu).

Zastąp wpisy tajne po ich zakończeniu życia, nie są już używane przez obciążenie lub jeśli zostały naruszone. Z drugiej strony nie należy przechodzić na emeryturę aktywnych wpisów tajnych, chyba że jest to sytuacja nadzwyczajna. Stan wpisu tajnego można określić, wyświetlając dzienniki dostępu. Procesy rotacji wpisów tajnych nie powinny mieć wpływu na niezawodność ani wydajność obciążenia. Używaj strategii, które tworzą nadmiarowość w wpisach tajnych, użytkownikach i metodach dostępu w celu zapewnienia bezproblemowej rotacji.

Aby uzyskać więcej informacji na temat sposobu rotacji usługi Azure Storage, zobacz Zarządzanie kluczami dostępu do konta.

Procesy rotacji powinny być zautomatyzowane i wdrażane bez interakcji z człowiekiem. Przechowywanie wpisów tajnych w magazynie zarządzania wpisami tajnymi, który natywnie obsługuje koncepcje rotacji, może uprościć to zadanie operacyjne.

Bezpieczne rozwiązania dotyczące używania wpisów tajnych

Jako generator lub operator wpisów tajnych powinno być możliwe bezpieczne dystrybuowanie wpisów tajnych. Wiele organizacji używa narzędzi do bezpiecznego udostępniania wpisów tajnych zarówno w organizacji, jak i zewnętrznie partnerom. W przypadku braku narzędzia mają proces prawidłowego przekazywania poświadczeń autoryzowanym adresatom. Plany odzyskiwania po awarii powinny obejmować procedury odzyskiwania wpisów tajnych. W sytuacjach, w których klucz został naruszony lub ujawniony i należy go ponownie wygenerować na żądanie. Podczas korzystania z wpisów tajnych należy wziąć pod uwagę następujące najlepsze rozwiązania dotyczące bezpieczeństwa:

Zapobieganie osadzaniu na twardo

Nie należy zapisywać wpisów tajnych kodu jako tekstu statycznego w artefaktach kodu, takich jak kod aplikacji, pliki konfiguracji i potoki wdrażania kompilacji. Ta praktyka wysokiego ryzyka sprawia, że kod jest podatny na zagrożenia, ponieważ wpisy tajne są narażone na dostęp do odczytu wszystkim osobom z dostępem do odczytu.

Można tego uniknąć, używając tożsamości zarządzanych, aby wyeliminować konieczność przechowywania poświadczeń. Aplikacja używa przypisanej tożsamości do uwierzytelniania względem innych zasobów za pośrednictwem dostawcy tożsamości. Przetestuj w środowiskach nieprodukcyjnych z fałszywymi wpisami tajnymi podczas opracowywania, aby zapobiec przypadkowemu narażeniu prawdziwych wpisów tajnych.

Używaj narzędzi, które okresowo wykrywają uwidocznione wpisy tajne w kodzie aplikacji i kompilują artefakty. Możesz dodać te narzędzia jako wstępnie zatwierdzające punkty zaczepienia usługi Git, które skanują pod kątem poświadczeń przed wdrożeniem zatwierdzeń kodu źródłowego. Regularne przeglądanie i oczyszczanie dzienników aplikacji w celu zapewnienia, że żadne wpisy tajne nie są przypadkowo rejestrowane. Wykrywanie można również wzmocnić za pośrednictwem przeglądów elementów równorzędnych.

Uwaga

Jeśli narzędzia skanujące odnajdą wpis tajny, ten wpis tajny musi zostać uznany za naruszony. Należy go odwołać.

Reagowanie na rotację wpisów tajnych

Jako właściciel obciążenia musisz zrozumieć plan rotacji wpisów tajnych i zasady, aby można było uwzględnić nowe wpisy tajne z minimalnymi zakłóceniami dla użytkowników. Po obróceniu wpisu tajnego może istnieć okno, gdy stary wpis tajny jest nieprawidłowy, ale nowy wpis tajny nie został umieszczony. W tym oknie składnik, z którym aplikacja próbuje nawiązać dostęp, nie potwierdza żądań. Te problemy można zminimalizować, tworząc logikę ponawiania prób w kodzie. Można również użyć współbieżnych wzorców dostępu, które umożliwiają bezpieczne zmianę wielu poświadczeń bez wpływu na siebie.

Współpracuj z zespołem operacyjnym i bądź częścią procesu zarządzania zmianami. Należy poinformować właścicieli poświadczeń, gdy zlikwidowasz część aplikacji, która używa poświadczeń, które nie są już potrzebne.

Zintegruj pobieranie wpisów tajnych i konfigurację z potokiem zautomatyzowanego wdrażania. Pobieranie wpisów tajnych pomaga zagwarantować, że wpisy tajne są automatycznie pobierane podczas wdrażania. Można również użyć wzorców iniekcji wpisów tajnych, aby wstawić wpisy tajne do kodu aplikacji lub konfiguracji w czasie wykonywania, co uniemożliwia przypadkowe uwidocznienie wpisów tajnych w dziennikach lub kontroli wersji.

Ułatwienia dla platformy Azure

Przechowywanie wpisów tajnych przy użyciu Key Vault. Przechowuj wpisy tajne w systemie zarządzania wpisami tajnymi platformy Azure, Key Vault, zarządzanym modułem HSM platformy Azure i innymi lokalizacjami. Aby uzyskać więcej informacji, zobacz Jak wybrać odpowiednie rozwiązanie do zarządzania kluczami.

Integrowanie kontroli dostępu opartej na tożsamościach. Microsoft Entra identyfikatory i tożsamości zarządzane pomagają zminimalizować potrzebę posiadania wpisów tajnych. Microsoft Entra ID oferuje wysoce bezpieczne i użyteczne środowisko kontroli dostępu z wbudowanymi mechanizmami obsługi rotacji kluczy, anomalii i nie tylko.

Użyj kontroli dostępu opartej na rolach (RBAC) platformy Azure, aby przypisać uprawnienia do użytkowników, grup i aplikacji w określonym zakresie.

Użyj modelu dostępu, aby kontrolować magazyny kluczy, uprawnienia i wpisy tajne. Aby uzyskać więcej informacji, zobacz Omówienie modelu dostępu.

Zaimplementuj wykrywanie ujawnienia wpisów tajnych. Integruj procesy w obciążeniu, które wykrywają podejrzane działania i okresowo sprawdzają, czy w kodzie aplikacji nie są widoczne klucze. Oto niektóre opcje:

Nie przechowuj kluczy i wpisów tajnych dla żadnego typu środowiska w plikach konfiguracji aplikacji ani potokach ciągłej integracji i ciągłego dostarczania (CI/CD). Deweloperzy powinni używać usług połączonych programu Visual Studio lub plików tylko lokalnie, aby uzyskać dostęp do poświadczeń.

Lista kontrolna zabezpieczeń

Zapoznaj się z pełnym zestawem zaleceń.