Introduction
Software composition analysis (SCA) adalah proses untuk mengidentifikasi dan mengelola komponen open-source dalam aplikasi. SCA membantu dalam memahami elemen-elemen yang menyusun aplikasi (seperti library atau framework) dan memastikan bahwa mereka tidak memiliki kerentanan atau masalah lisensi yang bisa menimbulkan risiko.
Manfaat utama SCA meliputi:
- Keamanan: Mengidentifikasi kerentanan keamanan dalam komponen open-source yang digunakan dalam aplikasi.
- Kepatuhan Lisensi: Memastikan bahwa penggunaan komponen open-source sesuai dengan lisensi mereka dan tidak menimbulkan risiko hukum.
- Manajemen Risiko: Memungkinkan pengembang untuk mengelola risiko terkait penggunaan komponen open-source dengan lebih efektif.
- Transparansi: Memberikan visibilitas yang lebih baik terhadap komposisi aplikasi, sehingga memudahkan dalam pemeliharaan dan peningkatan.
SCA biasanya diintegrasikan dalam pipeline DevSecOps untuk memastikan bahwa aplikasi aman, terjaga keandalannya, dan mematuhi peraturan sebelum dirilis.
Baca Artikel Sebelumnya:
Tools :
Ada 2 hal yang akan dibahas yaitu tentang cara scan di local dan juga mengintegrasikanya kedalam Pipeline Jenkins berikut ini tahapanya :
1. Install Trivy on Local & Test Run
brew install aquasecurity/trivy/trivy
- Atau untuk instalasi silahkan lihat disini : https://aquasecurity.github.io/trivy/v0.54/getting-started/installation/

- Masuk ke folder aplikasi kita yang akan di scan Dockernya, disini saya mempunya file Dockerfile, yang dimana itu adalah tujuan saya untuk melakukan scanning
# FROM node:6-stretch FROM node:18.13.0 RUN mkdir /usr/src/goof RUN mkdir /tmp/extracted_files COPY . /usr/src/goof WORKDIR /usr/src/goof RUN npm install EXPOSE 3001 EXPOSE 9229 ENTRYPOINT ["npm", "start"]

trivy config ./Dockerfile
- Hasil scanning adalah sebagai berikut :

- Trivy juga bukan hanya bisa scan Dockerfile, tapi bisa scan ./ file directory kita dan juga image docker lainya seperti berikut:
trivy image nginx:latest
trivy filesystem ./location-file-dir
3. Integrate on Pipeline
- Dan selanjutnya adalah kita integrasikan Trivy ini kedalam pipeline, yang dimana triviy adalah salah satu tools SCA, dan disini sekali lagi kita fokus untuk scan Dockerfilenya.
- Update Jenkinsfile
stage('SCA Trivy Scan Dockerfile') {
agent {
docker {
image 'aquasec/trivy:latest'
args '-u root --network host --entrypoint='
}
}
steps {
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
sh 'trivy config Dockerfile --exit-code=1 --format json > trivy-scan-dockerfile-report.json'
}
sh 'cat trivy-scan-dockerfile-report.json'
archiveArtifacts artifacts: 'trivy-scan-dockerfile-report.json'
}
Note: untuk repository saya masih menggunakan / melanjutkan repo yang di artikel sebelumnya, atau kalian bisa clone reponya dari snyk berikut ini https://github.com/snyk/snyk-goof
- Tinggal Commit & push maka kita akan lihat hasil dari pipeline stage Trivy tersebut di Jenkins

Secret-scanning & SCA gagal, dan bisa kita lihat kekurangan apa dan apa yang harus kita tambah dari archive log tesebut

Tinggal kita fixing setelah menemuka Vulnerability tersebut.
4. After Fixing
- Commit & Push hasil fixing

- Hasil pipeline terbaru, adapun secret scanning merah tapi masih bisa melanjutkan stage selanjutnya dikarenakan itu adalah false positive


Dockerfile siap digunakan, dan dengan adanya integrasi Pipeline akan terus berulang

Admin website igunawan.com, System Administrator, DevOps Engineer
