![](https://habrastorage.org/getpro/habr/upload_files/b6b/d7b/61b/b6bd7b61b6e5323cd135c489e916424e.png)
![](https://habrastorage.org/getpro/habr/upload_files/fd8/40c/024/fd840c024c2f047b7901b396585ec93c.jpg)
Автор статьи: Рустем Галиев
IBM Senior DevOps Engineer & Integration Architect. Официальный DevOps ментор и коуч в IBM
В современном мире разработка программного обеспечения стала неотъемлемой частью бизнес-процессов, требующей не только высокой производительности, но и надежной защиты от угроз безопасности. В этом контексте DevSecOps выступает как ключевая парадигма, интегрируя принципы безопасности непосредственно в процессы разработки и поставки. Особое внимание уделяется инструментам, способствующим обеспечению безопасности приложений на каждом этапе их жизненного цикла. В данной статье мы сосредоточим взгляд на сочетании двух мощных технологий — Kubernetes и SonarQube, и рассмотрим, как их совместное использование в рамках DevSecOps способствует созданию надежных и безопасных решений.
SonarQube представляет собой мощный инструмент статического анализа кода, который активно внедряется в практики DevSecOps для обеспечения высокого уровня безопасности и качества программного обеспечения. Этот инструмент разработан с целью выявления потенциальных уязвимостей, дефектов кода и проблем производительности на ранних этапах разработки.
Одним из ключевых преимуществ SonarQube является его способность автоматизированного анализа кода на множестве языков программирования. Интегрированные статические анализаторы позволяют выявлять такие проблемы, как некорректное использование аутентификации, утечки конфиденциальной информации, потенциальные уязвимости безопасности и другие аспекты, влияющие на безопасность приложения.
Однако, SonarQube не ограничивается только безопасностью. Он также предоставляет разработчикам ценные инсайты по качеству кода, поддерживая множество метрик, таких как цикломатическая сложность, покрытие кода тестами, степень повторного использования кода и другие.
Давайте начнем
Нам понадобится Helm для установки Sonarqube в кластер
helm repo add sonarqube https://SonarSource.github.io/helm-chart-sonarqube && helm repo list
![](https://habrastorage.org/getpro/habr/upload_files/e11/9ac/0e2/e119ac0e241bcbb25586c14e37471cea.png)
Задеплоим
helm install my-sonarqube sonarqube/sonarqube \
--version $VERSION \
--namespace sonarqube \
--create-namespace \
--values sonarqube-values.yaml
![](https://habrastorage.org/getpro/habr/upload_files/1d7/7c2/ef7/1d77c2ef71ba9e85c1c9c43aeb9d7336.png)
Этот набор данных автоматически инициализирует экземпляр SonarQube вместе с базой данных PostgreSQL. SonarQube также загружает несколько полезных плагинов для анализа, определенных в конфигурации Helm-чарта:
![](https://habrastorage.org/getpro/habr/upload_files/39b/e02/64b/39be0264bbbfd7e92ee1f150af3277d9.png)
Проверим, все ли задеплоилось
watch kubectl get statefulset,pods,services --namespace sonarqube
![](https://habrastorage.org/getpro/habr/upload_files/d66/a46/695/d66a46695969572bd5fd56414073b5ca.png)
Сервис SonarQube открыт как NodePort на порту — 31111.
в состояние READY 1/1, и может потребоваться еще минута или две, прежде чем будет доступен рабочий инструментарий.
Мы можем войти под учетной записью admin/admin и просмотреть предварительно установленные выбранные плагины.
![](https://habrastorage.org/getpro/habr/upload_files/9bc/50e/92b/9bc50e92b3827082cf5397bb85d7a469.png)
Поменяем пароль на очень безопасный 123 (Конечно шутка)
![](https://habrastorage.org/getpro/habr/upload_files/e03/e19/bba/e03e19bbad23e49960770a6cae077e8d.png)
![](https://habrastorage.org/getpro/habr/upload_files/95c/989/8d7/95c9898d7ab4023955bad59b582946d3.png)
Анализ проекта с использованием SonarQube
Склонируем сампловый репо:
git clone https://github.com/javajon/smelly && cd smelly
Этот проект включает в себя каталог микросервиса, который содержит небольшое приложение Spring Boot, построенное с использованием Gradle:
![](https://habrastorage.org/getpro/habr/upload_files/086/04e/c37/08604ec37d512ae7f529f9986d4ca3d7.png)
Мы проводим анализ данного Java-проекта, используя SonarQube в качестве механизма правил и панели инструментов, где результаты публикуются.
Получим местоположение нашего SonarQube:
SONAR_SERVICE=https://sonarqube.qa.environments.ibm.com
Запустим анализ
./gradlew -Dsonar.host.url=$SONAR_SERVICE -Dsonar.login=admin -Dsonar.password=12QA67wWbA. Sonarqube
![](https://habrastorage.org/getpro/habr/upload_files/dfb/ae1/99e/dfbae199ec705daf6b06419bb102f3f7.png)
Анализ займет примерно 2 минуты для публикации результатов в SonarQube. По завершении переходим на портал SonarQube и наблюдаем проанализированный проект.
![](https://habrastorage.org/getpro/habr/upload_files/a4c/944/072/a4c944072edd3f6bdc79da95fdcf8c15.png)
![](https://habrastorage.org/getpro/habr/upload_files/db6/df8/fc2/db6df8fc2063f58e4023c154a7413855.png)
![](https://habrastorage.org/getpro/habr/upload_files/75b/6bc/700/75b6bc700adc4e6181f7fa58ec6751ef.png)
![](https://habrastorage.org/getpro/habr/upload_files/48e/9ab/6a6/48e9ab6a6e95335132ac1f0b00fdc0ee.png)
![](https://habrastorage.org/getpro/habr/upload_files/cc3/c98/fab/cc3c98fab5682d4f8e21e075895cb980.png)
Простой в интеграции и конфигурации, но достаточно полезный инструмент.
В завершение хочу пригласить вас на бесплатный урок, где мы рассмотрим важные аспекты обеспечения безопасности в Docker. В ходе урока вы узнаете и научитесь использовать основные средства обеспечения безопасности в Docker, а также ознакомитесь с практиками безопасной сборки, тестирования и защиты Docker контейнеров. Мы предоставим вам возможность самостоятельно погрузиться в более глубокую настройку безопасности при необходимости.