Jednostka 10 / 11

Zarządzanie bezpieczeństwem i tajemnicami: DevSecOps i sztuczna inteligencja

Zyski:

  • Umiejętność zrozumienia DevSecOps i złotych zasad zarządzania sekretami (nie wprowadza kodu, jest trzymana w skarbcu, jest wstrzykiwana w czasie wykonywania, jest zwracana, najmniejsze uprawnienia)
  • Możliwość wykorzystania sztucznej inteligencji do ustalania priorytetów wyników skanowania bezpieczeństwa (SCA, SAST, obraz, IaC, tajne) i kodu audytu do celów obronnych
  • Świadomość, że pierwszym krokiem w przypadku tajnego wycieku jest unieważnienie/odwrócenie i wykorzystanie sztucznej inteligencji tylko w autoryzowanych systemach, w celach obronnych, w granicach prawnych

To, jak szybko system zostanie wdrożony, nie ma żadnego znaczenia w dniu, w którym zostanie naruszony. Podczas gdy DevOps koncentruje się na szybkości, bezpieczeństwo czasami pozostawia się na sam koniec — a bezpieczeństwo często nie pojawia się w ogóle. DevSecOps to podejście, które umieszcza bezpieczeństwo na początku i na każdym etapie przepływu DevOps: „przesunięcie bezpieczeństwa w lewo” — to znaczy wyłapanie luki w potoku, podczas pisania kodu, a nie w fazie prod. Dla profesjonalisty DevSecOps bezpieczeństwo nie jest zadaniem osobnego zespołu, ale jest częścią każdego zatwierdzenia, każdego obrazu i każdego manifestu.

W tej jednostce istnieją dwie główne osie. Pierwszym z nich jest zarządzanie tajemnicami: bezpieczne generowanie, przechowywanie, dystrybucja i rotacja poufnych informacji, takich jak hasła, klucze, certyfikaty. Drugi to skanowanie i wzmacnianie zabezpieczeń: znajdowanie luk w zależnościach, obrazach i konfiguracjach. Sztuczna inteligencja jest potężnym pomocnikiem w obu przypadkach — ujawnia luki w zabezpieczeniach, nadaje priorytet wynikom skanowania i zaleca poprawki. Jednak tutaj obowiązuje najważniejsze zastrzeżenie: sztuczna inteligencja służy do obrony; Nieautoryzowany dostęp do cudzego systemu, nieautoryzowane skanowanie lub tworzenie narzędzia ataku jest nielegalne i stanowi ścisłe ograniczenie tej platformy.

Złote zasady zarządzania tajemnicami

  1. Sekret nigdy nie trafia do kodu źródłowego. Nie Dockerfile, nie YAML, nie skrypt, nie Git. Sekret po wejściu do Git pozostaje w przeszłości.
  2. Sekrety przechowywane są w centralnym skarbcu. HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, GCP Secret Manager — te przechowują szyfrowane sekrety, kontrolują dostęp i śledzą je.
  3. Podaje się go w trakcie operacji. Aplikacja pobiera klucz tajny ze skarbca lub zmiennej środowiskowej podczas działania, a nie z dysku.
  4. Obraca się regularnie. Im dłużej sekret żyje, tym większe ryzyko wycieku. Automatyczne wirowanie jest idealne.
  5. Minimalny autorytet. Tylko usługa, która tego potrzebuje, może uzyskać dostęp do każdego sekretu.
Wskazówka: najskuteczniejszym środkiem zaradczym jest uruchomienie tajnego skanera (takiego jak git-secrets, gitleaks, truflehog): zatrzymuje on zatwierdzenie, jeśli przypadkowo spróbuje się zatwierdzić sekret. Zatrzymuje to wyciek u źródła. Sztuczna inteligencja pomaga napisać integrację potokową tych przeglądarek.

Krok po kroku: reakcja na tajny wyciek

Jeśli wycieknie tajemnica, nie panikuj, kolejność jest ważna:

  1. Anuluj i natychmiast obróć. Unieważnij wyciekły klucz, wygeneruj nowy. Samo wymazanie nie wystarczy – pozostaje przeszłością.
  2. Oceń wpływ. Skąd ten klucz miał dostęp? Czy doszło do nadużyć? Sprawdź dzienniki.
  3. Wyłącz źródło. Jak to wyciekło? Wyczyść kod, historię; Pamiętaj jednak: anulowanie następuje przed wyczyszczeniem.
  4. Zapobiegać. Dodaj tajną przeglądarkę do potoku, aby się nie powtarzała.
