Kontrol DevSecOps

DevSecOps menerapkan keamanan inovasi dengan mengintegrasikan proses dan alat keamanan ke dalam proses pengembangan DevOps.

Karena DevOps sendiri adalah disiplin yang muncul dengan variasi proses tingkat tinggi, DevSecOps yang sukses berengsel pada pemahaman dan mengintegrasikan keamanan dengan cermat ke dalam proses pengembangan. Menambahkan keamanan harus dimulai dengan perubahan gesekan rendah pada kode, proses pengembangan, dan infrastruktur yang menghosting beban kerja. Fokuskan terlebih dahulu pada perubahan dengan efek positif tertinggi pada keamanan sambil menempatkan beban rendah pada proses dan keterampilan DevOps.

Dokumentasi ini meninjau setiap tahap proses integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) DevOps, serta kontrol keamanan apa yang kami sarankan untuk diintegrasikan terlebih dahulu.

Kontrol DevSecOps

Merencanakan dan mengembangkan

Biasanya, perkembangan modern mengikuti metodologi pengembangan agile. Scrum adalah salah satu implementasi metodologi agile yang setiap sprint dimulai dengan aktivitas perencanaan. Memperkenalkan keamanan ke dalam bagian proses pengembangan ini harus berfokus pada:

  • Pemodelan ancaman untuk melihat aplikasi melalui lensa penyerang potensial
  • Plugin keamanan IDE dan kait pra-penerapan untuk pemeriksaan analisis statis ringan dalam lingkungan pengembangan terintegrasi (IDE).
  • Tinjauan peer dan standar pengodean aman untuk mengidentifikasi standar pengodean keamanan yang efektif, proses tinjauan peer, dan kait pra-penerapan.

Tidak wajib menambahkan semua langkah ini. Tetapi setiap langkah membantu mengungkapkan masalah keamanan lebih awal, ketika jauh lebih murah dan lebih mudah diperbaiki.

Pemodelan ancaman

Pemodelan ancaman bisa dibilang merupakan praktik keamanan yang paling penting. Ini memberikan hasil langsung dan membantu membangun pola pikir keamanan dalam pengembang untuk meningkatkan keamanan di semua proyek masa depan mereka.

Pemodelan ancaman adalah konsep sederhana, meskipun dapat dirinci dan teknis jika perlu. Pemodelan ancaman mengungkapkan dan mendakuskan tampilan keamanan realistis dari aplikasi Anda yang mencakup:

  • Bagaimana penyerang dapat menyalahgunakan desain aplikasi
  • Cara memperbaiki kerentanan
  • Betapa pentingnya memperbaiki masalah

Pemodelan ancaman secara efektif menempatkan Anda dalam pola pikir penyerang. Ini memungkinkan Anda melihat aplikasi melalui mata penyerang. Anda belajar cara memblokir upaya sebelum penyerang dapat melakukan apa pun tentang hal itu. Jika tim Anda memiliki persona pengguna dalam desain, Anda dapat memperlakukan penyerang sebagai persona pengguna yang bermusuhan.

Ada pendekatan yang diterbitkan untuk pemodelan ancaman yang berkisar dari metode tanya jawab sederhana hingga analisis berbasis alat terperinci. Anda dapat mendasarkan pendekatan Anda pada metodologi seperti model STRIDE, model DREAD, atau pemodelan ancaman OWASP.

Pemodelan ancaman: Mulai dari yang sederhana

Karena beberapa pendekatan pemodelan ancaman dapat memakan waktu dan intensif keterampilan, sebaiknya mulai dengan pendekatan yang lebih sederhana menggunakan pertanyaan dasar. Metode yang lebih sederhana tidak menyeluruh, tetapi mereka memulai proses pemikiran kritis dan membantu Anda mengidentifikasi masalah keamanan utama dengan cepat.

Metode pertanyaan sederhana berikut akan membuat Anda memulai:

Anda dapat menggunakan salah satu atau kedua pendekatan ini, tergantung pada apa yang bekerja lebih baik untuk tim Anda.

Ketika tim Anda semakin nyaman dengan prosesnya, mereka dapat menerapkan teknik yang lebih canggih dari siklus hidup pengembangan keamanan Microsoft. Selain itu, mereka dapat mengintegrasikan alat pemodelan ancaman seperti alat pemodelan ancaman Microsoft untuk mendapatkan wawasan yang lebih mendalam dan membantu mengotomatiskan proses.

Sumber daya bermanfaat lainnya adalah panduan pemodelan ancaman bagi pengembang.

Plug-in keamanan IDE dan kait pra-penerapan

