Introduction
SonarQube adalah platform open-source yang digunakan untuk melakukan analisis kode statis (SAST), yang fokus pada kualitas kode dan keamanan. SonarQube mendukung berbagai bahasa pemrograman dan dapat diintegrasikan ke dalam pipeline CI/CD untuk memastikan bahwa kode yang ditulis mematuhi standar kualitas dan tidak memiliki kerentanan keamanan.
Fitur Utama SonarQube:
- Analisis Kode Statis: SonarQube memeriksa kode untuk berbagai jenis masalah, termasuk bug, kode yang tidak efisien, dan kerentanan keamanan.
- Dukungan Multi-Bahasa: Mendukung banyak bahasa pemrograman seperti Java, JavaScript, C#, PHP, Python, dan banyak lainnya.
- Kepatuhan Kode: Memastikan kode mematuhi standar pengkodean yang ditetapkan oleh organisasi atau komunitas.
- Dashboard dan Laporan: Menyediakan visualisasi dan laporan mendetail tentang kualitas kode dan status keamanan.
- Integrasi CI/CD: SonarQube dapat diintegrasikan dengan alat CI/CD seperti Jenkins, GitLab CI, dan lainnya, untuk memastikan bahwa kualitas kode tetap terjaga selama proses pengembangan.
Penggunaan SAST dan SonarQube:
- SAST digunakan oleh pengembang dan tim keamanan untuk mengidentifikasi masalah keamanan dalam kode selama pengembangan, sehingga dapat diperbaiki sebelum aplikasi berjalan.
- SonarQube digunakan untuk menjaga kualitas kode dan mengidentifikasi kerentanan keamanan, serta untuk memastikan kode mematuhi standar pengkodean dan praktik terbaik.
Keduanya merupakan komponen penting dalam strategi DevSecOps, yang bertujuan untuk mengintegrasikan keamanan ke dalam setiap tahap pengembangan aplikasi.
Baca Artikel Sebelumnya:
- DevSecOps Methodology
- Jenkins For Pipeline DevSecOps
- Secret Scanning on DevSecOps
- SCA with Trivy on DevSecOps
Tools:
- Sonarqube Installation
- Jenkins
Adapun berikut untuk tahapan-tahapanya:
1. Setup Simple Rules & Import your Code
Disini saya akan membuat SonarQube Quality Gate adalah mekanisme di SonarQube yang digunakan untuk menentukan apakah sebuah proyek atau build memenuhi standar kualitas yang telah ditetapkan. Quality Gate berfungsi sebagai “penjaga gerbang” yang memutuskan apakah kode yang dianalisis memenuhi kriteria yang dapat diterima sebelum diteruskan ke tahap berikutnya dalam pipeline

Contoh Kondisi Quality Gate:
Security Hotspots Reviewed is less than 0.0%:
- Ini berarti jika kurang dari 0,0% titik keamanan dalam kode yang telah diperiksa (atau tidak ada sama sekali yang diperiksa), maka kondisi ini gagal.
- Dengan kata lain, semua titik keamanan harus diperiksa (lebih dari 0,0%) untuk lulus Quality Gate.
Security Rating is worse than A:
- Ini berarti jika tingkat keamanan kode lebih buruk dari A (misalnya B, C, D, atau E), maka kondisi ini gagal.
- Untuk lulus Quality Gate, kode harus memiliki Security Rating A, yang berarti kode tersebut sangat aman.
– Import Code ke Sonarqube dengan cara berikut:
1.a Create local porject

1.b Pilih Gatesnya

1.c Excute command
Ini kita bisa gunakan di local maupun di pipeline, dan untuk runningnya di file directory ./
sonar-scanner \
-Dsonar.projectKey=nodejs-goof-A \
-Dsonar.sources=. \
-Dsonar.host.url=http://localhost:9009 \
-Dsonar.token=sqp_TOKEN
2. Integrate to Pipeline
- Selanjutnya adalah Integrasi ke pipeline menggunakan Jenkins, tambahkan stage berikut ini
stage('SAST SonarQube') {
agent {
docker {
image 'sonarsource/sonar-scanner-cli:latest'
args '--network host -v ".:/usr/src" --entrypoint='
}
}
steps {
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
sh 'sonar-scanner -Dsonar.projectKey=nodejs-goof -Dsonar.qualitygate.wait=true -Dsonar.sources=. -Dsonar.host.url=http://localhost:9009 -Dsonar.token=$SONARQUBE_CREDENTIALS_PSW'
}
}
}
- Kemudian commit & push untuk tambahan stage tersebut dan tunggu pipeline

Pipeline berjalan, dan berhasil melewati gate yang kita buat artinya pass, dan saya juga menambahkan Docker Build.

Dan check pada dashboard sonarqube kalian, selamat mencoba.

Admin website igunawan.com, System Administrator, DevOps Engineer