Uwaga: najdroższym rozwiązaniem nie jest zwrot ujawnionego sekretu tylko dlatego, że „nikt go nie widział”. Klucz upuszczony do publicznego repozytorium jest skanowany przez boty w ciągu kilku sekund. W razie wątpliwości należy zmieniać — koszt rotacji jest niski, koszt wycieku jest katastrofalny.

Rodzaje skanów bezpieczeństwa

DevSecOps wykorzystuje wiele warstw skanowania; Sztuczna inteligencja jest pomocna w interpretacji wyników każdego:

  • SCA (Analiza składu oprogramowania): znajduje znane luki (CVE) w używanych zależnościach typu open source.
  • SAST (statyczne testowanie bezpieczeństwa aplikacji): skanuje kod źródłowy pod kątem luk w zabezpieczeniach bez jego uruchamiania.
  • DAST (Dynamic Application Security Testing): Testuje działającą aplikację zewnętrznie.
  • Skanowanie obrazu: znajduje luki w obrazie kontenera (trivy, docker scout).
  • Skanowanie IaC: znajduje błędne konfiguracje w Terraform/manifestach (tfsec, checkov).
Uwaga: skaner wyrzuca setki wyników; Nie da się naprawić ich wszystkich na raz. Wykorzystaj sztuczną inteligencję do ustalenia priorytetów ustaleń: które naprawdę można wykorzystać, które są oczywiste w teorii, ale niedostępne w praktyce? Ale zweryfikuj ostateczną priorytetyzację w swoim własnym kontekście.

Tabela warstw rastrowych

warstwa

Co skanuje?

przykładowy pojazd

kiedy

SCA

Luki w zabezpieczeniach zależności (CVE)

Zależność, Snyk

każda konstrukcja

SAST

Luki w kodzie źródłowym

Semgrep, CodeQL

Każdy PR

skanowanie obrazu

Luki w kontenerach

Ciekawostka, Skaut

Po zbudowaniu

Skanowanie IaC

Błędna konfiguracja

tfsec, sprawdź

PR Terraformu

tajne skanowanie

Wyciekły sekrety

gitleaks

Każde zatwierdzenie

trzy mini etui

Przypadek 1 – 300 CVE, 12 realnych zagrożeń. Skan obrazu wykazał 300 luk; Zespół był sparaliżowany. Przekaż wyniki skanowania sztucznej inteligencji i zapytaj „które z nich można wykorzystać zdalnie i czy są osiągalne?” Uznali to za priorytet. AI podkreśliła 12 naprawdę ryzykownych odkryć. Zespół najpierw je zamknął; Resztę zatrudnił planowo. Priorytet zamiast paniki.

Przypadek 2 — rotacja udaremniła atak. Programista przypadkowo przekazał klucz chmury do publicznego repozytorium. Alarm włączył się; Zespół anulował rezerwację i zwrócił klucz w ciągu 4 minut. Dzienniki wykazały, że o klucz zapytano już bota, ale teraz był on nieprawidłowy. Szybka realizacja zapobiegła potencjalnej katastrofie rozliczeniowej i wyciekowi danych.

Przypadek 3 — skanowanie IaC wykryło otwarte wiadro. Wspomagane sztuczną inteligencją skanowanie IaC wykryło zasobnik pamięci w kodzie Terraform posiadający uprawnienia do „publicznego odczytu” bez konieczności uruchamiania. Deweloper otworzył go „do testów” i zapomniał zamknąć. Pipeline zatrzymał zatwierdzenie; open nigdy nie trafił do prod. Właśnie o to chodzi w przesuwaniu w lewo.

Cztery szablony do kopiowania

1) Ustal priorytet wyników skanowania:

Ustaw priorytet wyników skanowania bezpieczeństwa poniżej. Dla każdego wyniku: (1) czy rzeczywiście można go wykorzystać (zdalnie/nieuwierzytelniony?), (2) czy jest dostępny w naszym kontekście, (3) działania naprawcze, (4) zalecany priorytet (krytyczny/wysoki/średni/niski). Zaznacz 5 najpilniejszych. Mów wyraźnie; wskazują, że muszę zweryfikować każdy priorytet w moim kontekście. Wyjście: [SKANOWANIE]

2) Projekt zarządzania tajemnicą:

Zaproponuj podejście do zarządzania sekretami dla [APPLICATION/INFRstructure]: jaki skarbiec, jak wstrzykiwać sekrety w czasie wykonywania, jak zautomatyzować rotację, jak wymusić minimalne uprawnienia? Opisz konkretny przepływ, który NIGDY nie osadza tajemnicy w kodzie.

