Ochrona kluczowych zasobów Twojej firmy to priorytet.
Praca z kontenerami, Kubernetes, środowiskiem chmurowym i poufnymi danymi wymaga szczególnej uwagi. Konieczne jest stosowanie i łączenie sprawdzonych metod zarządzania tożsamością i dostępem, a także wybór oraz implementacja odpowiednich narzędzi.
Niezależnie od tego, czy jesteś programistą, czy administratorem systemów, musisz mieć pewność, że dysponujesz właściwymi narzędziami do zabezpieczenia swoich środowisk. Aplikacje do prawidłowego działania potrzebują dostępu do różnego rodzaju danych konfiguracyjnych. Chociaż większość z nich nie jest wrażliwa, pewne informacje wymagają zachowania szczególnej poufności. Te wrażliwe ciągi danych określa się mianem sekretów.
Mam nadzieję, że nie przechowujesz ich nadal w repozytorium GitHub?
Jeśli tworzysz niezawodną aplikację, jest bardzo prawdopodobne, że jej funkcje będą wymagały dostępu do sekretów lub innych poufnych danych.
Do sekretów tych mogą należeć:
- Klucze API
- Dane uwierzytelniające baz danych
- Klucze szyfrowania
- Wrażliwe ustawienia konfiguracyjne (adresy e-mail, nazwy użytkowników, flagi debugowania itp.)
- Hasła
Bezpieczne zarządzanie tymi sekretami może okazać się wyzwaniem. Oto kilka wskazówek dla programistów i administratorów systemów:
Aktualizowanie zależności funkcji
Pamiętaj o regularnym śledzeniu bibliotek wykorzystywanych w funkcjach i o natychmiastowym reagowaniu na zidentyfikowane luki bezpieczeństwa poprzez ich monitorowanie.
Wykorzystanie bram API jako warstwy ochronnej
Nie wystawiaj funkcji bezpośrednio na interakcję z użytkownikiem. Wykorzystaj bramy API oferowane przez dostawców usług chmurowych, aby dodać kolejną warstwę zabezpieczeń do swoich funkcji.
Ochrona i weryfikacja przesyłanych danych
Upewnij się, że korzystasz z protokołu HTTPS jako bezpiecznego kanału komunikacji i weryfikujesz certyfikaty SSL, aby zagwarantować bezpieczeństwo przesyłanych danych.
Stosowanie zasad bezpiecznego kodowania w kodzie aplikacji
Ponieważ tradycyjne serwery nie stanowią już głównego celu ataków, cyberprzestępcy skupiają się na warstwie aplikacji. Z tego powodu należy zachować szczególną ostrożność, aby chronić kod.
Zarządzanie sekretami w bezpiecznym repozytorium
Wrażliwe dane mogą łatwo wyciec, a nieaktualne poświadczenia są podatne na ataki Rainbow Table, jeśli nie zostaną zastosowane odpowiednie rozwiązania do zarządzania sekretami. Unikaj przechowywania sekretów w systemie aplikacji, zmiennych środowiskowych czy systemie kontroli wersji.
Zarządzanie kluczami w środowisku współpracy jest problematyczne, szczególnie z powodu braku wiedzy i odpowiednich zasobów. Niektóre firmy osadzają klucze szyfrowania i inne wrażliwe dane bezpośrednio w kodzie aplikacji, co zwiększa ryzyko ich ujawnienia.
Z powodu braku gotowych rozwiązań, wiele firm podjęło próbę stworzenia własnych narzędzi do zarządzania sekretami. Oto kilka, które mogą Ci się przydać:
Vault
HashiCorp Vault to narzędzie umożliwiające bezpieczne przechowywanie i dostęp do sekretów.
Zapewnia ujednolicony interfejs zarządzania poufnymi informacjami, z jednoczesną kontrolą dostępu i obszernym dziennikiem audytu. Jest to narzędzie, które chroni aplikacje i użytkowników, minimalizując potencjalny obszar i czas trwania ataku.
Vault udostępnia API, które umożliwia dostęp do sekretów na podstawie zdefiniowanych zasad. Każdy użytkownik API musi przejść proces weryfikacji i ma dostęp jedynie do tych sekretów, do których przeglądania ma uprawnienia.
Vault szyfruje dane przy użyciu 256-bitowego algorytmu AES z GCM.
Może przechowywać dane w różnych backendach, takich jak Amazon DynamoDB czy Consul. Obsługuje logowanie do lokalnego pliku, serwera Syslog lub bezpośrednio do gniazda. Rejestruje informacje o kliencie, który wykonał działanie, jego adres IP, rodzaj czynności i czas jej wykonania.
Uruchomienie lub restart wymaga udziału co najmniej jednego operatora, który odblokowuje Vault. Działa przede wszystkim na tokenach. Każdy token powiązany jest z zasadą, która może ograniczać dozwolone operacje i ścieżki. Kluczowe cechy Vault to:
- Szyfrowanie i deszyfrowanie danych bez konieczności ich przechowywania.
- Możliwość generowania sekretów na żądanie dla określonych operacji, takich jak bazy danych AWS lub SQL.
- Replikacja danych w wielu centrach danych.
- Wbudowana ochrona przed unieważnieniem sekretów.
- Funkcja bezpiecznego repozytorium z rozbudowanymi opcjami kontroli dostępu.
AWS Secrets Manager
Zapewne spodziewałeś się AWS na tej liście, prawda?
AWS oferuje rozwiązanie każdego problemu.
AWS Secrets Manager umożliwia szybką rotację, zarządzanie i pobieranie danych uwierzytelniających baz danych, kluczy API i innych haseł. Dzięki temu możesz zabezpieczać, monitorować i zarządzać sekretami, które są potrzebne do uzyskania dostępu do zasobów AWS Cloud, usług firm trzecich i środowisk lokalnych.
Secrets Manager umożliwia zarządzanie dostępem do sekretów z wykorzystaniem szczegółowych uprawnień. Kluczowe funkcje AWS Secrets Manager to:
- Szyfrowanie danych w spoczynku za pomocą kluczy szyfrujących.
- Odszyfrowywanie sekretów i bezpieczne przesyłanie ich przez TLS.
- Dostępność przykładowych kodów, które ułatwiają korzystanie z API Secrets Manager.
- Biblioteki buforowania po stronie klienta, które poprawiają dostępność i zmniejszają opóźnienia w korzystaniu z sekretów.
- Konfiguracja punktów końcowych Amazon VPC (Virtual Private Cloud) w celu zachowania ruchu w sieci AWS.
Akeyless Vault
Akeyless Vault to ujednolicona platforma zarządzania sekretami oparta na SaaS, która chroni wszystkie rodzaje poświadczeń – zarówno statycznych, jak i dynamicznych – w tym automatyzację certyfikatów i klucze szyfrujące. Ponadto oferuje unikalne rozwiązanie bezpiecznego dostępu zdalnego (zero-trust) do wszystkich zasobów w starszych, wielochmurowych i hybrydowych środowiskach.
Akeyless chroni sekrety i klucze, korzystając z wbudowanej, certyfikowanej i opatentowanej technologii FIPS 140-2, nie mając wiedzy o sekretach ani kluczach swoich klientów.
Kluczowe funkcje obejmują:
- Globalnie dostępna platforma SaaS z wbudowaną wysoką dostępnością (HA) i odzyskiwaniem po awarii (DR), dzięki wykorzystaniu natywnej architektury chmurowej w połączeniu z usługą obejmującą wiele regionów i chmur.
- Zaawansowane zarządzanie sekretami, umożliwiające bezpieczne przechowywanie sekretów statycznych i dynamicznych, takich jak hasła, poświadczenia, klucze API, tokeny itp.
- Możliwość udostępniania i wstrzykiwania wszelkiego rodzaju sekretów do wszystkich serwerów, aplikacji i obciążeń dzięki szerokiemu wachlarzowi wtyczek. Umożliwiają one integrację z platformami DevOps i IT, takimi jak CI/CD, narzędzia do zarządzania konfiguracją i orkiestracji, jak Kubernetes i Docker.
Szybkie wdrożenie dzięki:
- Modelowi SaaS – brak wymogu wdrożenia, instalacji ani konserwacji
- Natychmiastowemu wdrożeniu poprzez automatyczną migrację sekretów z istniejących repozytoriów.
Platforma obsługuje również dwa dodatkowe filary:
- Dostęp do aplikacji oparty na koncepcji zero-trust (znany również jako dostęp zdalny), dzięki ujednoliconemu uwierzytelnianiu i poświadczeniom dostępu just-in-time, co pozwala zabezpieczyć aplikacje i infrastrukturę bez względu na jej granice.
- Szyfrowanie jako usługa, umożliwiająca klientom ochronę wrażliwych danych osobowych i biznesowych poprzez zastosowanie zaawansowanego szyfrowania na poziomie aplikacji z certyfikatem FIPS 140-2.
Keywhiz
Square Keywhiz pomaga w zarządzaniu sekretami infrastruktury, pękami kluczy GPG i poświadczeniami baz danych, w tym certyfikatami i kluczami TLS, kluczami symetrycznymi, tokenami API i kluczami SSH dla usług zewnętrznych. Jest to narzędzie do obsługi i udostępniania sekretów.
Automatyzacja w Keywhiz pozwala nam bezproblemowo dystrybuować i konfigurować kluczowe sekrety naszych usług, zapewniając spójne i bezpieczne środowisko. Kluczowe cechy Keywhiz to:
- Serwer Keywhiz udostępnia interfejsy API JSON do pobierania i zarządzania sekretami.
- Przechowywanie wszystkich sekretów wyłącznie w pamięci i nigdy nie zapisywanie ich ponownie na dysku.
- Interfejs użytkownika stworzony w AngularJS, dzięki czemu użytkownicy mogą łatwo weryfikować i korzystać z jego funkcji.
Confidant
Confidant to narzędzie do zarządzania sekretami typu open source, które umożliwia przyjazne dla użytkownika przechowywanie i bezpieczny dostęp do sekretów. Przechowuje sekrety w DynamoDB w postaci załączanej i generuje unikalny klucz danych KMS dla każdej modyfikacji wszystkich sekretów, używając symetrycznej uwierzytelnionej kryptografii Fernet.
Oferuje interfejs sieciowy AngularJS, który zapewnia użytkownikom efektywne zarządzanie sekretami, formami sekretów dla usług oraz zapisywanie zmian. Niektóre z funkcji to:
- Uwierzytelnianie KMS
- Szyfrowanie w spoczynku wersjonowanych kluczy tajnych
- Przyjazny dla użytkownika interfejs sieciowy do zarządzania sekretami
- Generowanie tokenów, które mogą być użyte do uwierzytelniania między usługami lub do przekazywania zaszyfrowanych wiadomości między nimi.
SOPS
Chciałbym przedstawić SOPS – niesamowite narzędzie, które niedawno odkryłem. Jest to zaszyfrowany edytor plików, który obsługuje formaty takie jak YAML, JSON, ENV, INI i BINARY. Co najważniejsze, potrafi szyfrować pliki przy użyciu AWS KMS, GCP KMS, Azure Key Vault, age i PGP.
Tu robi się ciekawie. Wyobraź sobie, że pracujesz na komputerze, który nie ma bezpośredniego dostępu do kluczy szyfrujących, takich jak klucze PGP. Bez obaw! SOPS zapewnia ochronę dzięki swojej funkcji serwisowej. Możesz zezwolić SOPS na dostęp do kluczy szyfrowania przechowywanych na zdalnym komputerze poprzez przekierowanie gniazda. To tak, jakby mieć własnego przenośnego agenta GPG!
SOPS działa w modelu klient-serwer do szyfrowania i deszyfrowania klucza danych. Domyślnie uruchamia lokalną usługę kluczy w ramach procesu. Klient wysyła żądania szyfrowania lub deszyfrowania do usługi kluczy, korzystając z buforów gRPC i protokołów. Spokojnie, te żądania nie zawierają żadnych kluczy kryptograficznych – publicznych ani prywatnych.
Muszę podkreślić, że połączenie z usługą kluczy nie ma obecnie uwierzytelnienia ani szyfrowania. W celu zapewnienia bezpieczeństwa wysoce zalecane jest uwierzytelnienie i szyfrowanie połączenia przy użyciu innych środków, takich jak tunel SSH.
Ale to nie wszystko! SOPS może generować dzienniki audytu w celu śledzenia dostępu do plików w kontrolowanym środowisku. Po włączeniu rejestruje aktywność deszyfrowania w bazie danych PostgreSQL, w tym znacznik czasu, nazwę użytkownika i odszyfrowany plik. Całkiem przydatne, prawda?
Dodatkowo SOPS oferuje dwa przydatne polecenia do przekazywania odszyfrowanych sekretów do nowego procesu: exec-env i exec-file. Pierwsze z nich wstrzykuje dane wyjściowe do środowiska procesu potomnego, a drugie umieszcza je w pliku tymczasowym.
Pamiętaj, że rozszerzenie pliku decyduje o metodzie szyfrowania używanej przez SOPS. Jeśli szyfrujesz plik w określonym formacie, zachowaj oryginalne rozszerzenie pliku do odszyfrowania. To najłatwiejszy sposób na zapewnienie kompatybilności.
SOPS inspirowany jest narzędziami takimi jak hiera-eyaml, credstash, sneaker i menedżer haseł. Jest to fantastyczne rozwiązanie, które eliminuje potrzebę ręcznego zarządzania plikami zaszyfrowanymi PGP.
Azure Key Vault
Czy Twoje aplikacje są hostowane na platformie Azure? Jeśli tak, to jest to dobry wybór.
Azure Key Vault umożliwia użytkownikom zarządzanie wszystkimi sekretami (kluczami, certyfikatami, ciągami połączeń, hasłami itp.) ich aplikacji w chmurze w jednym, centralnym miejscu. Jest on zintegrowany z platformą Azure, ale aplikacje spoza platformy również mogą z niego korzystać.
Możesz również poprawić wydajność i zmniejszyć opóźnienia w chmurze, przechowując klucze kryptograficzne w chmurze zamiast lokalnie.
Azure Key Vault może pomóc w spełnieniu wymagań dotyczących ochrony danych i zgodności.
Sekrety Dockera
Sekrety Dockera umożliwiają łatwe dodanie sekretu do klastra. Jest on udostępniany tylko poprzez wzajemnie uwierzytelnione połączenia TLS. Dane są przesyłane do węzła menedżera, a następnie automatycznie zapisywane w wewnętrznym magazynie Raft, co gwarantuje ich zaszyfrowanie.
Sekrety Dockera można z łatwością wykorzystać do zarządzania danymi i ich przekazywania do kontenerów, które mają do nich dostęp. Zapobiega to wyciekowi sekretów, gdy aplikacja ich używa.
Knox
Knox został opracowany przez platformę mediów społecznościowych Pinterest, aby rozwiązać problem ręcznego zarządzania kluczami i utrzymania ścieżki audytu. Jest napisany w języku Go, a klienci komunikują się z serwerem Knox za pomocą API REST.
Knox używa tymczasowej bazy danych do przechowywania kluczy. Szyfruje dane przechowywane w bazie danych przy użyciu AES-GCM z głównym kluczem szyfrującym. Knox jest również dostępny jako obraz Dockera.
Doppler
Tysiące organizacji, od start-upów po przedsiębiorstwa, korzysta z Dopplera w celu zachowania poufności danych i synchronizacji konfiguracji aplikacji między różnymi środowiskami, członkami zespołu i urządzeniami.
Zapomnij o udostępnianiu sekretów przez e-mail, pliki ZIP, repozytoria git i Slack. Dzięki Dopplerowi zespoły mogą współpracować, a sekrety są dostępne natychmiast po ich dodaniu. Doppler automatyzuje proces i oszczędza czas.
Możesz tworzyć odniesienia do często używanych sekretów, tak aby pojedyncza aktualizacja w określonych odstępach czasu wykonana w jednym miejscu automatycznie przenosiła zmiany w inne. Korzystaj z sekretów w środowiskach serverless, Docker lub dowolnych innych – Doppler działa bez problemów. Kiedy Twój stos technologii się rozwija, Doppler pozostaje elastyczny, umożliwiając szybkie rozpoczęcie pracy.
Doppler CLI automatycznie pobiera Twoje sekrety na podstawie katalogu projektu. Nie martw się, jeśli coś się zmieni, łatwo możesz cofnąć zmiany za pomocą jednego kliknięcia lub za pomocą interfejsu CLI i API.
Z Dopplerem pracuj mądrzej i korzystaj z darmowego oprogramowania do zarządzania sekretami. Jeśli potrzebujesz więcej funkcji i korzyści, skorzystaj z pakietu startowego w cenie 6 USD/miesiąc/stanowisko.
Podsumowanie
Mam nadzieję, że ten artykuł pozwolił Ci zorientować się w ofercie najlepszych narzędzi do zarządzania poświadczeniami aplikacji.
Koniecznie zapoznaj się również z rozwiązaniami do inwentaryzacji i monitorowania zasobów cyfrowych.
newsblog.pl
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.