Najlepsze praktyki dotyczące ochrony tajemnic

Ten artykuł pomaga chronić tajemnice i zmniejsza ryzyko nieautoryzowanego dostępu. Stosuj się do tych wskazówek, aby upewnić się, że nie przechowujesz wrażliwych informacji, takich jak dane uwierzytelniające, w kodzie, repozytoriach GitHub, logach czy w pipeline'ach ciągłej integracji i wdrożenia (CI/CD). Wytyczne zawarte w tym artykule pochodzą z indywidualnych rekomendacji usług oraz z Microsoft Cloud Security Benchmark (MCSB).

Ten artykuł jest zgodny z modelem zabezpieczeń Microsoft Zero Trust, który wymaga jawnej weryfikacji, dostępu z najmniejszymi uprawnieniami oraz założenia naruszenia zabezpieczeń. Aby uzyskać przepisy dotyczące zabezpieczeń obejmujących egzekwowanie Azure Policy, zobacz Microsoft Cloud Security Benchmark v2: Privileged Access oraz MCSB v2: Data Protection.

Odkrywanie i zapobieganie tajemnicy

Zanim zabezpieczysz swoje sekrety, musisz mieć wgląd w to, gdzie się znajdują. Potrzebujesz też kontroli, które zapobiegają ekspozycji zanim do niej dojdzie.

  • Przeprowadź audyt, aby zidentyfikować tajemnice: Przeprowadz audyt swoich systemów i aplikacji, aby zidentyfikować wrażliwe informacje wymagające ochrony, takie jak hasła, klucze API, ciągi połączeń i inne poświadczenia. Regularne audyty pomagają zapewnić, że Twój zapas uwzględnia nowe sekrety i odpowiednio zarządza istniejącymi sekretami. Safeguard dynamicznie tworzył sekrety, takie jak tymczasowe tokeny OAuth, z taką samą rygorystyką jak sekrety długoterminowe.

  • Unikaj wpisywania poufnych danych na stałe: Osadzanie poufnych danych bezpośrednio w kodzie lub plikach konfiguracyjnych stanowi poważne zagrożenie dla bezpieczeństwa. Jeśli atakujący naruszą Twój kod, ujawniają także twoje sekrety. Zamiast tego używaj zmiennych środowiskowych lub narzędzi do zarządzania konfiguracją, które chronią tajemnice z dala od kodu źródłowego. Ta praktyka minimalizuje ryzyko przypadkowego ujawnienia i upraszcza tajne aktualizacje. Integruj pobieranie sekretów z automatycznym potokiem wdrożenia i stosuj wzorce wstrzykiwania sekretów, aby zapobiec przypadkowemu ujawnieniu logów lub kontroli wersji. Aby uzyskać więcej informacji, zobacz Zalecenia dotyczące ochrony tajemnic aplikacji.

  • Wdrażaj narzędzia do skanowania sekretów: Regularnie skanuj bazę kodu pod kątem osadzonych sekretów, aby zapobiec przypadkowemu ujawnieniu. Narzędzia takie jak Azure DevOps Credential Scanner czy skanowanie sekretów GitHub mogą automatycznie wykrywać i ostrzegać o sekretach w repozytoriach. Integruj te narzędzia z pipeline'em CI/CD, aby zapewnić ciągły monitoring. Traktuj wszelkie sekrety znalezione podczas skanowania narzędzi jako zagrożone. Natychmiast ją unieważnij i zastąp, aby zachować spójność stanu zabezpieczeń.

Bezpieczny magazyn i szyfrowanie

Ochrona wpisów tajnych wymaga bezpiecznych mechanizmów magazynowania i odpowiedniego szyfrowania na wszystkich etapach.

  • Korzystaj z bezpiecznych magazynów kluczy: Usługi takie jak Azure Key Vault i Azure Key Vault Managed HSM oferują funkcje bezpieczeństwa, w tym kontrolę dostępu, logowanie i automatyczną rotację. Takie podejście centralizuje zarządzanie tajemnicami i zmniejsza ryzyko nieautoryzowanego dostępu. W przypadku bardzo wrażliwych lub krytycznych sekretów używaj magazynu kluczy wspieranego przez sprzętowy moduł bezpieczeństwa (HSM), aby zwiększyć ochronę w porównaniu do programowych magazynów tajnych. W przypadku scenariuszy z kluczami zarządzanymi przez klienta należy używać co najmniej warstwy Premium usługi Azure Key Vault, która jest oparta na modułach HSM. Użyj Azure Key Vault Managed HSM do kluczowych wymagań suwerenności. Przegląd ofert zarządzania kluczami w Azure oraz wskazówki, które wybrać znajdziesz w artykule Zarządzanie kluczami w Azure oraz Jak wybrać odpowiednie rozwiązanie do zarządzania kluczami.

  • Szyfruj sekrety w spoczynku i w tranzycie: Azure Key Vault bezpiecznie przechowuje sekrety poprzez szyfrowanie koperty, gdzie klucze szyfrujące klucze szyfrują dane, zapewniając kolejną warstwę bezpieczeństwa. Używaj bezpiecznych protokołów komunikacyjnych, takich jak HTTPS, aby szyfrować dane przesyłane między aplikacjami a sejfem kluczy. W Azure różne usługi implementują szyfrowanie w spoczynku za pomocą szyfrowania AES 256. TLS i MACsec zapewniają bezpieczne dane podczas transportu. Więcej informacji można znaleźć w artykule Szyfrowanie w spoczynku i w transporcie.

  • Implementowanie izolacji sieciowej: skonfiguruj zapory i sieciowe grupy zabezpieczeń , aby ograniczyć dostęp do magazynów kluczy. Pozwól tylko zaufanym aplikacjom i usługom na dostęp do swoich sekretów. Takie podejście minimalizuje powierzchnię ataku i pomaga zapobiegać nieautoryzowanemu dostępowi. Rozważ użycie wielu sejfów kluczy do tworzenia granic izolacji dla różnych komponentów. Jeśli atakujący naruszą jeden komponent, ten komponent nie może przejąć kontroli nad innymi sekretami ani całym obciążeniem.