3) Wyszukiwanie luk w kodzie (obrona):

Sprawdź mój WŁASNY kod poniżej dla bezpieczeństwa (mam pozwolenie): czy jest jakiś zastrzyk, osadzony sekret, niezabezpieczone ustawienie domyślne, niezweryfikowane dane wejściowe? Każdemu znalezisku nadaj znaczenie i poprawkę. Celem jest obrona i konsolidacja. Kod: [KOD]

4) Tajny plan reagowania na wycieki:

[TAJNY TYP] mógł przypadkowo przeniknąć do [LOKALIZACJA]. Podaj mi kolejność interwencji krok po kroku: co mam zrobić w pierwszej kolejności (anulowanie/zwrot), jak ocenić efekt, jak zapobiec nawrotom? Wyjaśnij również, dlaczego samo usunięcie nie wystarczy.

Słaba zachęta/silna zachęta

Słabe: „Jak zhakować ten system/wykorzystać tę lukę?”

To żądanie jest zarówno nieetyczne, jak i całkowicie wykracza poza granice tej platformy. Używanie sztucznej inteligencji do ataku jest nielegalne.

Strong: „Autoryzuj kod mojej własnej aplikacji ze względów bezpieczeństwa: znajdź wbudowane sekrety, ryzyko wstrzyknięcia i niepewne ustawienia domyślne, napraw każde z nich. Celem jest wzmocnienie systemu”.

Różnica: druga prośba ma charakter obronny, w granicach władzy i ma na celu konsolidację. Na tym polega prawidłowe wykorzystanie AI w DevSecOps.

Typowe błędy

  • Osadzanie sekretu w kodzie/historii. Najczęstsza i trwała podatność.
  • Nie zwrócę ujawnionego sekretu. „Nikt tego nie widział” to najdroższy zakład.
  • Uznawanie wszystkich wyników badań przesiewowych za jednakowe. Paraliż przez ustalanie priorytetów lub brak realnego ryzyka.
  • Pozostawiając bezpieczeństwo na koniec. Luka w prod jest wielokrotnie droższa niż luka w rurociągu.
  • Omijanie minimalnej władzy. Sekret/rola, która ma dostęp do wszystkiego, sprawia, że ​​pojedynczy wyciek staje się katastrofą.
  • Próbuję użyć AI do ataku. Nielegalne i poza platformą.

Podsumowując

DevSecOps stawia bezpieczeństwo na początku i na każdym etapie przepływu DevOps — wyłapując luki w kodzie i potoku, a nie w prod. Złote zasady zarządzania sekretami: sekret nie jest wprowadzany do kodu, jest przechowywany w centralnym skarbcu, jest wstrzykiwany w czasie wykonywania, jest regularnie zwracany i można uzyskać do niego dostęp z minimalnymi uprawnieniami. Pierwszym krokiem w przypadku wycieku jest zawsze przerwanie/powrót. Sztuczna inteligencja świetnie nadaje się do ustalania priorytetów wyników skanowania, projektowania tajnych przepływów i defensywnej kontroli kodu, ale jest wykorzystywana wyłącznie w celach defensywnych i w granicach prawnych w systemach, nad którymi masz władzę.

Zadanie aplikacji

Podejmij się własnego projektu (do którego masz uprawnienia). (1) Sprawdź wbudowany klucz tajny i niebezpieczne ustawienia domyślne za pomocą szablonu „Szukanie luk w kodzie”. (2) Posortuj wynik skanowania bezpieczeństwa (rzeczywisty lub próbny) za pomocą szablonu „triage” i zidentyfikuj 3 najpilniejsze ustalenia. (3) Przygotuj projekt przepływu swojego projektu za pomocą szablonu „projektu zarządzania tajemnicą”, który całkowicie usuwa sekret z kodu.

lista kontrolna

  • [ ] Sprawdziłem, że w moim kodzie, obrazie i manifestach nie ma osadzonych sekretów.
  • [ ] Przechowuję sekrety w centralnym skarbcu i wstrzykiwam je w czasie wykonywania.
  • [ ] Wiem, że pierwszym krokiem w scenariuszu wycieku jest przerwanie/powrót.
  • [ ] Ustaliłem priorytet wyników skanowania w oparciu o możliwości wykorzystania i mój kontekst.
  • [ ] Przeniosłem skanowanie bezpieczeństwa na początkowe etapy potoku (po lewej).
  • [ ] Używałem sztucznej inteligencji wyłącznie do celów obronnych w systemach, w których mam władzę.