Pengembang fokus pada kecepatan pengiriman, dan kontrol keamanan mungkin memperlambat proses. Biasanya, perlambatan terjadi jika pemeriksaan keamanan dimulai di alur. Pengembang mengetahui tentang potensi kerentanan setelah mendorong kode ke repositori. Untuk mempercepat proses dan memberikan umpan balik langsung, ada baiknya menambahkan langkah-langkah seperti plug-in keamanan IDE dan kait pra-penerapan.

Plug-in keamanan lingkungan pengembangan terpadu (IDE) mengidentifikasi masalah keamanan yang berbeda selama proses pengembangan di lingkungan IDE pengembang yang akrab. Plug-in dapat memberikan umpan balik langsung jika ada potensi risiko keamanan dalam kode tertulis pengembang. Plug-in juga dapat mengungkapkan risiko di pustaka atau paket pihak ketiga. Bergantung pada IDE yang Anda pilih, banyak plug-in sumber terbuka atau komersial tersedia dan disediakan oleh perusahaan keamanan.

Opsi lain yang perlu dipertimbangkan adalah menggunakan kerangka kerja pra-penerapan jika sistem kontrol versi mengizinkannya. Kerangka kerja pra-penerapan menyediakan skrip hook Git yang membantu mengidentifikasi masalah sebelum pengembang mengirimkan kode untuk peninjauan kode. Salah satu contohnya adalah pra-penerapan yang dapat Anda siapkan di GitHub.

Tinjauan peer dan standar pengodean yang aman

Permintaan pull adalah standar dalam proses pengembangan. Bagian dari proses permintaan pull adalah ulasan serekan yang sering mengungkapkan cacat, bug, atau masalah yang belum ditemukan yang terkait dengan kesalahan manusia. Adalah praktik yang baik untuk memiliki juara keamanan atau rekan tim keamanan yang berpengetahuan luas yang dapat memandu pengembang selama proses peninjauan serekan sebelum membuat permintaan pull.

Pedoman praktik pengodean aman membantu pengembang mempelajari prinsip-prinsip pengodean aman yang penting dan bagaimana penerapannya. Ada praktik pengkodian aman yang tersedia, seperti praktik pengkodian aman OWASP untuk digabungkan dengan praktik pengkodian umum.

Menerapkan kode

Biasanya, pengembang membuat, mengelola, dan membagikan kode mereka di repositori seperti GitHub atau Azure Repos. Pendekatan ini menyediakan pustaka kode terpusat yang dikontrol versinya bagi pengembang untuk berkolaborasi dengan mudah. Namun, mengaktifkan banyak kolaborator pada basis kode tunggal juga menjalankan risiko perubahan yang diperkenalkan. Risiko tersebut dapat menyebabkan kerentanan atau secara tidak sengaja menyertakan kredensial atau token dalam penerapan.

Untuk mengatasi risiko ini, tim pengembangan harus mengevaluasi dan menerapkan kemampuan pemindaian repositori. Alat pemindaian repositori melakukan analisis kode statis pada kode sumber dalam repositori. Alat mencari kerentanan atau kredensial berubah dan menandai item apa pun yang ditemukan untuk remediasi. Kemampuan ini berfungsi untuk melindungi dari kesalahan manusia serta merupakan perlindungan yang berguna untuk tim terdistribusi di mana banyak orang berkolaborasi dalam repositori yang sama.

Manajemen dependensi

Hingga 90 persen kode dalam aplikasi saat ini berisi elemen, atau didasarkan pada, paket dan pustaka eksternal. Dengan adopsi dependensi dalam kode sumber, penting untuk mengatasi potensi risiko. Banyak pustaka pihak ketiga memiliki masalah keamanan yang serius. Selain itu, pengembang tidak secara konsisten mengikuti siklus hidup terbaik dan terus memperbarui dependensi.

Pastikan tim pengembangan Anda mengetahui komponen apa yang akan disertakan dalam aplikasi mereka. Mereka akan ingin mengunduh versi yang aman dan terbaru dari sumber yang diketahui. Dan mereka akan ingin memiliki proses untuk menjaga versi tetap terbaru. Tim Anda dapat menggunakan alat seperti OWASP Dependency-Check proyek, WhiteSource, dan lainnya.

Untuk hanya fokus pada kerentanan dependensi atau siklus hidupnya tidak cukup. Penting juga untuk mengatasi keamanan umpan paket. Ada vektor serangan yang diketahui yang menargetkan sistem manajemen paket: typosquatting, mengorbankan paket yang ada, serangan substitusi, dan lainnya. Jadi, administrasi manajemen paket yang bertanggung jawab harus mengatasi risiko ini. Untuk informasi selengkapnya, lihat Tiga cara untuk mengurangi risiko saat menggunakan umpan paket privat.

