Zalecenia dotyczące ochrony wpisów tajnych aplikacji

Dotyczy tego zalecenia listy kontrolnej dotyczącej 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. Odpowiednie 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), a klucze protokołu Secure Shell (SSH) są wpisami tajnymi. Niektóre poświadczenia, takie jak tokeny OAuth po stronie klienta, mogą być tworzone dynamicznie w czasie wykonywania. Dynamiczne wpisy tajne nadal muszą być chronione pomimo ich tymczasowego charakteru. Informacje inne niż przyrostowe, 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 traktowane jako wpisy tajne aplikacji.

Definicje 

Termin 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 odbiorcy 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ą nieczytelne i zablokowane za pomocą tajnego kodu.
Klucz Kod tajny 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.
Niezasekret Informacje, które nie zagrażają stanowi zabezpieczeń obciążenia, jeśli zostanie ujawniony.
Wymiana Proces regularnego aktualizowania wpisów tajnych w taki sposób, aby w przypadku naruszenia zabezpieczeń były one dostępne tylko przez ograniczony czas.
Klucz 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 niezasekretów, takich jak wpisy tajne. Wpisy tajne wymagają platformy operacyjnej, która jest niepotrzebna dla niesekretów 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 aplikacja systemu Azure Configuration, aby zarządzać tymi ustawieniami. Aby uzyskać więcej informacji, zobacz Co to jest konfiguracja aplikacja systemu Azure?.

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 parametry połączenia i można bezpiecznie przechowywać informacje w pliku konfiguracji. Przed przechowywaniem wpisów tajnych i zarządzaniem nimi należy wziąć pod uwagę 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, natomiast 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ę dotyczącą tych punktów, aby zapobiec kradzieży tożsamości, uniknąć odrzucenia i zminimalizować niepotrzebne narażenie na informacje.

Zarządzanie wpisami tajnymi obciążeń

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ń. Mniej 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 zagwarantować, ż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 odbiorcy. 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 konsumentó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. Unikatowy 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 konsumentó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 Usługa Azure Key Vault, aby przechowywać wpisy tajne w środowisku ze wzmocnionymi zabezpieczeniami, szyfrować magazynowane i przesyłane oraz przeprowadzać inspekcję dostępu i zmian wpisów tajnych. Jeśli chcesz przechowywać wpisy tajne aplikacji, zachowaj je poza kodem źródłowym, aby ułatwić rotację.

Certyfikaty powinny być przechowywane tylko w usłudze 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ą funkcje sprzętowego modułu zabezpieczeń (HSM) zamiast magazynów wpisów tajnych opartych na oprogramowaniu.

Kompromis: rozwiązania HSM są oferowane po wyższych kosztach. Może być również widoczny wpływ na wydajność aplikacji z powodu dodanych warstw 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ń. Podczas przypisywania uprawnień należy zawsze stosować podejście o najniższych uprawnieniach.

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. W przypadku naruszenia zabezpieczeń izolowanego składnika nie można 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. Rejestruj, 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

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

Uważnie obsłuż tokeny dostępu OAuth, biorąc pod uwagę czas wygaśnięcia. Rozważ, czy okno ekspozycji musi być dostosowane 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).For information about refresh tokens (Zabezpieczanie tokenów odświeżania protokołu OAuth 2.0 w imieniu).

Zastąp wpisy tajne po zakończeniu ich życia, nie są już używane przez obciążenie lub jeśli zostały naruszone. Z drugiej strony, nie wycofaj aktywnych wpisów tajnych, chyba że jest to sytuacja kryzysowa. 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 płynnej 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 żadnej interakcji człowieka. Przechowywanie wpisów tajnych w magazynie zarządzania wpisami tajnymi, które natywnie obsługuje koncepcje rotacji, może uprościć to zadanie operacyjne.

Bezpieczne używanie wpisów tajnych obciążeń

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 istnieje 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 musi być ponownie wygenerowany na żądanie. Podczas korzystania z wpisów tajnych należy wziąć pod uwagę następujące najlepsze rozwiązania dotyczące bezpieczeństwa:

Zapobieganie twardokodowaniu

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 dla wszystkich użytkowników.

Można uniknąć tej sytuacji, 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 sekretami podczas opracowywania, aby zapobiec przypadkowemu narażeniu prawdziwych tajemnic.

Użyj narzędzi, które okresowo wykrywają uwidocznione wpisy tajne w kodzie aplikacji i tworzą artefakty. Możesz dodać te narzędzia jako wstępnie zatwierdzeń narzędzia Git, które skanują pod kątem poświadczeń przed wdrożeniem 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 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 i zasady rotacji wpisów tajnych, aby umożliwić włączenie nowych wpisów tajnych z minimalnymi zakłóceniami dla użytkowników. Gdy wpis tajny jest obracany, 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 częścią procesu zarządzania zmianami. Należy poinformować właścicieli poświadczeń o zlikwidowaniu części aplikacji, która używa poświadczeń, które nie są już potrzebne.

Zintegruj pobieranie wpisów tajnych i konfigurację z potokiem wdrażania automatycznego. 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 platformy Azure

Przechowywanie wpisów tajnych przy użyciu usługi Key Vault. Przechowywanie wpisów tajnych w systemie zarządzania wpisami tajnymi platformy Azure, usłudze Key Vault, zarządzanym module HSM platformy Azure i innych lokalizacjach. Aby uzyskać więcej informacji, zobacz Jak wybrać odpowiednie rozwiązanie do zarządzania kluczami.

Integracja kontroli dostępu opartej na tożsamościach. Identyfikator entra firmy Microsoft i tożsamości zarządzane pomagają zminimalizować potrzebę 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 klucze uwidocznione są w kodzie aplikacji. Niektóre opcje obejmują:

Nie przechowuj kluczy i wpisów tajnych dla żadnego typu środowiska w plikach konfiguracji aplikacji ani potoków 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ń.