Wprowadzenie
Projektując infrastrukturę w Azure staramy się zawsze jak najlepiej zabezpieczyć nasze środowisko oraz ukryć wszelkie dane wrażliwe. Jednakże człowiek jest omylny, może się zapomnieć lub po prostu zabraknie mu wystarczającej wiedzy. Z pomocą przychodzą nam polityki w Azure, które są w stanie wykonać assessment naszego środowiska oraz zaproponować akcje naprawcze, zwiększające poziom bezpieczeństwa w naszym środowisku. Niestety najpierw musimy stworzyć infrastrukturę, a dopiero następnie zacząć zabezpieczać nasze środowisko. W taki sposób możemy wygenerować dodatkowe koszty, zanim środowisko zostanie skonfigurowane oraz uruchomione produkcyjnie. Z drugiej strony możemy tworzyć środowiska w chmurze za pomocą kodu – na przykład Azure Bicep, jednakże skomplikowanie kodu oraz często nieoczywiste parametry, nie ułatwiają konfiguracji takich zasobów. Istnieje jednak rozwiązanie pozwalające przeprowadzić assessment naszego wdrożenia z kodu, zanim zostanie wdrożone w chmurze. Tym rozwiązaniem jest Checkov. Jeżeli interesuje cię czym jest to rozwiązanie oraz jak działa to zapraszam do zapoznania się z poniższym wpisem.
Checkov
Checkov jest narzędziem pozwalającym na skanowanie oraz analizę naszych plików Infrastructure-as-Code (IAC). Podczas swojego wywołania Checkov poszukuje konfiguracji środowiska, która może prowadzić do problemów z zakresu bezpieczeństwa czy zgodności z normami. Narzędzie to posiada ponad 1000 wbudowanych polityk oraz pozwala na integrowanie naszych własnych zasad w celu sprawdzenia wdrożenia zgodnego z naszymi normami. Checkov wspiera obecnie skanowanie plików takich jak: Terraform, ARM templates, Bicep, Docker, Kubernetes, CloudFormation oraz Helm Charts. Checkov posiada również możliwość wykonania Software Composition Analysis, które wykona skan użytych przez nas open-sourceowych obrazów oraz paczek w celu znalezienia jakichkolwiek Common Vulnerabilities and Exposures (CVEs).
Checkov jest w stanie porównać naszą infrastrukturę ze znanymi standardami bezpieczeństwa jak Center for Internet Security (CIS). Jak już wspomniałem możliwe jest również tworzenie własnych polityk, a te stworzymy za pomocą Pythona czy YAML.
Jeżeli dodamy do tego integracje z Bridgecrew który jeszcze zwiększa możliwości Checkov’a, pozwalając na wykorzystanie tego narzędzia w systemach CI/CD, czy tworzenie raportów zgodności to dostajemy naprawdę ciekawe narzędzie dające miarodajny zbiór informacji dla deweloperów, czy administratorów, ale również generujące zrozumiałe raporty dla szczebla managerskiego.
Jeżeli interesuje cię więcej szczegółów na temat tego narzędzia, to odsyłam do dokumentacji: Quick Start – checkov
Demo
Przejdźmy teraz do ciekawszego etapu, czyli przetestowania działania narzędzia. W tym celu musimy rozpocząć od instalacji. Tutaj z pomocą przychodzi dokumentacja na stronie rozwiązania, znajdziemy tam instrukcję instalacji za pomocą pythona czy homebrew na MacOSie – Installing Checkov – checkov.
W moim przypadku będziemy używać homebrew.
- Zaczynamy od uruchomienia terminala oraz wykonania komendy.
brew install checkov
2. Możemy sprawdzić, czy instalacja przebiegła pomyślnie wpisując w terminal komendę „Checkov”. Jeżeli wszystko przeszło poprawnie to powinniśmy otrzymać podobny komunikat.
3. Teraz znajdźmy jakiś plik .Bicep, który będzie zawierać brakujące konfiguracje bezpieczeństwa. W moim przypadku wykorzystamy plik .bicep z repozytorium Microsoftu – azure-quickstart-templates/main.bicep at master · Azure/azure-quickstart-templates (github.com)
4. Następnie w terminalu wykonujemy komendę. Komenda ta, przeskanuje cały folder, który zostanie podany, jeżeli chcemy zrobić skan na pojedynczym pliku wtedy należy użyć flagi „-f”
checkov -d (Directory path)
5. Na poniższym screenshocie widzimy podsumowanie skanu wykonanego przez Checkov’a. Widzimy, ile wykryto zagrożeń oraz dokładną informację, jakie zagrożenie zostało wykryte, jaki jest jego priorytet oraz link do instrukcji jak rozwiązać ten problem.
Podsumowanie
Podsumowując, moim zdaniem jest to bardzo ciekawe narzędzie, które będę wykorzystywać do sprawdzania zgodności swoich plików .bicep z politykami bezpieczeństwa czy standardami. Jest to wciąż młode narzędzie, przez co sam napotkałem kilka drobnych problemów podczas testowania. Przykładowo, przy bardziej skomplikowanych plikach .bicep, zawierających wiele if’ów czy loop’ów Checkov potrafił się wysypać podczas parse’owania plików. Mimo to uważam, że narzędzie jest godne uwagi, a wykorzystanie również darmowej wersji Bridgecrew zwiększa jego możliwości oraz pozwala wykorzystywać extension w Visual Studio Code, który sam wykonuje takie skany. Polecam każdemu sprawdzić to narzędzie oraz zdecydować czy jest to coś godnego uwagi. Jeżeli temat cię zainteresował lub chciałbyś dowiedzieć się czegoś więcej z zakresu Azure’a to daj znać w komentarzu.
Zapraszam również do wcześniejszego wpisu na temat Azure Bicep, gdzie testowaliśmy wykorzystanie prywatnych rejestrów modułów w Azure Container Registry – Azure Bicep – Prywatne rejestry modułów • Maciej Poborca.
[ENG] – Azure Bicep – Security scanning using Checkov • Maciej Poborca.