Стартовал я с SonarQube лет пять назад в одном стартапе. Поднял инстанс, забыл про пароль — и только потом понял, что это потенциальная уязвимость. Давайте разберёмся, что здесь происходит, почему это важно и как выбрать правильный инструмент для анализа кода.
Что такое SonarQube и почему про пароли вообще говорят
SonarQube — это платформа для статического анализа кода, разработана французской компанией SonarSource. Её основная задача: найти баги, уязвимости, проблемы с производительностью, дублирование кода и нарушения стиля.
При первой установке SonarQube создаёт учётную запись администратора с логином admin и паролем admin. Вот этот момент и вызывает половину проблем на боевых серверах.
Почему это критично? Потому что SonarQube часто содержит информацию про весь исходный код компании. Если кто-то зайдёт под дефолтным паролем, получит доступ к:
- Истории уязвимостей в вашем коде
- Путям к файлам и архитектуре проекта
- Интеграциям с системами контроля версий
- Метрикам качества и потенциальным проблемам
Иными словами, это не просто неудобство — это дыра в безопасности.
Как SonarQube работает и где находится этот пароль
SonarQube разворачивается обычно как Docker-контейнер или Java-приложение. После первого запуска он создаёт веб-интерфейс на порту 9000.
docker run -d --name sonarqube -p 9000:9000 sonarqube:latest
Заходишь на http://localhost:9000 — видишь форму логина. По умолчанию:
- Логин:
admin - Пароль:
admin
Звучит как шутка? На деле в половине компаний, где я консультировал, эти учётные данные не менялись месяцами. Особенно в стартапах — "когда-нибудь поменяем".
Пароль хранится в базе данных SonarQube (по умолчанию H2 или PostgreSQL, если настроили). Он хеширован, но вопрос в том, что дефолт остаётся дефолтом до тех пор, пока его не поменяешь.
Что делать: пошаговый гайд по смене пароля
Процесс простой, но его нужно сделать в первый день после установки.
Шаг 1: Заходишь в веб-интерфейс с admin/admin
Шаг 2: Кликаешь на аватар администратора (правый верхний угол) → My Account
Шаг 3: Переходишь на вкладку Security → Change password
Шаг 4: Вводишь старый пароль (admin), потом новый (мощный, 12+ символов, спецсимволы)
Вот и всё. Но есть подвох.
Если SonarQube развёрнут с дефолтной встроенной БД (H2), она хранится в памяти или в локальном файле. При перезагрузке контейнера пароли могут сброситься. Поэтому правильно — сразу настроить отдельный PostgreSQL:
version: '3.9'
services:
sonarqube:
image: sonarqube:latest
ports:
- "9000:9000"
environment:
- sonar.jdbc.url=jdbc:postgresql://db:5432/sonarqube
- sonar.jdbc.username=sonarqube
- sonar.jdbc.password=strongpassword123
depends_on:
- db
db:
image: postgres:13
environment:
POSTGRES_DB: sonarqube
POSTGRES_USER: sonarqube
POSTGRES_PASSWORD: strongpassword123
После этого смена пароля сохраняется.
SonarQube vs конкуренты: честное сравнение
SonarQube — не единственный инструмент. Давайте посмотрим, как он стоит рядом с альтернативами.
| Параметр | SonarQube | CodeClimate | Checkmarx | Distiq |
|---|---|---|---|---|
| Языки | 25+ | 10+ | 20+ | 15+ (Python, JS, Java, Go, PHP и др.) |
| Установка | Локально или облако | Только облако | Локально/облако | Облако (webhook за 2 минуты) |
| Дефолтный пароль | Есть (нужно менять) | Нет (OAuth) | Нет | Нет |
| Цена | От $0 (Community) до $5k+ | $120-300/мес | От $10k/год | От $99/мес, бесплатно для малых команд |
| Анализ PR/MR | Через плагины | Встроено | Встроено | Встроено (инлайн-комментарии) |
| Производительность | Медленно на больших проектах | Быстро | Очень медленно | Быстро (AI) |
| Сложность настройки | Средняя | Низкая | Высокая | Очень низкая |
| Для российских команд | Требует VPN | Требует VPN | Требует VPN | Нет (серверы в РФ) |
SonarQube: плюсы
- Очень гибкий, можно кастомизировать под себя
- Community Edition бесплатна (но с ограничениями)
- Богатая экосистема плагинов
- Хороший анализ качества кода (не только баги)
SonarQube: минусы
- Нужно разворачивать и поддерживать
- Требует ресурсов (оперативка, диск)
- Медленный на больших проектах (может анализировать часами)
- Дефолтный пароль — постоянная головная боль в командах
- Требует отдельной БД для продакшена
- Лицензирование запутанное (Community vs Developer vs Enterprise)
Когда SonarQube имеет смысл:
- Большой проект с долгой историей кода
- Нужна гибкая кастомизация правил
- Бюджет позволяет содержать свой сервер
- Вы готовы потратить время на настройку
Альтернативы и их особенности
CodeClimate — облачное решение, похоже на SonarQube, но проще. Минус: данные уходят в США, для российских компаний это может быть проблемой. Плюс: не нужно ничего разворачивать.
ESLint + Prettier — если вы работаете с JavaScript. Легко, быстро, встраивается прямо в CI/CD. Но это не замена полноценному статическому анализу.
Pylint/Flake8 — для Python. Аналогично: хорошо для стиля, но не поймет сложные логические ошибки.
Distiq — российский сервис для AI code review. Интегрируется прямо в GitHub/GitLab, анализирует каждый MR/PR за 30-60 секунд. Не требует дефолтных паролей (вообще не требует управления инфраструктурой). Находит не только баги, но и проблемы с производительностью, уязвимости, нарушения стиля. Данные хранятся в РФ — для российских команд это плюс.
Практический совет: как правильно настроить SonarQube
Если всё же выбрали SonarQube, вот чеклист:
- Сразу смени дефолтный пароль на мощный (16+ символов, спецсимволы)
- Настрой PostgreSQL вместо встроенной БД
- Закрой доступ по IP — не выставляй порт 9000 в интернет
- Используй HTTPS с сертификатом (Let's Encrypt)
- Настрой LDAP/SSO если в компании есть корпоративный каталог
- Регулярно обновляй — SonarQube часто выпускает патчи безопасности
# Правильный запуск с PostgreSQL и ограничением доступа
docker run -d \
--name sonarqube \
-p 127.0.0.1:9000:9000 \
-e sonar.jdbc.url=jdbc:postgresql://db:5432/sonarqube \
-e sonar.jdbc.username=sonarqube \
-e sonar.jdbc.password=$(openssl rand -base64 32) \
-e sonar.web.javaAdditionalOpts="-Dsonar.security.realm=LDAP" \
sonarqube:latest
Итог: выбор инструмента
SonarQube — мощный инструмент, но он требует внимания к безопасности и ресурсам. Дефолтный пароль — это первая же проблема, с которой сталкиваются команды.
Если вы в российской компании и хотите не заморачиваться с инфраструктурой — смотрите в сторону облачных решений. Distiq, например, встраивается за пару минут в GitHub или GitLab, анализирует каждый PR прямо в комментариях и не требует никакой настройки паролей. Для большинства команд это экономит часы на настройке.
А если вам нужна максимальная гибкость и у вас есть DevOps — SonarQube всё ещё отличный выбор. Просто помните про пароль в первый же день.
