Интеграция SonarQube в Kubernetes

b6bd7b61b6e5323cd135c489e916424e.png

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

e119ac0e241bcbb25586c14e37471cea.png

Задеплоим

helm install my-sonarqube sonarqube/sonarqube \
  --version $VERSION \
  --namespace sonarqube \
  --create-namespace \
  --values sonarqube-values.yaml

1d77c2ef71ba9e85c1c9c43aeb9d7336.png

Этот набор данных автоматически инициализирует экземпляр SonarQube вместе с базой данных PostgreSQL. SonarQube также загружает несколько полезных плагинов для анализа, определенных в конфигурации Helm-чарта:

39be0264bbbfd7e92ee1f150af3277d9.png

Проверим, все ли задеплоилось

watch kubectl get statefulset,pods,services --namespace sonarqube

d66a46695969572bd5fd56414073b5ca.png

Сервис SonarQube открыт как NodePort на порту — 31111.

в состояние READY 1/1, и может потребоваться еще минута или две, прежде чем будет доступен рабочий инструментарий.

Мы можем войти под учетной записью admin/admin и просмотреть предварительно установленные выбранные плагины.

9bc50e92b3827082cf5397bb85d7a469.png

Поменяем пароль на очень безопасный 123 (Конечно шутка)

e03e19bbad23e49960770a6cae077e8d.png95c9898d7ab4023955bad59b582946d3.png

Анализ проекта с использованием SonarQube

Склонируем сампловый репо:

git clone https://github.com/javajon/smelly && cd smelly

Этот проект включает в себя каталог микросервиса, который содержит небольшое приложение Spring Boot, построенное с использованием Gradle:

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

dfbae199ec705daf6b06419bb102f3f7.png

Анализ займет примерно 2 минуты для публикации результатов в SonarQube. По завершении переходим на портал SonarQube и наблюдаем проанализированный проект.

a4c944072edd3f6bdc79da95fdcf8c15.pngdb6df8fc2063f58e4023c154a7413855.png75b6bc700adc4e6181f7fa58ec6751ef.png48e9ab6a6e95335132ac1f0b00fdc0ee.pngcc3c98fab5682d4f8e21e075895cb980.png

Простой в интеграции и конфигурации, но достаточно полезный инструмент.

В завершение хочу пригласить вас на бесплатный урок, где мы рассмотрим важные аспекты обеспечения безопасности в Docker. В ходе урока вы узнаете и научитесь использовать основные средства обеспечения безопасности в Docker, а также ознакомитесь с практиками безопасной сборки, тестирования и защиты Docker контейнеров. Мы предоставим вам возможность самостоятельно погрузиться в более глубокую настройку безопасности при необходимости.

© Habrahabr.ru