SAST with SonarQube on Jenkins

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:

Tools:

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.

    Leave a Reply

    Your email address will not be published. Required fields are marked *