Zyski:
- Umiejętność tworzenia kodu IaC (Terraform, Ansible) przy użyciu sztucznej inteligencji z najwęższymi uprawnieniami i bezpiecznymi ustawieniami domyślnymi oraz zrozumienie podejścia deklaratywnego
- Możliwość zapobiegania utracie danych poprzez odczytywanie i przechwytywanie usuwania i wymuszania zamiany wierszy przed zastosowaniem danych wyjściowych planu/sprawdzenia
- Możliwość zapobiegania wyciekom sekretów poprzez szyfrowanie i zamykanie pliku stanu w zdalnym backendie oraz dzielenie zmian na małe, odwracalne kroki
Zarządzanie infrastrukturą jako kod (IaC): Terraform, Ansible i Plan Control za pomocą sztucznej inteligencji
W przeszłości konfigurowanie serwera odbywało się za pomocą ręcznych kliknięć, poleceń i osobistych notatek; W rezultacie powstały niemożliwe do odtworzenia serwery typu „płatek śniegu”, których nikt nie wiedział dokładnie, jak skonfigurować. Infrastruktura jako kod (IaC) to podejście, które kończy ten chaos: serwery, sieci, zasady bezpieczeństwa są definiowane nie ręcznie, ale za pomocą plików tekstowych z możliwością wersjonowania (kodu). Po uruchomieniu tego kodu infrastruktura jest skonfigurowana dokładnie tak, jak ją napisałeś — taka sama, udokumentowana i powtarzalna za każdym razem. Najpopularniejszymi narzędziami są Terraform i CloudFormation dla infrastruktury chmurowej oraz Ansible dla konfiguracji serwerów. Tutaj sztuczna inteligencja jest bardzo biegła w pisaniu, wyjaśnianiu i przeglądaniu tego kodu IaC. Ale siła IaC niesie ze sobą także niebezpieczeństwo: jedna zła linia może zniszczyć całą infrastrukturę; więc sztuczna inteligencja pisze kod, czytasz „plan”, zatwierdzasz go i wykonujesz.
W tej części omówimy podejście deklaratywne, rozróżnienie plan/zastosowanie, bezpieczeństwo państwa i idempotencję; Nauczysz się generowania IaC za pomocą sztucznej inteligencji i najważniejszej umiejętności, „kontroli planu”.
Myślenie deklaratywne: „co jeśli”, a nie „jak to zrobić”
Większość narzędzi IaC ma charakter deklaratywny: opisujesz końcowy stan systemu („powiedzmy 3 serwery WWW, 1 moduł równoważenia obciążenia”), narzędzie samo oblicza, jak dojść do tego stanu. Różni się to od pisania scenariusza („zrób to, potem zrób tamto” krok po kroku). Dużą zaletą podejścia deklaratywnego jest idempotencja: nawet jeśli uruchomisz kod dziesięć razy, wynik będzie taki sam, ponieważ narzędzie sprawdza, czy pożądany stan już istnieje, a jeśli tak, to go nie dotyka. Zapamiętaj tę różnicę, kiedy piszesz IaC do sztucznej inteligencji: mówisz „pozwól tej infrastrukturze na stan”, a nie „uruchom te polecenia”.
Zaplanuj/zastosuj: najważniejsza poręcz bezpieczeństwa
Ratującą życie funkcją IaC jest etap planowania. W Terraform, plan terraform, w Ansible, tryb --check wyświetla podgląd „co się zmieni, jeśli to zastosuję” przed uruchomieniem kodu: „Zostaną dodane 2 zasoby, 1 się zmieni, 0 zostanie usunięte”. Tylko w ten sposób możesz porównać swój zamysł z rzeczywistością przed jego realizacją. Najważniejsza zasada: nigdy nie aplikuj bez przeczytania planu. Zwróć szczególną uwagę na linie „zniszcz”; Jeśli widzisz „12 zostanie usuniętych” zamiast „1 zostanie zmieniony” z powodu literówki, plan uchronił Cię przed katastrofą. Po wydrukowaniu kodu do AI powiedz „przeanalizuj ze mną wynik planu linia po linii, zaznacz każdą linię zawierającą usunięcie/odtworzenie”.
Uwaga: niektóre zmiany w Terraformie „niszczą i odtwarzają” zasób zamiast „aktualizować na miejscu”. Oznacza to utratę danych w bazie danych. Ignorowanie -/+ lub „wymuszonego zastąpienia” w wynikach planu jest jednym z najdroższych błędów.
Akta stanowe: zapis tajemnic i prawdy
Narzędzia takie jak Terraform przechowują bieżący stan zarządzanej infrastruktury w pliku stanu. Ten plik jest krytyczny z dwóch powodów. Po pierwsze, może zawierać tajemnice (hasła do baz danych, klucze mogą być zapisane w postaci zwykłego tekstu); Dlatego nigdy nie wklejaj stanu do publicznego repozytorium lub sztucznej inteligencji, przechowuj go w zaszyfrowanym zdalnym backendie z ograniczonym dostępem. Po drugie, jeśli państwo ulegnie uszkodzeniu lub utracie, pojazd traci połączenie między infrastrukturą rzeczywistą a infrastrukturą wyobrażoną; Dlatego niezbędne jest zabezpieczenie stanu i mechanizm zamka (zamek uniemożliwiający złamanie go przez dwie osoby jednocześnie).
Krok po kroku: zabezpiecz IaC za pomocą sztucznej inteligencji
- Stan intencji i dostawcy. „2 serwery w AWS z Terraform, w tym regionie, tej wielkości i z grupą zabezpieczeń.” Jeśli chmura, narzędzie i wersja są jasne, sztuczna inteligencja generuje poprawną składnię.
- Poproś o domyślne ustawienia zabezpieczeń. „Otwórz grupę zabezpieczeń, włącz szyfrowanie, wyodrębnij sekrety do zmiennej, przyznaj dostęp publiczny”. Sztuczna inteligencja może domyślnie generować luźne próbki.
- Przeczytaj i zrozum kod. Zrozum każdy zasób, każde pozwolenie, linia po linii. Nie stosuj uprawnień, których nie rozumiesz.
- Uzyskaj plan i przeprowadź jego kontrolę. Uruchom plan/--sprawdź, sprawdź dane wyjściowe za pomocą AI, zaznacz linie usuwania i odbudowy.
- Zastosuj mały i dwustronny. Wprowadzaj duże zmiany w małych kawałkach, a nie wszystkie na raz. Znaj drogę powrotną na każdym kroku.
- Chronić państwo. Korzystaj ze zdalnego, szyfrowanego backendu i blokuj; Nigdy nie przeciekaj.
trzy mini etui
Przypadek 1 – w ramach planu odzyskano bazę danych. Inżynier chciał zwiększyć rozmiar bazy danych za pomocą kodu Terraform, który wygenerował za pomocą sztucznej inteligencji. Chociaż spodziewał się „1 zmienić” w wynikach planu terraformu, zobaczył „1 do zniszczenia, 1 do dodania” — wybrany przez niego parametr inicjował przebudowę, a nie aktualizację w miejscu, co oznaczało, że wszystkie dane zostaną usunięte. Kontrola planu zatrzymała nieodwracalną utratę danych jeszcze przed jego wdrożeniem.
Przypadek 2 – Powrót z luźnej spłaty. Zespół poprosił sztuczną inteligencję o kod zapory sieciowej. Aby uruchomić przykład, sztuczna inteligencja wygenerowała prostą regułę 0.0.0.0/0, co oznacza „publiczny w Internecie”. Inżynier zauważył to podczas czytania kodu i zawęził dostęp jedynie do zakresu adresów IP przedsiębiorstwa. Gdyby zostało to wdrożone bez audytu, baza danych byłaby otwarta dla całego Internetu.
Przypadek 3 – Zapobiegnięto wyciekowi stanu. Młodszy członek miał właśnie wkleić nienaruszony plik terraform.tfstate do narzędzia publicznego, aby rozwiązać problem z Terraformem. Starszy inżynier zatrzymał się: stan zawierał hasło do bazy danych w postaci zwykłego tekstu. Zamiast tego udostępniono odszyfrowane podsumowanie opisujące problem, a stan przeniesiono do zdalnego, zaszyfrowanego backendu.
Cztery szablony do kopiowania
1) Generowanie zasobów IaC (domyślnie bezpieczne):
Twoja rola: starszy inżynier infrastruktury chmurowej. [Chmura, np. AWS] dla [narzędzia, np. Terraform] wygeneruj kod. Cel: [cel].Zasady bezpieczeństwa: dostęp publiczny (0.0.0.0/0) OPEN;rozpocznij od najwęższego uprawnienia; włącz szyfrowanie; wyodrębniaj sekrety do zmiennych, nie osadzaj ich w kodzie; Sprawdź ustawienia, które mogą prowadzić do usunięcia/odtworzenia. Wyjaśnij każde źródło krótkim komentarzem.
2) Zaplanuj audyt wyników:
Poniżej znajduje się wynik [Plan Terraformu / Kontrola Ansible]. Powiedz mi: (1) ile zasobów zostanie dodanych/zmienionych/usuniętych, (2) zaznacz także linie „zniszcz” lub „wymuś wymianę”, które stwarzają ryzyko utraty danych, (3) wymień wszelkie zmiany, które wydają się nieoczekiwane lub niebezpieczne. Wynik: [plan]
3) Przegląd bezpieczeństwa kodu IaC:
Sprawdź następujący kod IaC pod kątem bezpieczeństwa: (1) czy dostęp/uprawnienia są zbyt szerokie, (2) czy szyfrowanie jest wyłączone, (3) czy w kodzie zawarte są tajemnice, (4) czy istnieją publicznie dostępne zasoby? Zaproponuj korektę każdego ustalenia. Kod: [kod maskowany]
4) Podziel zmianę na bezpieczne części:
Nie chcę wprowadzać tej dużej zmiany w infrastrukturze [wyjaśnienie] od razu. Podziel go na małe, niezależne kroki, do których łatwo będzie wrócić. Dla każdego kroku: jakie zmiany, na co zwrócić uwagę w planie, jak to cofnąć, jeśli pojawią się problemy?
Słaba zachęta/silna zachęta
Słaba zachęta:
Napisz kod Terraform, który utworzy serwer na AWS.
Region, rozmiar, bezpieczeństwo, sieć i szyfrowanie są niejasne. Sztuczna inteligencja tworzy najswobodniejsze i najbardziej wyraźne domyślne ustawienia działania — jeśli zostanie wdrożona w środowisku produkcyjnym, będzie to luka w zabezpieczeniach.
Potężny monit:
Twoja rola: starszy inżynier infrastruktury chmurowej. Zdefiniuj serwer WWW z Terraformem na AWS eu-central-1: t3.small, tylko z zakresu firmowych adresów IP (podam ze zmienną), port 443 jest otwarty, dysk jest szyfrowany, brak publicznego dostępu, etykiety są obowiązkowe. Sekrety są ujawniane zmiennej. Po kodzie: Przed jego wdrożeniem wskaż mi 3 typy linii, na które powinienem zwrócić uwagę w planie i wyjaśnij ścieżkę powrotną.
Scena
Ryzyko
poręcz bezpieczeństwa
pisanie kodu
Luźne ustawienia domyślne (publiczne)
Najwęższe uprawnienie + odczyt
zaplanuj/sprawdź
Usuwanie bez świadomości
Zaplanuj inspekcję, zniszcz oznakowanie
Zastosuj
Ważna jednorazowa zmiana
Małe, odwracalne kroki
administracja państwowa
Wyciek glazury, zniekształcenie
Zdalny szyfrowany backend + blokada
Typowe błędy
- Złożenie wniosku bez czytania planu. Plan przewiduje usunięcie i rekonstrukcję; Jeśli zostanie pominięty, utrata danych jest nieunikniona.
- Nie zauważając luźnej wartości domyślnej. Instancje AI często generują 0.0.0.0/0; Jeśli zostanie przeniesiony do produkcji, oznacza to open source dla całego Internetu.
- Stan wycieku. Eksportowanie pliku stanu do AI lub otwartego repozytorium ujawnia tajemnice w postaci zwykłego tekstu.
- Osadzanie sekretów w kodzie. Zapisanie hasła w kodzie IaC to trwały wyciek w historii wersji kodu.
- Mylenie przebudowy z aktualizacją. Zignorowanie linii zastępującej siły spowoduje utratę danych w bazach danych.
Wskazówka: nawet przekazując wyniki planu AI do przeglądu, ostateczną decyzję oprzyj na własnej wiedzy, a nie na tekście planu. AI podsumowuje plan i wskazuje ryzykowne linie; ale odpowiedź na pytanie „czy dopuszczalne jest takie usunięcie” zależy od kontekstu biznesowego.
Podsumowując
IaC zapewnia powtarzalność i dokumentację poprzez zarządzanie infrastrukturą za pomocą kodu umożliwiającego wersjonowanie, a nie ręcznych kliknięć. Sztuczna inteligencja jest potężnym partnerem w pisaniu tego kodu, opisywaniu go i sprawdzaniu pod kątem bezpieczeństwa. Ale siła IaC polega na jego niebezpieczeństwie: jedna linia może zniszczyć całą infrastrukturę. Myśl deklaratywnie, zacznij od najwęższego uprawnienia, napraw luźne ustawienia domyślne, trzymaj tajemnice poza kodem i stanem. Najważniejszą barierą jest krok planowania/sprawdzania: nigdy nie wykonuj bez przeczytania linii usuwania i odbudowy. Trzymaj stan zaszyfrowany, zablokowany i zdalny. Kod należy do sztucznej inteligencji, decyzja należy do Ciebie.
Zadanie aplikacji
Wybierz mały cel infrastruktury (na przykład pojedynczą maszynę wirtualną i regułę zabezpieczeń). Korzystając z powyższego szablonu „Generowanie zasobów IaC”, poproś sztuczną inteligencję o kod z bezpiecznymi ustawieniami domyślnymi. Sprawdź dwukrotnie kod za pomocą szablonu „Przegląd bezpieczeństwa kodu IaC” i spróbuj znaleźć przynajmniej jedno luźne ustawienie. Jeśli to możliwe, uruchom plan/--check na koncie testowym i przejrzyj wyniki za pomocą szablonu „Planuj kontrolę wyników”; Sprawdź, czy istnieje linia usuwania lub odtwarzania. Swoje ustalenia i sposób zabezpieczenia państwa zapisz w 6 punktach.
lista kontrolna
- [ ] Czy określiłem chmurę, narzędzie i wersję dla AI i zażądałem kodu z najwęższymi uprawnieniami?
- [ ] Czy sprawdziłem kod pod kątem luźnych ustawień domyślnych (0.0.0.0/0, zamknięte szyfrowanie)?
- [ ] Czy wyodrębniłem klucze tajne do zmiennej zamiast osadzić je w kodzie?
- [ ] Czy przed zastosowaniem przeczytałem wynik planu/sprawdzenia i zaznaczyłem linie usuwania?
- [ ] Czy oceniłem wpływ „wymuszonej wymiany”/odbudowy linii na utratę danych?
- Czy plik stanu [ ] nie został przeze mnie zaszyfrowany i zamknięty w zdalnym backendzie i nie wyciekł?