
Machine Learning dan Penggunaannya
June 17, 2024
Solusi Devops dengan Redhat OpenShift Container Platform
June 18, 2024Dalam perlombaan untuk menjadi yang pertama di pasar dengan produk baru dan inovatif, banyak organisasi yang mengandalkan model pengembangan perangkat lunak yang sudah ada dan tradisional mengabaikan pertimbangan keamanan dan kepatuhan, serta menguji kerentanannya sebagai langkah terakhir yang terburu-buru ketika tekanan bisnis untuk masuk ke pasar paling intens.
Namun, pendekatan ini justru merugikan. Menunggu untuk menemukan dan memperbaiki cacat keamanan hingga perangkat lunak dianggap “selesai” dapat—dan memang—menghasilkan dua hasil yang bermasalah: entah penerapan perangkat lunak tertunda ketika kerentanannya akhirnya teridentifikasi, atau perangkat lunak dikirimkan apa adanya, termasuk cacat keamanan. Kesenjangan antara proses dan hasil yang diinginkan semakin terasa karena organisasi semakin sering menerapkan perangkat lunak. Menurut survei tahun 2020, 55% pengembang perangkat lunak global mengatakan tim mereka menerapkan ke produksi setidaknya sekali seminggu, sehingga pengujian keamanan ad hoc atau tertunda menjadi tidak berkelanjutan dan tidak efisien.
Inilah tempat DevSecOps berperan. Berdasarkan pendekatan DevOps, yang mengintegrasikan erat proses pengembangan perangkat lunak dan personel dengan operasi teknologi informasi (IT), organisasi yang menggunakan kerangka kerja DevSecOps menambahkan pengujian keamanan dan koordinasi ke semua tahap siklus hidup perangkat lunak. Ini dimulai sejak awal proses pembangunan, bukan menyimpan pengujian kerentanan untuk tahap ulasan perangkat lunak terakhir (atau mengabaikannya sama sekali).
Menerapkan pendekatan “aman dari desain”—bukan sebagai pemikiran belakang tetapi sebagai prinsip dasar—berdasarkan konsep Continuous Integration dan Continuous Delivery (CI/CD), yang “mendorong dan mendukung pemeriksaan kode yang sering, kontrol versi, rilis dan umpan balik berisiko rendah secara berkelanjutan,” menurut penjelasan dari General Services Administration (GSA).
Apa itu DevSecOps?
Development, Security, dan Operational menjadi sebuah life-cycle yang saling berkolaborasi secara komunikasi, teknologi, dan pikiran yang terintegrasi untuk mencapai tujuan tertentu secara bersama. DevSecOps merupakan proses perkembangan dari DevOps untuk mengisi kekurangan yang memang umum terjadi khususnya pada bidang Security.
Culture
DevSecOps adalah proses adaptasi dimana komunikasi, tools teknologi, dan pikiran yang dibangun dan dicurahkan secara bersamaan oleh beberapa tim maupun individu dengan background knowledge yang berbeda dan terjadi berulang-ulang sehingga menjadi sebuah siklus atau protokol wajib dalam sebuah proses pembuatan aplikasi, testing, vulnerability assessment, deployment, dan monitoring.
Automation
Untuk mendukung kelancaran komunikasi dan tools, teknologi DevSecOps akan membangun sistem terintegrasi dan terautomasi yang mendukung. Seperti penggunaan platform komunikasi yang dapat menampung informasi dari berbagai tim maupun individu di satu tempat. Begitu pun dengan tools teknologi yang akan berjalan secara penuh integrasi dan terautomasi agar semua kegiatan development, deployment, operation, dan scanning vulnerability secara otomatis. Sekaligus mengurangi interaksi manusia terhadap siklus DevSecOps dan juga meminimalisir adanya kesalahan yang dilakukan oleh interaksi tersebut atau biasa disebut dengan human error.
Measurement
DevSecOps akan memudahkan proses perkembangan dari berbagai perspektif mulai dari perorangan, performa dan kualitas pada aplikasi. Karena banyak parameter yang dapat diambil mulai dari komunikasi, interaksi, dan berbagi informasi antar tim untuk mengetahui bagaimana perkembangan suatu culture yang baik. Selain itu performa dan kualitas dari sebuah aplikasi mulai dari source code, build, test, dan deploy akan terintegrasi dan berjalan secara otomatis, hasil output dari sebuah aplikasi tersebut dapat dijadikan parameter yang diperuntukan untuk pengembangan, pembenahan, dan skalabilitas pada aplikasi.
Sharing
Semakin banyaknya tim yang berkontribusi maka banyak informasi yang didapatkan dan tools teknologi yang digunakan akan mendorong semua yang terlibat dalam siklus DevSecOps secara tidak langsung berbagi informasi, sehingga mendukung perkembangan dari setiap tim maupun perorangan.
Perbedaan DevOps dan DevSecOps?
DevOps adalah sebuah siklus pengembangan perangkat lunak yang mungkin sudah kita kenal secara umum, dimana siklus tersebut dijadikan sebuah culture dalam sebuah perusahaan atau instansi dengan berbagai tujuan seperti mempercepat proses pengembangan aplikasi, mengurangi human-error, mengembangkan tim, mengotomaskan proses setiap phase, dan mengintegrasikan itu semua. DevOps memiliki beberapa phase yaitu Code, Build, Test, Release, Deploy, Operate, Monitoring, dan Plan, namun secara umum hanya ada beberapa phase yang menanamkan security.
DevSecOps akan membangun phase DevOps dengan menanamkan security hampir di setiap phasenya sekaligus menjalankan metodologi security yang bertujuan untuk mencegah kerentanan sedini mungkin. Hal ini yang membuat DevSecOps lebih valuable dari DevOps.
Methodologi DevSecOps
DevSecOps menerapkan beberapa metodologi pada life-cycle khususnya CI/CD.
CI/CD adalah praktik yang menjadi pedoman umum dalam menerapkan DevOps. CI/CD terbagi menjadi 3 yaitu Continuous Integration (CI), Continuous Delivery (CD), dan Continuous Deployment (CD).
Continuous Integration (CI)