Pengujian keamanan aplikasi statis

Setelah tim Anda membahas pustaka pihak ketiga dan manajemen paket, penting untuk mengalihkan fokus dan meningkatkan keamanan kode. Ada berbagai cara untuk meningkatkan keamanan kode. Anda dapat menggunakan plug-in keamanan IDE. Atau Anda dapat melakukan analisis statis inkremental pra-penerapan dan melakukan pemeriksaan seperti yang dibahas sebelumnya. Anda juga dapat melakukan pemindaian kode sumber lengkap untuk menangkap kesalahan yang terlewatkan oleh langkah-langkah sebelumnya. Diperlukan tetapi mungkin perlu waktu berjam-jam atau bahkan berjam-jam untuk memindai blok kode yang besar. Jadi, pendekatan ini dapat memperlambat pengembangan dan memperkenalkan beban.

Tetapi tim harus mulai di suatu tempat saat menerapkan praktik pemindaian kode statis. Salah satu caranya adalah dengan memperkenalkan analisis kode statis di dalam integrasi berkelanjutan. Metode ini memverifikasi keamanan segera setelah perubahan kode terjadi. Salah satu contohnya adalah SonarCloud. Ini membungkus beberapa alat pengujian keamanan aplikasi statis (SAST) untuk bahasa yang berbeda. SonarCloud menilai dan melacak utang teknis dengan fokus pada pemeliharaan. Ini melihat kualitas dan gaya kode dan memiliki pemeriksa khusus keamanan. Tetapi ada banyak alat komersial dan sumber terbuka lainnya yang tersedia di pasar.

Untuk memastikan bahwa perulangan umpan balik efektif, sangat penting untuk menyempurnakan alat. Anda ingin meminimalkan positif palsu dan memberikan umpan balik yang jelas dan dapat ditindak lanjuti tentang masalah yang perlu diperbaiki. Selain itu, ada baiknya untuk menerapkan alur kerja, yang mencegah penerapan kode ke cabang default jika ada temuan. Anda ingin mencakup temuan kualitas dan keamanan. Jadi, keamanan menjadi bagian dari pengalaman pengujian unit.

Alur yang aman

DevOps mengambil otomatisasi ke tingkat lain karena semua yang ada dalam siklus hidup pengembangan melewati alur. Integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) adalah bagian penting dari siklus pengembangan modern. Di CI/CD, tim Anda menggabungkan kode pengembang ke dalam basis kode pusat pada jadwal reguler dan secara otomatis menjalankan proses build dan pengujian standar.

Alur infrastruktur adalah bagian terpusat dari pengembangan. Tetapi menggunakan alur untuk menjalankan skrip atau menyebarkan kode ke lingkungan produksi dapat menimbulkan tantangan keamanan yang unik. Anda ingin memastikan alur CI/CD Anda tidak menjadi jalan untuk menjalankan kode berbahaya, memungkinkan kredensial dicuri, atau memberi penyerang area permukaan apa pun untuk akses. Anda juga ingin memastikan bahwa hanya kode yang ingin dirilis oleh tim Anda kemudian disebarkan.

Tim DevOps harus memastikan mereka menerapkan kontrol keamanan yang tepat untuk alur. Tergantung pada platform yang dipilih, ada pedoman yang berbeda tentang cara mengatasi risiko. Untuk informasi selengkapnya, lihat Mengamankan Azure Pipelines.

Membangun dan menguji

Banyak organisasi menggunakan alur build dan rilis untuk mengotomatisasi dan menstandardisasi proses pembangunan dan penyebaran kode. Alur rilis memungkinkan tim pengembangan membuat perubahan berulang pada bagian kode dengan cepat dan dalam skala besar. Tim tidak perlu menghabiskan banyak waktu untuk menyebarkan ulang atau meningkatkan lingkungan yang ada.

Menggunakan alur rilis juga memungkinkan tim mempromosikan kode dari lingkungan pengembangan, melalui lingkungan pengujian, dan pada akhirnya ke dalam produksi. Sebagai bagian dari otomatisasi, tim pengembangan harus menyertakan alat keamanan yang menjalankan pengujian skrip dan otomatis saat menyebarkan kode ke lingkungan pengujian. Pengujian harus mencakup pengujian unit pada fitur aplikasi untuk memeriksa kerentanan atau titik akhir publik. Pengujian memastikan akses yang disengaja.

