Zarządzanie tożsamością i dostępem użytkownika, czyli o co chodzi z IDP?
Czym jest tożsamość użytkownika? Z czego wynika potrzeba zarządzania dostępem w firmie? Jak działa tzw. IDP? Odpowiedź na te pytania znajdziesz w artykule.
Hej dzisiaj jako Innokrea chcemy Wam opowiedzieć o tym jak dbać o bezpieczeństwo produktu w ramach procesu DevOps, czym są SASTy, DASTy i SCA i jak to wszystko może wpłynąć na poprawę bezpieczeństwa. Polecamy także nasze artykuły o IAC (ang. infrastructure as code), Dockerze oraz SDLC.
SDLC (ang. software development lifecycle) to model opisujący jak powinien przebiegać cały proces wytwarzania oprogramowania – od planowania, aż po testowanie, wdrożenie czy utrzymanie aplikacji. W tradycyjnym podejściu do SDLC często brakuje jednak wyraźnego uwzględnienia bezpieczeństwa jako integralnej części procesu. W efekcie dział bezpieczeństwa bywa postrzegany przez deweloperów jako przeszkoda w szybkim dostarczaniu nowych funkcjonalności. W efekcie aspekt bezpieczeństwa aplikacji może być nawet pomijany lub traktowany jako sprawa drugorzędna. Na ratunek przychodzi tutaj rozwinięcie procesu SDLC, tj. SSDLC (ang. Secure Software Development Lifecycle).
SSDLC integruje praktyki bezpieczeństwa na każdym etapie cyklu życia oprogramowania, podkreślając współpracę między zespołami deweloperskimi, DevOps i działami bezpieczeństwa. Dzięki temu bezpieczeństwo staje się częścią kultury tworzenia oprogramowania, a nie przeszkodą w jego rozwoju.
Rysunek 1 – SDLC kontra SSDLC, źródło: medium.com
Etapy SSDLC można opisać w następujący sposób:
Procesem SSDLC zajmuje się często zespół DevSecOps, czyli zespół DevOps poszerzony o kompetencje Security.
Nowoczesne aplikacje składają się często z dziesiątek lub setek komponentów tj. zarówno zależności w kodzie jak i zewnętrznych narzędzi, co znacząco zwiększa powierzchnię ataku i utrudnia zarządzanie bezpieczeństwem. Na poniższym, przykładowym diagramie (rysunek 2) możemy zauważyć dziesiątki komponentów wykorzystywanych przy zarządzaniu aplikacją w ramach chmury Azure. Są to między innymi:
Rysunek 2 – Architektura aplikacji stworzona w oparciu o chmure Azure, źródło: microsoft.com
W artykule omówiliśmy już tematykę związaną z SSDLC i z tym jak skomplikowane może być zarządzanie bezpieczeństwem aplikacji ze względu na ilość używanych narzędzi i zależności w kodzie. Podejście DevSecOps kładzie nacisk na adresowanie problemów bezpieczeństwa tak wcześnie jak to możliwe tzw. shift-left approach tj. implementacje testowania kodu, w tym jego bezpieczeństwa w jak najwcześniejszych etapach rozwoju oprogramowania.
Rysunek 3 – Podejście shift-left, źródło: medium.com
Zespoły DevSecOps wykorzystują więc różne narzędzia wspierające ich pracę w zaadresowaniu problemów bezpieczeństwa na różnych poziomach, na różnych etapach cyklu rozwoju oprogramowania. Są to przede wszystkim narzędzia typu:
Powyższe narzędzia są spięte często w jedno rozwiązanie oraz połączone z bazami danych agregującymi dane o podatnościach. Algorytmy poszczególnych narzędzi mają więc za zadanie często oszacowanie dotkliwości (ang. severtity) danych podatności, potencjalnego ryzyka czy priorytetyzację zagrożeń, którymi powinien zająć się zespół DevSecOps lub deweloperzy.
Istnieje wiele narzędzi, które służą do części, lub większości wyżej wymienionych problemów. Są to np. Dependabot, Snyk, Mend, Semgrep, Fortify, SonarQube, CodeQL, Copilot czy ZAP. Nie będziemy ich wszystkich opisywać, ale możemy Wam przybliżyć jak może wyglądać używanie wymienionych funkcjonalności w niektórych narzędziach. Należy także zaznaczyć, że tego typu oprogramowanie jest często wykorzystywane w procesie CI/CD w ramach budowania pipelineów do automatycznego testowania i wdrażania aplikacji. Dzięki temu cały proces jest przewidywalny i powtarzalny.
Przykładowo mamy znaną w świecie cyberbezpieczeństwa instancję tzw. juice-shop, gdzie autorzy przedstawiają gotowe pipeliney w GitHub Actions zintegrowane z takimi narzędziami do skanowania jak CodeQL (analiza statyczna), Dependabot (analiza zależności) czy ZAP.
Podobne gotowe konfiguracje z wykorzystaniem różnych narzędzi CI/CD możemy także znaleźć dla innych narzędzi bezpieczeństwa jak Snyk, czy Semgrep. Wyniki takich skanów dostarczane są następnie na platformę danego rozwiązania.
Rysunek 4 – Zrzut ekranu przedstawiający konsole narzędzia Semgrep, źródło semgrep.dev
Implementacja wtyczek w ramach skanowania w środowisku deweloperskim może wyglądać jak na poniższym zrzucie ekranu.
Rysunek 5 – aplikacja automatycznej naprawy wadliwego kodu poprzez rozszerzenie do Visual Studio Code od Semgrep, źródło: Semgrep.dev
Mamy nadzieję, że udało nam się przybliżyć Wam proces zarządzania bezpieczeństwem z perspektywy DevSecOps. Zespoły DevSecOps integrują bezpieczeństwo z każdym etapem procesu tworzenia oprogramowania, pozwalając na wykrywanie i eliminowanie podatności od najwcześniejszych faz rozwoju (shift-left). Dzięki narzędziom typu SAST, DAST, SCA czy skanowanie sekretów, zespoły mogą skuteczniej zabezpieczać aplikacje przed nowoczesnymi zagrożeniami. Podejście SSDLC oraz automatyzacja w ramach CI/CD zapewniają przy tym powtarzalność całego procesu zarządzania bezpieczeństwem. Jeśli jesteście ciekawi większej ilości technicznych szczegółów zapraszamy do zajrzenia do źródeł.
https://medium.com/@usamayaseen/application-security-in-ssdlc-a778205ac810
Zarządzanie tożsamością i dostępem użytkownika, czyli o co chodzi z IDP?
Czym jest tożsamość użytkownika? Z czego wynika potrzeba zarządzania dostępem w firmie? Jak działa tzw. IDP? Odpowiedź na te pytania znajdziesz w artykule.
Bezpieczeństwo
Hej, hej... Programisto, to kolejny artykuł dla Ciebie! Druga część artykułu na temat wzorców projektowych. Poznaj Adapter oraz Memento.
Programowanie
Programisto, to artykuł dla Ciebie! Łap garść przydatnych informacji na temat wzorców projektowych.
Programowanie