Continuous integration adalah kegiatan umum seorang developer dengan repository yang terintegrasi dengan sebuah proses automasi build, dan automasi test. Secara langsung ada proses trigger yang terjadi ketika ada sebuah perubahan yang terjadi pada repository. Pada proses CI DevSecOps akan menerapkan metodologi sebagai berikut:
Secret Scanning
Proses metodologi yang bertujuan untuk mencari leaks (kebocoran) pada source code seperti username, password, API (Application Programming Interface), token, dan lain-lain. Secret scanning umumnya memiliki 2 cara untuk mencari leaks yaitu dengan cara memasang protect sebelum di push atau melalui proses scanning. Tools yang umum digunakan untuk Secret scanning antara lain getleaks, trufflehog, detect-secret.
Software Compositions Analysis (SCA)
Belajar dari kejadian sebelumnya dimana terdapat kerentanan pada log4j-shell. Software compositions analysis membantu memvalidasi dan mencari finding pada sebuah library atau dependencies pada sebuah apps. Hal ini mendukung untuk memaksimalkan pencegahan kerentanan sedini mungkin. Tools yang digunakan antara lain Snyk, dependency-check, retireJS, npm-audit, dll.
Static Analysis Security Testing (SAST)
Salah satu cara untuk meningkatkan quality code khususnya pada sisi security dengan melakukan static analisis, SAST akan membaca, menganalisis, dan mensimulasikan bagaimana code kita akan bekerja. Hal ini akan membantu developer untuk mengetahui dimana saja letak bug, code smell, dan kerentanan pada codenya. SAST dapat diintegrasikan dan di otomatisasi sekaligus kita bisa custom mulai dari rule, quality, dan false-positive. Tools yang umum digunakan antara lain Sonarqube, Bandit, dan lain-lain.
Dynamic Analysis Security Testing (DAST)
Proses testing yang dilakukan akan memakan waktu yang lama mulai dari mencari kerentanan, menguji kerentanan, dan mendokumentasikan kerentanan. DevSecOps menerapkan metodologi untuk melakukan identifikasi terhadap kerentanan secara otomatis dengan beberapa tools dan menghasilkan report agar bisa membantu tim security untuk menguji kerentanan, hal ini bisa mempersingkat waktu identifikasi dan sangat membantu tim security. Tools yang umum digunakan antara lain Nessus, Nikto, Nmap, TestSSL, Burp Suite.
Continuous Delivery (CD)

Continuous delivery adalah langkah selanjutnya dari CI untuk mengirimkan code, artifact, dan hasil build pada repository yang bertujuan untuk diimplementasikan pada production, umumnya pada proses continuous delivery ini semua proses berjalan otomatis tanpa sentuhan manusia. Mulai dari source code itu di ambil, build, test, dan dikirim ke repository. Pada proses continuous delivery umumnya DevSecOps menyediakan tempat repository yang lebih secure.
Security in Infrastructure as Code
Security in Infrastructure as Code adalah metodologi yang bertujuan untuk mempersiapkan infrastruktur VM, Container, dan Cloud yang sesuai dengan kebutuhan aplikasi. Umumnya Code infrastruktur ini akan mendefinisikan berbagai kebutuhan seperti memory, cpu, image, volume, instance dan lain-lain. Selain itu umumnya mempersiapkan security untuk infrastruktur seperti compliance, hardening, atau patching. Umumnya tools yang digunakan antara lain Ansible, Inspec, Clair, Trivy.
Vulnerability Management
Cara agar dapat mengidentifikasi, memprioritaskan, remediasi dan mitigasi yang ada pada sebuah sistem, dan network umumnya bersifat rentan. Dalam vulnerability management tim security khususnya Security Operation Center (SOC)/Blue Team dapat bertindak lebih cepat dalam menentukan prioritas untuk diperbaiki dan dibenahi, selain itu kita bisa mengintegrasikan dengan CI/CD untuk mengirim informasi hasil dari testing. Tools yang digunakan antara lain Defect-dojo, Archery.
Logging and Monitoring Security
Cara terbaik untuk memantau efek dari sebuah serangan dengan menerapkan sistem monitoring dan logging, agar dapat membaca langsung kondisi dan efek pada system, aplikasi, network, dll. Hal ini menjadi sangat informatif untuk berbagai tim agar dapat mendapatkan feedback untuk mengembangkan aplikasi, menyiapkan infrastruktur, komunikasi yang baik, dan logic bisnis agar menjadi lebih baik dari waktu ke waktu. Tools yang akan sangat membantu dalam monitoring dan logging antara lain Dynatrace, Warden, Grafana, Prometheus, ELK, dll.