Pengujian keamanan aplikasi dinamis

Dalam model pengembangan air terjun klasik, keamanan biasanya diperkenalkan pada langkah terakhir, tepat sebelum pergi ke produksi. Salah satu pendekatan keamanan yang paling populer adalah pengujian penetrasi atau pengujian pena. Pengujian penetrasi memungkinkan tim melihat aplikasi dari perspektif keamanan kotak hitam, seperti dalam, paling dekat dengan pola pikir penyerang.

Uji penetrasi terdiri dari beberapa titik tindakan, salah satunya adalah pengujian keamanan aplikasi dinamis (DAST). DAST adalah tes keamanan aplikasi web yang menemukan masalah keamanan dalam aplikasi yang sedang berjalan dengan melihat bagaimana aplikasi merespons permintaan yang dibuat secara khusus. Alat DAST juga dikenal sebagai pemindai kerentanan aplikasi web. Salah satu contohnya adalah alat sumber terbuka, OWASP Zed Attack Proxy (ZAP). Ini menemukan kerentanan dalam aplikasi web yang sedang berjalan. Ada berbagai cara OWASP ZAP memindai: pemindaian garis besar pasif atau pemindaian penuh, tergantung pada konfigurasinya.

Kerugian dari pengujian pena adalah bahwa itu membutuhkan waktu. Tes pena menyeluruh mungkin memakan waktu hingga beberapa minggu, dan dengan kecepatan pengembangan DevOps, jangka waktu tersebut mungkin tidak berkelanjutan. Tetapi masih perlu menambahkan versi pengujian pena yang lebih ringan selama proses pengembangan untuk mengungkap masalah yang terlewatkan oleh SAST dan langkah-langkah lainnya. Alat DAST seperti OWASP ZAP dapat membantu.

Pengembang mengintegrasikan OWASP ZAP dalam alur sebagai tugas. Selama eksekusi, pemindai OWASP ZAP berputar dalam kontainer dan melakukan pemindaiannya, lalu menerbitkan hasilnya. Pendekatan ini mungkin tidak sempurna, karena ini bukan pengujian penetrasi lengkap, tetapi masih berharga. Ini adalah satu lagi ukuran kualitas dalam siklus pengembangan untuk meningkatkan postur keamanan.

Validasi konfigurasi cloud dan pemindaian infrastruktur

Selain memindai dan mengamankan kode untuk aplikasi, pastikan lingkungan tempat Anda menyebarkan aplikasi juga aman. Lingkungan yang aman adalah kunci bagi organisasi yang ingin bergerak dengan kecepatan, berinovasi, dan menggunakan teknologi baru. Lingkungan yang aman juga membantu tim menciptakan lingkungan baru dengan cepat untuk eksperimen.

Kemampuan Azure memungkinkan organisasi membuat standar keamanan dari lingkungan, seperti Azure Policy. Teams dapat menggunakan Azure Policy untuk membuat kumpulan kebijakan. Kumpulan kebijakan mencegah pembuatan jenis beban kerja atau item konfigurasi tertentu seperti alamat IP publik. Pagar pembatas ini memungkinkan tim untuk bereksperimen dalam lingkungan yang aman dan terkendali, menyeimbangkan inovasi dan tata kelola.

Salah satu cara DevOps dapat membawa pengembang dan operasi selangkah dengan satu sama lain adalah dengan mendukung konversi infrastruktur yang ada menjadi pendekatan infrastruktur sebagai kode.

Infrastruktur sebagai kode (IaC) adalah manajemen infrastruktur (jaringan, komputer virtual, penyeimbang muatan, dan topologi koneksi) dalam model deskriptif. IaC menggunakan model penerapan versi yang sama dengan yang digunakan tim DevOps untuk kode sumber. Seperti prinsip kode sumber yang sama menghasilkan biner yang sama, model IaC menghasilkan lingkungan yang sama setiap kali diterapkan. IaC adalah praktik DevOps utama yang digunakan dengan pengiriman berkelanjutan.

DevSecOps menggeser keamanan ke kiri dan menunjukkan bahwa keamanan bukan hanya tentang keamanan aplikasi tetapi juga keamanan infrastruktur. Salah satu cara DevSecOps mendukung keamanan infrastruktur adalah dengan menyertakan pemindaian keamanan sebelum infrastruktur disebarkan di cloud. Saat infrastruktur menjadi kode, Anda kemudian akan menerapkan tindakan keamanan yang sama ke infrastruktur sebagai keamanan aplikasi. Ada alat keamanan yang tersedia untuk menjalankan pemindaian keamanan infrastruktur berdasarkan strategi IaC yang Anda pilih.

