heygrc
Inżynieriathe heygrc team

Przesuń zgodność w lewo

Bezpieczeństwo zostało przesunięte w lewo, do pull requestów. Większość prac związanych z zgodnością wciąż czeka na audyt, a kontrole stopniowo odchodzą od standardów z każdym commitem.

W ciągu ostatniej dekady wiele zagadnień związanych z bezpieczeństwem przestało być realizowanych raz do roku. Testy penetracyjne nie zniknęły, ale codzienna praca została przesunięta w lewo: do edytora, pull requestów, potoku CI, gdzie wykrycie i naprawa problemu jest tania, ponieważ osoba, która go spowodowała, wciąż nad nim pracuje. Wykrywanie problemów dopiero na samym końcu zaczęło wyglądać na droższą opcję.

Większość prac związanych z zgodnością nie przeszła tej zmiany. Dla większości zespołów wciąż jest ona powiązana z audytem: przeglądem, który odbywa się długo po fakcie, wobec okresu, który już się zakończył, gdzie kontrola, która odeszła od standardu miesiące temu, ujawnia się dopiero wtedy, jeśli w ogóle. Zmiana, która spowodowała dryf, została zmergowana w pull request, którego nikt nie sprawdził pod kątem zgodności. heygrc powstało, aby przenieść tę weryfikację tam, gdzie bezpieczeństwo już jest: do diffa.

Audyt jest wskaźnikiem opóźnionym

Audyt informuje, co było prawdziwe w okresie, który już minął. To przydatne, ale z natury spóźnione. Kiedy kontrola, która uległa dryfowi, zostanie wykryta, zmiana, która to spowodowała, została zmergowana tygodnie lub miesiące wcześniej, dowody na okres pośredni już zaginęły, a to, co mogłoby być jednowierszową uwagą w recenzji, staje się teraz wyjątkiem do udokumentowania i naprawą do zaplanowania.

Koszt luki w zgodności rośnie wraz z odległością między zmianą, która ją spowodowała, a momentem, w którym ktoś ją zauważy. Roczna częstotliwość wydłuża tę odległość z założenia.

Zgodność dryfuje z każdym commitem

Kontrole rzadko ulegają naruszeniu w wyniku pojedynczego, widocznego zdarzenia. Zazwyczaj erodują poprzez indywidualnie uzasadnione zmiany: wydłużony okres retencji, skrócona linia logów, zmieniony region przechowywania, poluzowane domyślne ustawienia, aby odblokować partnera. Każda edycja jest do obrony sama w sobie, a żadna nie ogłasza się jako zmiana związana z zgodnością. To, co ujawnia się później, to skumulowany stan, a nie kontekst recenzji poszczególnej zmiany, która wpłynęła na kontrolę.

Jeśli dryf następuje z każdym commitem, to jedyne miejsce, aby wykryć go tanim kosztem, to sam commit. Wszędzie później trzeba odtwarzać z logów i pamięci, która zmiana wpłynęła na kontrolę i kiedy.

Wskaźnik wyprzedzający w diffie

Przesunięcie zgodności w lewo oznacza czytanie każdego pull requesta w momencie jego powstania i identyfikowanie kontroli, której dotyczy zmiana, wraz z klauzulą, zanim decyzja stanie się droga do zmiany. To ten sam ruch, który wykonał bezpieczeństwo: nie po to, aby zastąpić audyt, ale aby zmniejszyć to, co audyt musi znaleźć, poprzez wykrywanie istotnych dla kontroli zmian podczas recenzji, zamiast pozwalać, by gromadziły się w wyjątkach.

To cel, a nie zmierzony wynik, ponieważ nie korzystamy jeszcze z telemetrii produkcyjnej: wskaźnik wyprzedzający dla tych samych zobowiązań, które mierzy audyt, w momencie, w którym wykrycie kosztuje uwagę, a nie kwartał. Audyt roczny wciąż się odbywa. Powinien po prostu mieć mniej do odkrycia.

shift-leftauditscompliancecode-review