Установка инструмента проверки кода SonarQube в Rocky Linux 8
Установка инструмента проверки кода SonarQube в Rocky Linux 8
SonarQube® — это инструмент автоматической проверки кода для обнаружения ошибок, уязвимостей и запахов кода в вашем коде. Он может интегрироваться с вашим существующим рабочим процессом, таким как Jenkins, для обеспечения непрерывной проверки кода в ветвях проекта и запросов на вытягивание.
В этом кратком руководстве мы установим этот фантастический инструмент с открытым исходным кодом, чтобы у вас была возможность ознакомиться с кодом вашей команды, прежде чем они будут развернуты в производственной среде. Это поможет оптимизировать ваши приложения, а также повысить их безопасность за счет обнаружения устаревшего используемого программного обеспечения и оперативного предоставления рекомендаций.
Предварительные условия
- SonarQube построен на Java, поэтому мы должны убедиться, что Java 11 установлена.
- Другой пользователь, кроме root, для запуска elasticsearch, следовательно, SonarQube
- PostgreSQL
Чтобы установить этот инструмент в Rocky Linux 8, выполните следующие действия:
Шаг 1. Обновите и установите необходимые инструменты и выполните системные настройки.
На этом этапе убедитесь, что ваш сервер хорошо обновлен, а также установите все инструменты, которые потребуются в процессе установки. Мы также настроим системные настройки, такие как SELinux , max_map_count и fs.file-max . Выполните приведенные ниже команды, чтобы обновить свой сервер.
sudo yum update
sudo yum install vim wget curl -y
Настройте SELinux как разрешающий
Это можно сделать, выполнив следующие команды:
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
Настроить max_map_count и fs.file-max
Из документации ядра Linux этот файл содержит максимальное количество областей карты памяти, которые может иметь процесс. Области карты памяти используются как побочный эффект вызова malloc, непосредственно через mmap, mprotect и madvise , а также при загрузке разделяемых библиотек.
Чтобы настроить параметры в соответствии с требованиями SonarQube, откройте файл « /etc/sysctl.conf » и добавьте параметры, как показано ниже:
$ sudo vim /etc/sysctl.conf
vm.max_map_count=262144
fs.file-max=65536
Затем перезагрузите конфигурацию sysctl следующим образом:
sudo sysctl --system
Создать пользователя для сонара
Рекомендуется создать отдельного пользователя для запуска SonarQube. Создадим его следующим образом:
sudo useradd sonar
Затем установите пароль для пользователя
sudo passwd sonar
Шаг 2. Установите Java 11 в Rocky Linux 8
Как уже упоминалось во вводном разделе, SonarQube написан на Java, и для него требуется установленная Java (11, особенно в этой настройке).
sudo yum install java-11-openjdk-devel
Шаг 3: Установите и настройте PostgreSQL
В этом примере руководства мы собираемся установить сервер PostgreSQL 13 на том же сервере, на котором будет находиться SonarQube. Вы можете разместить его на другом сервере в зависимости от ваших потребностей. Чтобы установить PostgreSQL 13 на свой сервер Rocky Linux 8, следуйте инструкциям в приведенном ниже руководстве, чтобы быстро настроить и запустить его. Вы можете игнорировать веб-интерфейс Install pgAdmin 4 на шаге 6 руководства, если он вам не нужен.
После завершения установки и успешного подключения к нашей базе данных Postgres мы можем перейти к созданию пользователя и базы данных для SonarQube.
Создание пользователя и базы данных SonarQube
Здесь мы собираемся создать пользователя для SonarQube. Перед выходом из базы данных действуйте, как показано ниже.
postgres=# create user sonar;
postgres=# create database sonar_db owner sonar;
postgres=# grant all privileges on database sonar_db to sonar;
Установите пароль для созданного пользователя эхолота
postgres=# ALTER USER sonar WITH ENCRYPTED password 'StrongPassword';
Шаг 4: Загрузите и установите SonarQube
Теперь мы находимся в точке, которую долго ждали. Мы загрузим долгосрочный выпуск SonarQube, а затем установим его на наш сервер Rocky Linux. Чтобы установить SonarQube, выполните следующие действия.
Получить версию SonarQube LTS
Вы можете посетить страницу загрузок SonarQube, чтобы просмотреть их различные предложения. Мы будем загружать долгосрочную версию (LTS), которая на момент написания была sonarqube-8.9 .
cd /opt/
sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.9.1.44547.zip
Затем разархивируйте файл
sudo yum -y install unzip
sudo unzip sonarqube-8.9.1.44547.zip
После этого переименуйте папку в sonarqube
sudo mv sonarqube-8.9.1.44547 sonarqube
Шаг 5: Настройте SonarQube на Rocky Linux 8
После того, как файлы были извлечены в каталог / opt / , пора настроить приложение.
Откройте файл « /opt/sonarqube/conf/sonar.properties » и добавьте детали базы данных, как показано ниже. Вдобавок найдите общие строки и раскомментируйте их.
$ sudo vim /opt/sonarqube/conf/sonar.properties
\##Database details
sonar.jdbc.username=sonar
sonar.jdbc.password=StrongPassword
sonar.jdbc.url=jdbc:postgresql://localhost/sonar_db
\##How you will access SonarQube Web UI
sonar.web.host=192.168.171.86
sonar.web.port=9000
\##Java options
sonar.web.javaOpts=-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError
sonar.search.javaOpts=-Xmx512m -Xms512m -XX:MaxDirectMemorySize=256m -XX:+HeapDumpOnOutOfMemoryError
\##Also uncomment the following Elasticsearch storage paths
sonar.path.data=data
sonar.path.temp=temp
Передайте права собственности на файлы SonarQube пользователю сонара, которого мы создали на шаге 1.
sudo chown -R sonar:sonar /opt/sonarqube
В случае, если Java не может быть найдена в расположении по умолчанию, вам нужно будет указать двоичные файлы, которые SonarQube сможет найти. Вы можете указать расположение java в файле « /opt/sonarqube/conf/wrapper.conf ». Найдите строку « wrapper.java.command » и разместите рядом с ней местоположение Java.
sudo vim /opt/sonarqube/conf/wrapper.conf
wrapper.java.command=/usr/local/jdk-11.0.2/bin/java
Добавить служебный файл SonarQube SystemD
Наконец, мы собираемся убедиться, что сможем управлять нашим приложением SonarQube через Systemd, чтобы мы могли запускать и останавливать его, как и другие службы на вашем сервере.
$ sudo vim /etc/systemd/system/sonarqube.service
[Unit]
Description=SonarQube service
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
LimitNOFILE=65536
LimitNPROC=4096
User=sonar
Group=sonar
Restart=on-failure
[Install]
WantedBy=multi-user.target
После редактирования файлов systemd мы должны перезагрузить их, чтобы их можно было читать и загружать.
sudo systemctl daemon-reload
Затем запустите и включите службу
sudo systemctl start sonarqube.service
sudo systemctl enable sonarqube.service
Проверьте его статус, если он успешно запущен и работает.
$ sudo systemctl status sonarqube.service
● sonarqube.service - SonarQube service
Loaded: loaded (/etc/systemd/system/sonarqube.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2021-07-27 18:49:18 EAT; 6s ago
Process: 43024 ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start (code=exited, status=0/SUCCESS)
Main PID: 43073 (wrapper)
Tasks: 36 (limit: 4522)
Memory: 548.3M
CGroup: /system.slice/sonarqube.service
├─43073 /opt/sonarqube/bin/linux-x86-64/./wrapper /opt/sonarqube/bin/linux-x86-64/../../conf/wrapper.conf wrapper.sy> ├─43075 /usr/local/jdk-11.0.2/bin/java -Dsonar.wrapped=true -Djava.awt.headless=true -Xms8m -Xmx32m -Djava.library.p> └─43097 /usr/local/jdk-11.0.2/bin/java -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInit
Шаг 6. Измените правила брандмауэра, чтобы разрешить доступ к SonarQube.
На этом этапе сервис sonarqube должен быть запущен. Если вы не можете получить доступ к веб-интерфейсу, посетите файлы журнала, расположенные в « / opt / sonarqube / logs », где вы найдете:
- журналы elasticsearch (es.log)
- Журналы сонара (sonar.log)
- веб-журналы (web.log)
- Журналы доступа (access.log)
- И другие
Как вы помните, мы включили SonarQube web для прослушивания порта 9000. Чтобы все работало, мы должны разрешить этот порт на брандмауэре. Сделайте это, выполнив приведенную ниже команду.
sudo firewall-cmd --permanent --add-port=9000/tcp && sudo firewall-cmd --reload
Шаг 7. Доступ к веб-интерфейсу пользователя
Время, которого мы ждали, наконец-то пришло. Теперь мы готовы получить доступ к интерфейсу SonarQube и начать оценку нашего кода на предмет безопасности. Чтобы получить доступ к интерфейсу, откройте свой любимый браузер и укажите в нем http: // server-ip-or-fqdn: 9000 . Вы должны увидеть страницу, аналогичную показанной ниже.
Шаг 8: Вход в систему
Чтобы войти в систему, просто нажмите кнопку « Войти », и вы попадете на страницу, аналогичную той, что опубликована ниже. Используйте имя пользователя как « admin » и пароль как « admin ».
После этого вам будет предложено обновить пароль на новый. Введите новый пароль администратора и войдите в систему.
Вас должны провести в основную зону, как показано ниже:
Заключительные размышления
Теперь у нас есть наш инструмент автоматической проверки кода, который вы можете использовать для сканирования различных приложений, прежде чем они будут утверждены для производства. Это просто, тщательно и дополнит ваши потребности в безопасности организации. Попробуйте. Благодарим вас за визит и огромную поддержку, которую вы продолжаете оказывать.