Dengan adopsi cloud, kontainerisasi adalah pendekatan populer yang diambil tim dalam keputusan arsitektur aplikasi. Beberapa repositori kontainer memindai gambar untuk menangkap paket dengan kerentanan yang diketahui. Masih ada risiko bahwa kontainer mungkin memiliki perangkat lunak yang sudah kedaluarsa. Karena risiko ini, sangat penting untuk memindai kontainer dari risiko keamanan. Ada banyak alat keamanan sumber terbuka dan komersial yang menargetkan area ini dan mendukung integrasi ketat dalam proses CD. Alat keamanan membantu tim mengadopsi DevSecOps untuk infrastruktur sebagai kode dan lebih khusus mempelajari cara menggunakan kontainer.

Buka produksi dan operasikan

Ketika solusi masuk ke produksi, sangat penting untuk terus mengawasi dan mengelola status keamanan. Pada tahap ini dalam proses, saatnya untuk fokus pada infrastruktur cloud dan aplikasi keseluruhan.

Pemindaian konfigurasi dan infrastruktur

Untuk visibilitas ke langganan cloud dan konfigurasi sumber daya di beberapa langganan, gunakan solusi keamanan penyewa Azure dari tim AzSK.

Azure mencakup kemampuan pemantauan dan keamanan. Kemampuan ini mendeteksi dan memperingatkan setiap peristiwa atau konfigurasi anomali yang memerlukan penyelidikan dan potensi remediasi. Teknologi seperti Pertahanan Microsoft untuk Cloud dan Microsoft Sentinel adalah alat pihak pertama yang terintegrasi secara asli ke lingkungan Azure. Teknologi ini melengkapi alat keamanan lingkungan dan kode. Teknologi ini menyediakan pemantauan keamanan menyeluruh sehingga organisasi dapat bereksperimen dan berinovasi dengan cepat dan aman.

uji penetrasi

Pengujian penetrasi adalah praktik yang disarankan untuk memeriksa kerentanan apa pun dalam infrastruktur atau konfigurasi aplikasi, yang mungkin menciptakan kelemahan yang dapat dieksploitasi penyerang.

Banyak produk dan mitra menawarkan layanan pengujian penetrasi. Microsoft memberikan panduan untuk pengujian penetrasi di Azure.

Pengujian biasanya mencakup jenis pengujian berikut:

  • Pengujian pada titik akhir Anda untuk mengungkap kerentanan
  • Pengujian fuzz (menemukan kesalahan program dengan menyediakan data input yang salah bentuk) dari titik akhir Anda
  • Pemindaian port titik akhir Anda

Kecerdasan yang dapat ditindaklanjuti

Alat dan teknik dalam panduan ini menawarkan model keamanan holistik bagi organisasi yang ingin bergerak dengan kecepatan dan bereksperimen dengan teknologi baru yang bertujuan untuk mendorong inovasi. Elemen kunci DevSecOps adalah proses berbasis data dan berbasis peristiwa. Proses ini membantu tim mengidentifikasi, mengevaluasi, dan merespons potensi risiko. Banyak organisasi memilih untuk mengintegrasikan pemberitahuan dan data penggunaan ke dalam platform manajemen layanan IT (ITSM) mereka. Tim kemudian dapat membawa alur kerja terstruktur yang sama ke peristiwa keamanan yang mereka gunakan untuk insiden dan permintaan lain.

Perulangan umpan balik

Cuplikan layar memperlihatkan model keamanan Berkelanjutan.

Semua teknik dan alat ini memberdayakan tim untuk menemukan dan menandai risiko dan kerentanan yang memerlukan penyelidikan dan penyelesaian potensial. Tim operasi yang menerima peringatan, atau menemukan potensi masalah saat mereka menyelidiki tiket dukungan, memerlukan rute kembali ke tim pengembangan untuk menandai item untuk ditinjau. Perulangan umpan balik yang lancar, kolaboratif sangat penting untuk mengatasi masalah dengan cepat dan meminimalkan risiko kerentanan sebanyak mungkin.

Pola umum untuk umpan balik adalah mengintegrasikannya ke dalam sistem manajemen kerja pengembang, seperti Azure DevOps atau GitHub. Organisasi dapat menautkan pemberitahuan atau insiden ke item kerja bagi pengembang untuk merencanakan dan bertindak. Proses ini memberikan cara yang efektif bagi pengembang untuk menyelesaikan masalah dalam alur kerja standar mereka, termasuk pengembangan, pengujian, dan rilis.