Integrated Code Security Assesment on CI/CD

Imam M
4 min readJan 23, 2020

Pada artikel ini saya akan berbagi tips untuk rekan — rekan semua, tentang bagaimana mengurangi resiko celah keamanan pada aplikasi, hingga mendeteksi bugs pada setiap baris code, bahkan meningkatkan keamanan terhadap baris code. Apabila diperusahaan rekan — rekan sudah mengadopsi kultur devops tentu ini akan menjadi langkah yang sangat wajib diterapkan sebagai tahap pencegahan peretasan terhadap aplikasi. Sebagai contoh apabila developer mengerjakan sebuah fitur Order lalu melakukan update code terbaru pada repository git maka secara otomatis pipeline pada tools CI/CD akan menjalankan serangkaian job untuk melakukan pemeriksaan standar terhadap baris code yang ditambahkan oleh developer tersebut. misal Code linting, Code Coverage, Unit Test dsb pada tool CI/CD, biasanya akan dilanjutkan ke tahap Merge ke branch tertentu untuk deployment environment staging, sit dan lain-lain. Akan tetapi apabila pada proses CI/CD terjadi kegagalan job maka developer harus melakukan cek terhadap kegagalan tersebut. bahwa terdapat kesalahan pada baris code yang terdeteksi oleh tools CI/CD. sehingga perbaikan harus dilakukan oleh developer tersebut. bahkan proses ini akan terus berulang sehingga code benar — benar sesuai standar yang sudah ditentukan nilainya pada setiap job di CI/CD.

Contoh diatas merupakan alur dimana adanya sebuah standar yang akan membuat kualitas code terjaga dengan baik. Bahkan pandangan pada sisi kemanan sekalipun, apabila ditambahkan job code security assesment pada tool CI/CD untuk mendeteksi vulnerabilities dan bugs setiap baris code yang ditulis oleh developer. maka dapat dipastikan akan berkurangnya celah keamanan pada code atau aplikasi. sehingga baris code yang ditulis untuk dapat menjalankan fitur akan berkurang celah kemanannya. sebagai contoh implementasi saya akan menggunakan Jenkins sebagai tools CI/CD, lalu Sonarqube sebagai analysis code untuk mendeteksi celah keamanan dan bugs terhadap Code.

Langkah Pertama rekan — rekan sudah melakukan instalasi docker engine dan docker-compose lalu clone source pada link dibawah

git clone https://github.com/smilelikeshit/learning-devsecops.git

docker-compose -f docker-compose-jenkins.yaml up -d

docker-compose -f docker-compose-sonarqube.yaml up -d

secara default akan melakukan download image docker dan melakukan build, setelah itu dapat diakses.

user : admin , password : admin (akses sonarqube)

Pilih new-project , masukkan projectKey dan displayName seperti gambar dibawah.

Akan muncul gambar seperti dibawah untuk access sonarqube dengan menggunakan parameter yang sudah digenerate oleh sonarqube

Sebagai catatan sonar.host.url harus disesuaikan dengan IP pada sonarqube [ketentuannya dapat di baca di file Jenkinsfile di repository]

Gambar Unlock Jenkins pada saat pertama kali Install
Gambar Instalasi plugin pada Jenkins

Pada saat melakukan akses jenkins ke alamat http://localhost:8080 , maka diharuskan memasukkan adminstrator password, rekan — rekan dapat mencari password tersebut pada path yang terlampir digambar dengan masuk ke dalam container.

Lalu setelah memasukan password admin, maka akan ditampilkan menu pilihan untuk instalasi plugin, disini kita memilih “Install suggested Plugins”

Gambar Membuat akun admin pada jenkins

Setelah instalasi selesai maka diharuskan membuat username dan password sebagai administrator, sebagai contoh disini kita menggunakan username : admin dan password : admin

Setelah melakukan setup maka lakukan tambah project new item -> pipeline [name project : example-app] -> save

Lalu pilih project example-app dan tambahkan SCM project

Setup SCM pada repository https://github.com/smilelikeshit/learning-devsecops

Save -> Build Now

Lalu pilih menu “Open Blue Ocean”

Jenkins menjalankan Jobs Analysis Code pada sonarqube

Apabila sudah passed seperti gambar di atas dapat dilakukan check pada project sonarqube

Report details analysis code oleh Sonarqube

Seperti rekan — rekan perhatikan report analysis code untuk aplikasi yang di assesment oleh sonarqube menunjukkan jenis — jenis kerentanan seperti vulnerabilites, duplicate code , code coverage dll

Report Vulnerabilites details untuk baris code yang akan membuat kerentanan keamanan pada aplikasi

Report bugs detail untuk setiap baris code. serta suggest yang harus dilakukan untuk melakukan perbaikan.

Nah bisa dibayangkan apabila tahapan diatas pada dijadikan standar minimal setiap code yang masuk ke git repository. tentunya kerentanan yang akan membuat sebuah aplikasi mudah untuk diretas semakin minimal. sekian dari saya dan terima kasih.

Apabila ada saran dan masukan bisa kita ngobrol :)

Referensi :

--

--