DevSecOps strażnikiem bezpieczeństwa
Istnieje wiele podejść do zarządzania projektami informatycznymi. Jednym z nich jest DevOps, mający również zastosowanie w pracy z chmurą AWS. DevOps jest to, krótko mówiąc, technika łącząca rozwój i eksploatację zasobów, która ma na celu zapewnienie najwyższej jakości współpracy pomiędzy specjalistami z zakresu utrzymania IT oraz specjalistami ds. rozwoju oprogramowania. Metodyka ta oparta jest na iteracyjnym modelu pracy, który polega na powtarzalności (iteracji) i jak najszybszym dostarczeniu rozwiązania (kodu) w najkrótszym możliwym czasie.
Czym zatem jest DevSecOps?
Do znanej już metodyki DevOps włączony zostaje element bezpieczeństwa. Już na etapie tworzenia rozwiązania informatycznego, do działania włączony zostaje dodatkowo inżynier bezpieczeństwa. Osoba lub dział zajmujący się bezpieczeństwem, który w porozumieniu z developerami i działem utrzymania IT konsultuje kod, który jest przez nich współtworzony i wdrażany. Pozwala to na niwelowanie luk w kodzie, który w fazie tworzenia jest łatwym kąskiem dla hakerów. Aby lepiej zobrazować działanie mechanizmu, poniższy schemat pokazuje, jak ważna jest integracja podejścia DevOps z odpowiednim poziomem bezpieczeństwa.
Źródło: „DevSecOps: How to Seamlessly Integrate Security Into DevOps”, Gartner, 2016
Podczas realizacji poszczególnych działań takich jak: planowanie, tworzenie czy wdrażanie; czynnikiem łączącym pracę obydwu działów jest znajomość bezpiecznego kodowania (bezpiecznej inżynierii oprogramowania).
DevOps jest niezaprzeczalnie metodyką, która usprawniła pracę nad wdrażaniem i dostosowaniem rozwiązań. Przede wszystkim w dużych firmach, gdzie w krótkim czasie przeprowadzane są dziesiątki deploymentów. Dodanie warstwy security w DevSecOps, pozwala zatem na szybszą weryfikację tworzonych kodów oraz naprawianie lub całkowite zlikwidowanie powstałych błędów/luk w bezpieczeństwie.
Metodyka DevSecOps wyraźnie kładzie nacisk na warstwę security. Dlatego swoje zastosowanie znalazła w szczególności w branżach finansowej, telekomunikacyjnej czy w tworzeniu zaawansowanych aplikacji. Podczas przygotowywania rozwiązania, ochrona i bezpieczeństwo powinny koncentrować się np. na kontroli uprawnień czy ochronie przed złośliwym oprogramowaniem. Świadomość zagrożeń pozwala na efektywniejszą pracę programistów oraz bezproblemowe utrzymanie rozwiązania.
W dalszej części artykułu znajduje się kilka wskazówek, które pomogą w stosowaniu metodyki DevSecOps.
W ramach automatyzacji metodyka DevOps’owa pomaga we wdrażniu (deploymencie) aplikacji, skalowaniu zasobów, zapewnieniu wysokiej dostępności aplikacji i środowiska, tworzeniu kopii bezpieczeństwa oraz wdrażaniu zmian w mechanizmach bezpieczeństwa. Pierwszym krokiem powinno być zdefiniowanie celu, który ma zostać osiągnięty. Następnie należy wskazać punkty kontroli bezpieczeństwa, które są niezbędne do zachowania jej najwyższego poziomu. Dzięki temu można stworzyć ukierunkowany wariant użycia automatyzacji.
Kolejnym działaniem, jest zrozumienie możliwości zastosowania kodów na licencji open source. Rozwiązania oparte na chmurze i metodykach DevOps’owych pozwalają na efektywniejsze tworzenie nowych aplikacji, korzystając z gotowych fragmentów kodu. Podczas wykorzystania kodu źródłowego użytego do stworzenia nowej aplikacji, istotnym staje się pytanie czy nie powoduje on luki kontekstowej. Dzięki usługom przygotowanym przez AWS można w łatwy i skuteczny sposób poradzić sobie z rozwiązaniem tych problemów. W tym przypadku zastosowanie znajdzie usługa Amazon Inspector, która automatycznie ocenia aplikacje pod kątem słabych punktów lub odchyleń.
Istotny w metodyce DevSecOps jest dobór odpowiednich narzędzi SAST (Source Application Security Testing). Na początku warto rozważyć możliwość włączenia reguł wychwytujących np. błędy w SQL. W momencie, kiedy osoby pracujące z kodem zobaczą, jak narzędzie pozwoli im wyłapać luki w bezpieczeństwie w trakcie pracy – zaczną chętniej z niego korzystać.
Ważnym jest również modelowanie zagrożeń oraz ocena ryzyka. Nie należą one do najprostszych czynności. Dlatego warto poświęcić im uwagę, zanim zaczniemy korzystać z metodyki DevSecOps. Każda metoda oceny ryzyka zawiera wspólne elementy. Można do nich zaliczyć: identyfikację zagrożeń, ocenę prawdopodobieństwa wystąpienia potencjalnych zagrożeń oraz strat, jakie mogą przynieść. Dzięki praktyce związanej z oceną ryzyka i modelami zagrożeń, osoby zajmujące się bezpieczeństwem mogą uzyskać lepsze wyobrażenie m.in. o atakach i ich rodzajach, danych poufnych i mechanizmach ich kontroli etc.
Więcej wskazówek dotyczących dobrych praktyk na temat stosowania metodyki DevSecOps znajduje się w prezentacji dostępnej na SlideShare.
Korzyści płynące z podjęcia się realizacji projektu metodyką DevSecOps to m. in.:
- efektywność wykrywania zagrożeń
- wysokie bezpieczeństwo
- redukcja kosztów
- szybkość dostarczonego rozwiązania
Wszystkie wymienione wcześniej atuty mają wpływ na reputację firmy oraz ulepszenie dotychczasowego modelu biznesowego. Ważnym podczas praktycznego zastosowania metodyki opartej na rozwiązaniach zwinnych (agile) jest fakt, w którym warto przeanalizować nakłady oraz ich estymację podczas projektów. Szacowanie (estimation) nie jest narzędziem do końca precyzyjnym, a jedynie pewną przybliżoną miarą nakładu pracy, jaki poświęcony jest przygotowywanemu rozwiązaniu. Uzasadnienie znajduje się w podstawach metodyki Agile, która opiera się na empirycznej kontroli procesu. Polega to na częstej inspekcji i adaptacji działań. Procedury te przeprowadzane na bieżąco pozwalają na lokalizację i poprawę błędnych decyzji, likwidację przeszkód i nieścisłości wynikających z faktu zmiennej i nieprzewidywalnej rzeczywistości, w której przebiega proces tworzenia oprogramowania/aplikacji.
Podejmując się realizacji projektu warto rozważyć możliwość zastosowania metodyki DevSecOps. Daje ona nie tylko możliwość bezpiecznego procesu tworzenia nowych rozwiązań, ale również pozwala na efektywniejszą i szybszą możliwość ich wdrożenia.
Jeśli masz pytania związane z DevSecOps lub interesuje Cię kwestia bezpieczeństwa napisz do nas!