Bagaimana pengembang dapat mengamankan aplikasi dengan percaya diri
Bagaimana pengembang dapat mengamankan aplikasi dengan percaya diri
[ad_1]
Keamanan dunia maya membebani bisnis miliaran dolar per tahun, dan biaya itu diperkirakan akan mencapai triliunan pada tahun 2025, menurut beberapa perusahaan riset keamanan siber. Memperhitungkan Hotel Marriott bocor 500 juta file pelanggan yang untuknya Marriott membayar $126 juta; dan Equifax, agen pelaporan kredit AS, menghabiskan $1,4 miliar untuk biaya pembersihan yang terkait dengan Pelanggaran Data 2017 dari 150 juta sejarah kredit pribadi.
ITU biaya rata-rata dari pelanggaran data pada tahun 2020 adalah $3,92 juta. Di luar implikasi finansial, insiden keamanan besar berpotensi menghancurkan merek perusahaan dan bahkan menjadi acara pengakhiran karier bagi eksekutif senior.
Beberapa tahun terakhir telah mengajari kami bahwa setiap lapisan tumpukan – mulai dari perangkat keras hingga JavaScript di browser web – dapat memiliki lubang keamanan. Sementara itu, keamanan telah berkembang menjadi tanggung jawab bersama semua orang yang membangun dan mengoperasikan sistem TI, termasuk pengembang, karena pemimpin TI perusahaan menyadari bahwa keamanan harus terintegrasi dan berkelanjutan di seluruh lingkungan cloud-native.
Di dalam “Mengamankan Aplikasi Cloud di Kubernetes“, kami memahami bahwa keamanan TI adalah bidang yang luas dengan banyak teknologi berbeda yang harus dipelajari secara mandiri dan kemudian digabungkan dengan benar ke dalam sebuah aplikasi. Pengembang dan arsitek aplikasi biasanya mempelajari teknologi keamanan di tempat kerja ketika ‘mereka bertemu untuk pertama kalinya saat mereka berada di bawah tekanan untuk menghadirkan fitur produk dan perbaikan bug. Membaca posting blog, memotong dan menempelkan pengaturan konfigurasi, dan mencari bantuan di stackoverflow.com saat berada di bawah tekanan membuat pengembang merasa tidak memahami keamanan, tetapi juga tidak memiliki waktu dan sumber daya untuk mempelajarinya dengan benar.
Memahami keamanan aplikasi
Keamanan aplikasi berada di tengah-tengah transformasinya sendiri. Ini tidak hanya diakui sebagai disiplin yang diperlukan, tetapi juga merupakan bagian dari pekerjaan sehari-hari beberapa tim, termasuk pengembang aplikasi. Meningkatnya perhatian yang diberikan pada keamanan oleh para pemimpin bisnis memengaruhi pengembang aplikasi dalam beberapa cara:
- Gunakan semua fitur keamanan produk: CISO berharap pengembang menggunakan semua fitur keamanan yang tersedia di produk untuk mengamankan aplikasi. Apakah Anda tahu cara mengonfigurasi dan menggunakan fitur keamanan server aplikasi, database, penyimpanan objek, broker pesan, gateway API, mesh layanan, layanan cloud, bahasa pemrograman, dan kerangka kerja pengembangan yang digunakan pada proyek yang sedang Anda kerjakan? Tidak cukup hanya mengetahui cara menggunakan suatu produk, Anda harus tahu cara menggunakannya dengan aman.
- Ikuti standar keamanan perusahaan: CISO berharap aplikasi berhasil melewati penilaian dan audit keamanan perusahaan yang ketat. Sebagai developer, Anda harus bisa menjelaskan kepada asesor dan auditor bagaimana aplikasi Anda memenuhi standar keamanan perusahaan. Ini berarti Anda harus mampu berbicara bahasa keamanan yang digunakan oleh profesional keamanan informasi untuk menghindari pekerjaan remediasi yang mahal untuk mengatasi masalah keamanan di akhir siklus pengembangan.
- Merancang dan mengimplementasikan aplikasi yang aman: CISO mengharapkan arsitek dan pengembang merancang dan mengimplementasikan aplikasi yang aman. Ini berarti Anda harus terbiasa dengan banyak protokol dan teknologi keamanan yang diperlukan untuk merancang dan mengimplementasikan aplikasi yang aman.
- Aktifkan transformasi DevSecOps: CISO berinvestasi besar-besaran untuk memecah silo antara tim pengembangan, operasi, dan keamanan. Artinya, sebagai pengembang, Anda perlu membiasakan diri dengan alat, proses, dan praktik baru yang digunakan untuk mengimplementasikan DevSecOps.
Diagram di bawah menyediakan peta area keamanan aplikasi yang luas.
Bagian atas diagram di atas mewakili tujuan pemimpin bisnis untuk membangun aplikasi aman yang dapat menahan serangan. Lapisan atas diagram bergantung pada lapisan bawah. Untuk mengamankan aplikasi, Anda harus menggunakan pustaka keamanan. Misalnya, aplikasi web Java dapat menggunakan Spring Security untuk mengotorisasi akses pengguna. Namun, pustaka keamanan saja tidak cukup untuk menyediakan keamanan. Anda harus merancang, membuat kode, dan memelihara aplikasi secara aman dengan mengikuti praktik keamanan perusahaan untuk pengembangan aplikasi, seperti melakukan peninjauan kode keamanan atau menentukan penganalisa kode yang mendeteksi kesalahan umum pengkodean keamanan. Sebagai pengembang, Anda menghabiskan waktu Anda di lapisan tengah piramida di atas.
Perpustakaan dan kerangka kerja keamanan mengimplementasikan protokol dan pola standar industri dalam bahasa pemrograman tertentu.
Penyebab utama kesulitan pengembang dalam menggunakan perpustakaan keamanan adalah kurangnya pengetahuan tentang standar dasar, protokol, dan pola yang diterapkan oleh perpustakaan. Jika Anda memahami standar keamanan, protokol, dan praktik terbaik yang mendasarinya, Anda akan menemukan pustaka dan kerangka kerja keamanan jauh lebih mudah digunakan dan dipelajari.
Langkah pertama dalam perjalanan pembelajaran adalah membuat model mental keseluruhan kasus penggunaan keamanan aplikasi dan pendekatan yang tersedia untuk menyelesaikannya. Kami memulai perjalanan pembelajaran dengan menganalisis dua masalah keamanan umum:
- Mengamankan saluran komunikasi
- Mengamankan Ketergantungan Aplikasi
Meneliti cara mengamankan saluran dan dependensi komunikasi aplikasi memungkinkan kita untuk memahami jenis keterampilan keamanan yang perlu diketahui oleh pengembang aplikasi dan menentukan pendekatan yang efektif untuk mempelajari keterampilan keamanan.
Menganalisis serangkaian masalah keamanan umum yang dihadapi saat membuat aplikasi berbasis monolitik dan layanan mikro untuk mendapatkan ikhtisar teknologi dan standar keamanan yang harus diketahui oleh setiap pengembang untuk membuat aplikasi cloud-native dengan aman.
Mengamankan saluran komunikasi
Sangat menggoda untuk berasumsi bahwa tidak perlu mengenkripsi komunikasi antara backend aplikasi dan databasenya karena lalu lintas ada di jaringan internal yang “tepercaya”.
Direkomendasikan untuk beroperasi di bawah model jaringan Zero-Trust di mana Anda menganggap jaringan selalu tidak tepercaya. Perlakukan jaringan pusat data internal dengan tingkat kecurigaan yang sama seperti Anda memperlakukan Internet. Sebagai pengembang aplikasi, penting bagi Anda untuk menuntut Transport Layer Security (TLS) di mana saja untuk semua komunikasi jaringan aplikasi. Mengenal protokol TLS adalah keterampilan keamanan yang penting bagi pengembang. Menguasai TLS memungkinkan Anda untuk:
- Tulis aplikasi aman yang memenuhi standar keamanan perusahaan.
- Konfigurasikan TLS dengan cepat dalam kode Anda tanpa menghabiskan waktu berjam-jam menelusuri blog dan stackoverflow.com untuk petunjuk konfigurasi.
- Men-debug masalah konektivitas dengan mudah yang disebabkan oleh setelan konfigurasi TLS.
Ada jaringan rumit algoritme berdasarkan matematika mendalam yang indah di jantung TLS. Anda tidak perlu memahami cara kerja algoritme ini atau matematika di baliknya, tetapi Anda perlu memahami apa yang mereka lakukan dan cara mengonfigurasinya dengan benar di aplikasi Anda.
Mengamankan Ketergantungan Aplikasi
Aplikasi dibangun di atas ratusan pustaka sumber terbuka dan komponen perangkat lunak berpemilik. Misalnya, pada saat penulisan ini, saya sedang mengerjakan aplikasi Spring Boot yang bergantung pada 106 pustaka pihak ketiga open source. Saya telah melihat aplikasi perusahaan dengan lebih dari 250 dependensi perpustakaan. Menggunakan kembali komponen perangkat lunak dalam aplikasi adalah penghemat waktu dan biaya yang sangat besar, tetapi juga memperkenalkan kemungkinan kegagalan keamanan yang sangat besar.
Keamanan rantai pasokan adalah masalah industri karena setiap produsen perangkat lunak bergantung pada vendor kode eksternal yang pada gilirannya bergantung pada vendor lain, dll. Alat dan proses keamanan baru harus dibuat dan kemudian diadopsi secara luas untuk mengamankan rantai pasokan perangkat lunak.
Deteksi otomatis terus menerus terhadap kerentanan dependensi
Anda dapat dengan mudah mendeteksi dependensi yang rentan menggunakan pemindai kerentanan otomatis. Pemindai kerentanan membuat daftar semua dependensi yang digunakan aplikasi dengan menganalisis kode aplikasi, skrip build, dan artefak yang dihasilkan. Pemindai membandingkan versi ketergantungan aplikasi dengan database kerentanan yang diketahui. Jika kecocokan ditemukan, pemindai memberi tahu tim pengembangan.
Keamanan komputer adalah subjek yang sangat besar dengan banyak subbidang dan spesialisasi yang berbeda. Menguasai keamanan komputer bisa memakan waktu seumur hidup. Sebagai pengembang, Anda harus berfokus pada bagian keamanan komputer yang paling relevan dengan kebutuhan Anda untuk membuat aplikasi yang aman.
Ringkasan
- Jangan Percayai Jaringan: Perlakukan jaringan “aman” internal dengan tingkat kepercayaan yang sama seperti Internet. Amankan semua saluran komunikasi aplikasi menggunakan protokol TLS.
- TLS adalah teknologi dasar utama yang harus diketahui oleh setiap pengembang.
- Serangan rantai pasokan perangkat lunak sedang meningkat karena sangat efektif. Gunakan pemindai kerentanan ketergantungan di semua aplikasi Anda, perbaiki masalah yang dilaporkan oleh pemindai kerentanan dengan cepat. Tetap mengikuti kemajuan dalam alat dan proses keamanan rantai pasokan perangkat lunak dan advokasi untuk penggunaannya dengan atasan Anda.
- Tujuan DevSecOps adalah untuk mengurangi waktu, tenaga, dan biaya yang diperlukan untuk memindahkan ide bisnis dari konsep ke produksi sambil menerapkan praktik terbaik keamanan, operasional, dan pengembangan.
- Keamanan adalah tanggung jawab bersama semua orang yang bekerja di bidang TI, termasuk pengembang. Meningkatkan keterampilan keamanan Anda membuat Anda lebih berharga bagi atasan Anda dan memungkinkan Anda menyelesaikan masalah keamanan dengan cepat.
(Kutipan dari buku pra-publikasi “Mengamankan Aplikasi Cloud di Kubernetesoleh Adib Saikali)
Untuk mempelajari lebih lanjut tentang sifat transformatif aplikasi cloud native dan perangkat lunak sumber terbuka, bergabunglah dengan kami KubeCon + CloudNativeCon Eropa 2023diselenggarakan oleh Cloud Native Computing Foundation, yang berlangsung dari 18-21 April.
[ad_2]