Kontrola dostępu i tożsamość

Zarządzanie tym, kto i co może uzyskiwać dostęp do wpisów tajnych, ma kluczowe znaczenie dla utrzymania zabezpieczeń.

  • Używaj zarządzanych tożsamości: Zarządzane tożsamości w Azure zapewniają bezpieczny sposób uwierzytelniania aplikacji do usług Azure bez konieczności przechowywania danych uwierzytelniających w kodzie. Włącz zarządzane tożsamości dla zasobów Azure, aby bezpiecznie korzystać z Azure Key Vault i innych usług, zmniejszając konieczność ręcznego zarządzania sekretami. Takie podejście minimalizuje tworzenie sekretów i zmniejsza powierzchnię potencjalnych naruszeń, ponieważ platforma zarządza poświadczeniami.

  • Wdrażaj szczegółową kontrolę dostępu: kieruj się zasadą najmniejszych uprawnień, stosując szczegółową kontrolę dostępu do tajemnic. Użyj kontroli dostępu opartej na rolach Azure (Azure RBAC), aby zapewnić, że tylko upoważnione podmioty mają dostęp do określonych sekretów. Regularne przeglądanie i aktualizowanie uprawnień dostępu w celu zapobiegania nieautoryzowanemu dostępowi. Wprowadź odrębne role, takie jak użytkownik, administrator i audytor, aby zarządzać dostępem do sekretów. Ta praktyka pomaga zapewnić, że tylko zaufane tożsamości mają odpowiedni poziom uprawnień. Więcej informacji znajdziesz w przewodniku Azure Key Vault RBAC.

Zarządzanie cyklem życia tajemnic

Sekrety wymagają ciągłego zarządzania przez cały cykl życia, od tworzenia do usunięcia.

  • Regularnie zmieniaj sekrety: Sekrety są narażone na wycieki lub ujawnienie z upływem czasu. Regularnie rotuj swoje sekrety, aby zmniejszyć ryzyko nieautoryzowanego dostępu. Możesz rotować sekrety w Azure Key Vault dla wybranych sekretów. W przypadku sekretów, które nie mogą się automatycznie obracać, wprowadź ręczny proces rotacji i usuń je, gdy przestaną być używane. Zautomatyzuj rotację sekretów i zapewnij redundancję w zarządzaniu sekretami, aby rotacja nie zakłócała dostępności usług. Wdroż logikę powtórek i wzorce współbieżnego dostępu w swoim kodzie, aby zminimalizować problemy podczas okna rotacji.

  • Bezpieczne rozpowszechnianie sekretów: Rozpowszechniając sekrety, udostępniaj je bezpiecznie zarówno wewnątrz, jak i poza organizacją. Korzystaj z narzędzi zaprojektowanych do bezpiecznego udostępniania i uwzględnij tajne procedury odzyskiwania w swoich planach odbudowy po awarii. Jeśli atakujący naruszą bezpieczeństwo klucza lub go ujawnią, natychmiast wygeneruj go ponownie. Używaj odrębnych kluczy dla każdego konsumenta, zamiast dzielić się kluczami, nawet jeśli użytkownicy mają podobne wzorce dostępu. Ta praktyka upraszcza zarządzanie kluczami i ich cofnięciem, dzięki czemu można cofnąć skompromitowane klucze bez wpływu na innych użytkowników.

Monitorowanie i rejestrowanie

Ciągły monitoring wykrywa podejrzaną aktywność i wspiera wymagania zgodności.

  • Monitorowanie i rejestrowanie dostępu: włącz rejestrowanie i monitorowanie dla systemu zarządzania tajemnicami, aby śledzić dostęp i wykorzystanie. Korzystaj z logowania Key Vault, Azure Monitor lub Azure Event Grid, aby monitorować wszystkie działania związane z twoimi sekretami. Monitorowanie pozwala na to, kto uzyskał dostęp do Twoich sekretów oraz pomaga wykrywać podejrzane zachowania lub potencjalne incydenty bezpieczeństwa. Utrzymuj szczegółowe ścieżki audytowe do inspekcji i weryfikacji dostępu do sekretów, co może pomóc zapobiegać kradzieży tożsamości, uniknąć odrzucenia i zmniejszyć niepotrzebne ujawnienie.

Wskazówki dla usług dotyczące obsługi sekretów

Indywidualne usługi mogą mieć więcej najlepszych praktyk i wskazówek dotyczących ochrony tajemnic. Oto kilka przykładów:

Następne kroki

Minimalizacja ryzyka bezpieczeństwa jest wspólną odpowiedzialnością. Proaktywnie podejmuj kroki, aby zabezpieczyć swoje obciążenia. Aby uzyskać więcej informacji, zobacz Wspólna odpowiedzialność w chmurze.