Kontrol DevSecOps
Artikel ini menjelaskan cara menerapkan kontrol keamanan untuk mendukung praktik keamanan SDL Berkelanjutan. Kontrol keamanan ini adalah bagian integral dari strategi DevSecOps yang mencakup orang, proses, dan teknologi. Dokumentasi ini menjelaskan setiap kontrol dan menunjukkan cara menerapkan kontrol ini ke tiga profil keamanan. Profil ini memenuhi persyaratan keamanan umum untuk skenario bisnis umum di sebagian besar organisasi:
Profil kontrol keamanan
Ada tiga tingkat profil kontrol yang dirujuk dalam artikel ini.
Minimum sementara – Profil keamanan yang disingkat untuk status pengecualian sementara untuk mendukung prototipe beban kerja berisiko rendah yang cepat. Profil ini harus digunakan hanya untuk pengecualian sementara yang perlu dirilis pada garis waktu yang dipercepat untuk memenuhi kebutuhan bisnis penting. Item yang menggunakan profil ini harus dengan cepat dimunculkan ke profil standar.
Standar - Pendekatan seimbang untuk sebagian besar beban kerja, sebagian besar waktu.
Keamanan tinggi - Keamanan yang ketat untuk beban kerja dengan potensi dampak tinggi pada keselamatan bisnis dan manusia.
Kontrol keamanan DevSecOps
Bagian ini menyediakan referensi kontrol keamanan yang direkomendasikan untuk setiap jenis beban kerja. Referensi ini mungkin diadopsi apa adanya atau dapat disesuaikan dengan pengembangan perangkat lunak dan proses keamanan perangkat lunak yang ada. Sebagian besar organisasi tidak dapat segera menerapkan semua kontrol ini jika mereka belum melakukan beberapa dari mereka. Mengambil pendekatan peningkatan berkelanjutan seringkali merupakan pendekatan terbaik: memprioritaskan kontrol, menerapkan kontrol pertama, pindah ke kontrol berikutnya, mengimplementasikannya, dan sebagainya. Sebagian besar organisasi harus memprioritaskan fondasi penting terlebih dahulu.
Untuk informasi selengkapnya, lihat Perjalanan DevSecOps.
Pertimbangan perencanaan utama meliputi:
- Geser ke kiri tetapi periksa kembali - Referensi ini dirancang untuk mendeteksi dan memperbaiki masalah sedini mungkin untuk memungkinkan Anda memperbaikinya ketika lebih mudah dan lebih murah untuk memperbaiki masalah (kadang-kadang disebut shift left), tetapi juga untuk mengasumsikan kegagalan dan menyertakan pemeriksaan ganda nanti dalam proses. Selalu periksa kembali kontrol keamanan apa pun dalam proses CI/CD, pastikan masalah yang dapat dihindari tidak tergelincir ke sistem produksi. Konsep ini mengikuti prinsip "pertahanan mendalam" dan "gagal aman".
- Kecerdasan Buatan (AI) – Dua implikasi utama kecerdasan buatan adalah:
- Amankan semua kode terlepas dari apakah ditulis oleh AI manusia atau generatif
- Gunakan untuk keamanan - Terapkan kontrol klasik dan AI sebagai tersedia untuk meningkatkan visibilitas dan konteks untuk masalah keamanan apa pun (seperti alat analisis kode)
kontrol keamanan
Kontrol dikelompokkan ke dalam tahap pengembangan yang diterapkan dan kontrol umum (fondasi penting) yang berlaku di semua tahap pengembangan dan profil kontrol:
Masing-masing item ini didefinisikan di bagian berikut:
Menetapkan fondasi penting
Kontrol ini mendukung Praktik SDL Berkelanjutan 1 - Menetapkan standar keamanan, metrik, dan tata kelola, Praktik 2 – Memerlukan penggunaan fitur keamanan, bahasa, dan kerangka kerja yang terbukti, dan Praktik 10 – Memberikan pelatihan keamanan.
Standar - Kontrol ini berlaku di semua tahap pengembangan dan profil kontrol.
Menyediakan pelatihan keamanan
Kontrol ini berfokus pada memberi pengembang dan tim keamanan Anda pelatihan untuk mengenali dan menyelesaikan masalah keamanan melalui siklus hidup pengembangan. Tanpa pelatihan keamanan tim Anda dapat melewatkan kelemahan keamanan inti yang menyebabkan kompromi selama masa pakai aplikasi.
Akibatnya, sangat penting bagi Anda untuk menerapkan pelatihan keamanan di semua peran (termasuk pengguna, pengembang, manajer lini produk, penguji, dan banyak lagi). Setiap peran harus memiliki pendidikan tentang risiko keamanan dan perannya dalam menjaga aplikasi tetap aman. Pelatihan ini dapat berupa: pelatihan formal atau sesuai permintaan, latihan simulasi, pemodelan ancaman, pendampingan/penasihat, juara keamanan, tim dukungan keamanan aplikasi, aktivitas tim ungu, podcast, video, atau metode pembelajaran lainnya.
Pada akhirnya, setiap peran perlu dipahami:
- Mengapa penting untuk mengatasi risiko keamanan
- Apa yang perlu mereka lakukan untuk keamanan dalam peran mereka
- Cara membuat bagian keamanan dari peran sehari-hari mereka
Orang-orang yang memahami perspektif penyerang, tujuan mereka, dan bagaimana itu muncul dalam insiden keamanan dunia nyata dengan cepat menjadi sekutu keamanan alih-alih mencoba menghindari keamanan.
Keamanan adalah gim yang tidak pernah berakhir di mana ancaman, teknologi, dan aset bisnis yang harus dilindungi selalu berubah dan pelaku ancaman tidak pernah menyerah. Pendekatan pelatihan keamanan harus berlangsung dan terus berkembang. Pelatihan efektif selaras dengan dan memperkuat kebijakan keamanan, praktik siklus hidup pengembangan perangkat lunak (SDL), standar, dan persyaratan keamanan perangkat lunak. Materi pelatihan harus berasal dari wawasan yang berasal dari data dan kemampuan teknis yang baru tersedia.
Meskipun keamanan adalah pekerjaan semua orang, penting untuk diingat bahwa tidak semua orang perlu menjadi pakar keamanan atau berusaha untuk menjadi penguji penetrasi yang malu-malu. Memastikan semua orang memahami dasar-dasar keamanan dan cara menerapkannya ke peran mereka membangun keamanan ke dalam perangkat lunak dan layanan sangat penting. Pelatihan ini harus mencakup penggunaan stasiun kerja, aplikasi, identitas, dan akun yang aman.
Secara khusus, pengembang dan insinyur yang membangun sistem biasanya bukan ahli keamanan. Pelatihan dalam aspek teknis dan konseptual pemodelan ancaman diperlukan agar mereka menjadi efektif sehingga mereka dapat membangun sistem yang aman berdasarkan desain. Pelatihan ini sangat penting bagi proses pemodelan ancaman untuk bekerja dalam skala besar di organisasi di mana pengembang jauh lebih kalah jumlah profesional keamanan. Pemodelan ancaman harus dianggap sebagai keterampilan teknik dasar di mana semua pengembang dan insinyur harus memiliki setidaknya kemahiran dasar. Oleh karena itu, tim pengembangan dan teknik harus dilatih agar kompeten dalam pemodelan ancaman sebagai bagian dari onboarding dan dengan penyegaran berkala.
Sertakan keamanan dalam postmortem tanpa kesalahan
Analisis postmortem tanpa kesalahan adalah metode yang sangat penting bagi tim untuk belajar dari kesalahan secara efektif dan efisien tanpa memicu defensif dari anggota tim dengan mencari seseorang untuk disalahkan. Pembelajaran keamanan harus secara eksplisit dimasukkan ke dalam proses pascamortem tanpa kesalahan untuk memastikan tim juga memaksimalkan pembelajaran keamanan.
Menetapkan standar keamanan, metrik, dan tata kelola
Organisasi harus menetapkan standar keamanan, metrik, dan tata kelola ini karena mereka mendukung kemampuan untuk berinovasi. Ini memungkinkan program keamanan yang kuat yang tidak hanya melindungi aset organisasi tetapi juga selaras dengan tujuan bisnisnya. Standar keamanan adalah persyaratan dasar dan praktik terbaik untuk menjaga sistem, data, dan proses organisasi tetap aman.
Standar ini harus diukur dan diatur, termasuk pemantauan untuk kepatuhan dan secara teratur meninjau dan memperbaruinya untuk ancaman, alat, dan faktor lainnya saat ini. Proses ini harus mencakup seluruh siklus hidup dari ideasi awal melalui penonaktifan aplikasi dan lingkungan pengembangan pendukung apa pun.
Metrik adalah pengukuran yang digunakan untuk melihat seberapa efektif kontrol dan proses keamanan. Salah satu metrik utama adalah Mean Time To Remediate (MTTR) untuk melacak berapa lama aplikasi tetap rentan. Pengukuran ini memungkinkan kami untuk berinvestasi secara strategis dalam mengeluarkan perbaikan keamanan dengan lebih cepat.
Catatan
Konsep ini berbeda dari MTTR dalam operasi keamanan yang berfokus pada waktu untuk menghapus akses lawan ke aset organisasi.
Tata kelola keamanan bertindak sebagai panduan bagi tim keamanan dan sering dibangun berdasarkan kerangka kerja dan proses yang digunakan organisasi untuk mengelola dan mengontrol keamanan informasi mereka. Panduan ini mencakup Kebijakan, Prosedur, Kontrol, dan Manajemen Risiko. Metrik membantu mengukur paparan risiko. Tanpa mereka, organisasi mungkin tidak sepenuhnya memahami kerentanan dan dampak potensialnya.
Karena persyaratan keamanan mungkin baru, Anda memiliki kesempatan untuk mengambil pendekatan progresif yang secara bertahap meningkatkan standar pengkodean ke keadaan ideal. Pendekatan ini memberi tim waktu untuk mempelajari dan mengotomatiskan pemantauan dan kontrol.
Memerlukan penggunaan fitur keamanan, bahasa, dan kerangka kerja yang terbukti
Tentukan dan terbitkan daftar alat yang disetujui dan pemeriksaan keamanan terkait. Menggunakan solusi keamanan yang mapan dan terbukti penting untuk menghindari kesalahan umum karena membangun solusi yang aman sangat menantang. Mencoba menemukan kembali solusi keamanan hampir selalu menghasilkan peningkatan risiko keamanan dan membuang-buang waktu dan upaya.
Pastikan pengembang dan insinyur memanfaatkan fungsionalitas dan perlindungan analisis keamanan baru. Mereka harus selalu menggunakan compiler terbaru, linker, pustaka, dan bendera kompilator dan linker yang sesuai untuk menghasilkan executable aman.
Organisasi harus menerapkan proses peninjauan dan persetujuan untuk memvalidasi keamanan komponen terintegrasi apa pun. Mereka harus menetapkan kebijakan untuk hanya menggunakan komponen yang disetujui dalam membangun dan menyebarkan proses yang diberlakukan dan dipantau.
Keamanan identitas dasar
Pastikan bahwa penggunaan dan integrasi identitas mengikuti praktik terbaik keamanan yang mapan. Pelaku ancaman sering menggunakan teknik serangan identitas terhadap sistem produksi dan proses pengembangan. Pepatah populer menangkap ini, "penyerang tidak menerobos masuk, mereka hanya masuk."
Keamanan identitas mengambil dua bentuk untuk pengembangan:
- Keamanan Identitas untuk Proses Pengembangan - Pastikan bahwa semua peserta dalam proses pengembangan menggunakan metode autentikasi yang kuat untuk pekerjaan harian mereka dan hanya memiliki hak istimewa yang diperlukan untuk menjalankan tugas pekerjaan mereka. Untuk informasi selengkapnya, lihat bagian Kontrol akses identitas/aplikasi.
- Keamanan Identitas untuk Sistem dan Aplikasi - Pastikan bahwa sistem yang mereka rancang dan bangun mengikuti praktik terbaik untuk metode autentikasi dan otorisasi (dan tidak membangun imitasi lemah mereka sendiri dari sistem identitas yang terbukti dan dikelola).
Terapkan keamanan identitas untuk sistem dan aplikasi dengan mengikuti panduan dalam sumber daya ini:
- Mengamankan identitas organisasi Anda dengan Microsoft Entra
- Platform identitas Microsoft
- Apa itu platform identitas Microsoft?
Standar Kriptografi
Terapkan praktik kriptografi yang baik untuk semua penggunaan kriptografi. Ikuti semua panduan yang dijelaskan dalam Praktik SDL Berkelanjutan 4 - Tentukan dan Gunakan Standar Kriptografi.
Untuk informasi selengkapnya, lihat Rekomendasi kriptografi Microsoft SDL.
Mengamankan lingkungan pengembangan Anda
Kontrol ini mendukung Praktik SDL Berkelanjutan 6 - Mengamankan lingkungan teknik Anda.
Kontrol ini berfokus pada pengamanan lingkungan pengembangan Anda menggunakan stasiun kerja yang aman dan Lingkungan Pengembangan Terpadu (IDEs). Kontrol ini menyoroti manfaat menggunakan pendekatan Zero Trust dalam siklus hidup pengembangan perangkat lunak Anda.
Di lanskap saat ini, penyerang memperluas operasi mereka untuk menargetkan mesin pengembang Anda dan mengubah proses build. Contoh penting dari serangan ini adalah yang dialami oleh SolarWinds, di mana penyerang menyisipkan DLL berbahaya sebelum tahap akhir build perangkat lunak. Secara efektif ini backdoored aplikasi dan menghasilkan serangan yang ditargetkan yang didistribusikan ke ribuan pelanggan di seluruh dunia melalui rantai pasokan. Untuk informasi selengkapnya tentang serangan SolarWinds, lihat Microsoft Blog Menganalisis Solorigate, file DLL yang disusupi yang memulai serangan cyber canggih, dan bagaimana Pertahanan Microsoft membantu melindungi pelanggan.
Sangat penting untuk memperkuat stasiun kerja, membangun lingkungan, identitas, dan sistem pengembangan lainnya untuk memastikan integritas aplikasi yang dikembangkan. Kegagalan untuk melakukannya membuat jalur bagi penyerang untuk membahayakan aplikasi Anda melalui sistem Source Code Management (SCM) Anda atau melalui stasiun kerja pengembang Anda.
Praktik ini adalah fondasi penting dari siklus hidup pengembangan Anda dan harus ditetapkan di semua profil.
Sepanjang praktik ini, Anda harus mengambil pendekatan Zero Trust. Pada intinya model Zero Trust mengharuskan setiap permintaan akses (pengguna, layanan, atau perangkat) diverifikasi seolah-olah berasal dari jaringan yang tidak tepercaya, terlepas dari mana permintaan berasal atau sumber daya apa yang diaksesnya. Dasarkan kebijakan "selalu autentikasi dan otorisasi" ini pada semua titik data yang tersedia. Anda harus membatasi akses pengguna, terutama pengguna istimewa, melalui kebijakan Just-In-Time dan Just-Enough-Access (JIT/JEA), dan akses segmen untuk meminimalkan kemungkinan kerusakan jika ada pelanggaran.
Memperkuat lingkungan pengembangan Anda dapat dicapai melalui berbagai metode, namun titik awal yang baik adalah mempertimbangkan stasiun kerja pengembang. Dengan menggunakan teknologi seperti GitHub Codespaces atau Microsoft DevBox, Anda mengalihkan lingkungan pengembangan ke aplikasi SaaS, yang kemudian dapat dikelola melalui pengaturan keamanan dan jaringan atau melalui kebijakan organisasi.
Untuk mengunci lebih lanjut stasiun kerja pengembang, Anda dapat mengeluarkannya stasiun kerja akses istimewa/stasiun kerja akses aman (PAW/SAW). Stasiun kerja ini membantu Anda mengurangi vektor ancaman dan memastikan perangkat pengembang standar dan terkontrol.
Desain aman
Melakukan pemodelan ancaman (tinjauan desain keamanan)
Kontrol ini mendukung Praktik SDL Berkelanjutan 3 – Melakukan Pemodelan Ancaman.
Kontrol ini mengidentifikasi kelemahan keamanan dalam desain yang dapat mengakibatkan insiden keamanan dan kerusakan bisnis. Kelemahan keamanan dalam desain dapat sulit dimitigasi setelah desain diterapkan, sehingga menemukan dan memperbaiki kelemahan ini di awal siklus hidup sangat penting.
Pemodelan ancaman berfungsi sebagai proses peninjauan desain keamanan, yang mengintegrasikan keamanan ke dalam desain sistem atau aplikasi.
Pemodelan ancaman secara sistematis mengidentifikasi, menilai, memprioritaskan, dan mengurangi risiko keamanan dalam sistem perangkat lunak. Pendekatan terstruktur ini untuk menganalisis desain dan arsitektur aplikasi perangkat lunak mengidentifikasi potensi ancaman dan kerentanan di awal proses pengembangan.
Tujuan utamanya adalah untuk memahami sistem dan apa yang bisa salah. Pemodelan ancaman membantu mencapai tujuan tersebut dengan menerapkan pemahaman mendalam tentang sistem itu sendiri dan bagaimana penyerang potensial melihatnya.
Proses ini biasanya berbentuk lokakarya penemuan ancaman di mana tim ahli tentang sistem dan pakar keamanan bekerja sama untuk menemukan dan mendokumentasikan risiko. Meskipun proses ini mungkin dimulai secara informal, proses ini harus dengan cepat berkembang menjadi proses terstruktur yang membahas setiap aspek layanan yang dibangun, cara penggunaannya, dan antarmuka sistem.
Tahapan pemodelan ancaman adalah:
- Identifikasi kasus penggunaan, skenario, dan aset – Mulailah dengan memahami fungsi bisnis dan kasus penggunaan apa yang memungkinkan sistem untuk membantu menilai potensi dampak bisnis dari setiap kompromi sistem dan informasikan diskusi yang harus diikuti.
- Buat gambaran umum arsitektur - Buat ringkasan visual aplikasi (atau gunakan yang sudah ada) untuk memberikan pemahaman yang jelas tentang sistem dan cara kerjanya. Gambaran umum ini harus mencakup: peta proses bisnis, komponen dan subsistem, batas kepercayaan, mekanisme autentikasi dan otorisasi, antarmuka eksternal dan internal, dan aliran data antara aktor dan komponen.
- Identifikasi ancaman - Gunakan metodologi umum untuk menghitung potensi ancaman keamanan seperti model STRIDE atau pemodelan ancaman OWASP.
- Identifikasi dan lacak mitigasi - Pantau dan lacak kelemahan desain yang ditemukan menggunakan proses dan alat pengembangan yang ada untuk memastikan perbaikan diterapkan dan didokumentasikan. Proses ini harus mencakup, memprioritaskan mitigasi mana yang harus dilakukan terlebih dahulu sehingga tim menghabiskan waktu mereka untuk upaya yang paling penting terlebih dahulu. Proses ini didorong risiko dan Anda mungkin tidak memiliki sumber daya untuk sepenuhnya mengurangi semua risiko dalam siklus pertama. Pertimbangkan dengan cermat mitigasi mana, termasuk mitigasi parsial, meningkatkan biaya untuk penyerang untuk biaya dan sumber daya yang paling tidak defensif. Tujuan keamanan adalah kegagalan penyerang, yang dapat berbentuk sepenuhnya memblokir teknik serangan, mendeteksi mereka untuk mengaktifkan respons, memperlambat mereka untuk memberikan waktu keamanan untuk merespons, membatasi cakupan kerusakan, dan banyak lagi.
Model ancaman sering berfungsi sebagai proses pendidikan untuk semua yang terlibat serta memberikan konteks penting untuk perencanaan, implementasi, dan pengujian keamanan lainnya.
Aplikasi yang mencakup penggunaan komponen Kecerdasan Buatan (AI) harus mengevaluasi jenis risiko tertentu yang terkait dengan AI, yang berbeda dari aplikasi klasik.
Buat dan analisis model ancaman dengan: berkomunikasi tentang desain keamanan sistem mereka, menganalisis desain tersebut untuk potensi masalah keamanan menggunakan metodologi yang terbukti, dan menyarankan dan mengelola mitigasi untuk masalah keamanan.
Kode aman
Analisis kode
Kontrol ini mendukung Praktik SDL Berkelanjutan 7 - Melakukan Pengujian Keamanan.
Kontrol ini berfokus pada peningkatan keamanan kode saat pengembang menulis/memasukkannya ke lingkungan pengembangan terintegrasi (IDE) atau saat mereka memeriksa kode. Kontrol ini adalah landasan praktik DevSecOps karena secara langsung mengatasi kerentanan yang dieksploitasi penyerang secara teratur.
Tanpa kontrol ini, Anda mungkin kehilangan kerentanan yang dikodekan langsung ke aplikasi Anda oleh pengembang Anda. Pengembang Anda tidak berbahaya tetapi mungkin tidak memiliki keterampilan yang diperlukan untuk mengidentifikasi mengapa apa yang mereka kodekan tidak aman.
Kontrol ini adalah kunci untuk mendapatkan manfaat produktivitas dan keamanan dari pendekatan shift left dengan mengintegrasikan alat langsung ke IDE. Proses ini memungkinkan penemuan cepat dan remediasi kerentanan pada kesempatan paling awal dan paling hemat biaya. Proses ini dapat diterapkan secara retroaktif ke aplikasi yang sudah dikembangkan dengan mengidentifikasi kelemahan keamanan dan memperbaikinya nanti (meskipun dengan biaya dan kesulitan yang lebih besar).
Proses ini biasanya berbentuk plug-in IDE atau alat pemindaian khusus yang memindai kode menggunakan toolset Static Analysis Security Testing (SAST) dan Dynamic Analysis Security Testing (DAST).
Alat SAST memindai basis kode yang ada dan memiliki akses penuh ke kode. Alat SAST dapat mengidentifikasi kelemahan inti dalam kode itu sendiri. DAST di sisi lain dijalankan pada aplikasi yang disebarkan. Akibatnya, kode tidak memiliki akses ke kode dan dijalankan untuk mensimulasikan dan mengidentifikasi kelemahan keamanan dalam runtime.
Catatan
Aplikasi AI memiliki berbagai jenis kerentanan (seperti bias dan halusinasi) daripada aplikasi klasik dan memerlukan alat yang berfokus pada aplikasi tersebut.
Kontrol kualitas penting! Pertimbangan utama untuk menjalankan alat-alat ini adalah memastikan bahwa Anda menyetelnya untuk mengurangi kebisingan dan upaya terbuang dari positif palsu. Menyetel alat-alat ini biasanya memerlukan profesional keamanan dengan latar belakang pengembang yang memahami proses pengembangan organisasi Anda. Profesional yang sama juga dapat memberikan panduan triase dan keahlian tentang deteksi individu untuk pengembang. Mereka dapat membantu membedakan positif benar dan palsu, masalah nyata vs. alarm palsu. Proses bagi pengembang untuk mengakses para ahli ini sering terkait erat dengan Menyediakan Pelatihan Keamanan seperti melalui program juara, tim dukungan keamanan aplikasi, dll.
Minimum sementara - Pastikan Anda mengaktifkan fitur keamanan IDE bawaan dan menerapkan tingkat minimum Pemindaian SAST di seluruh repositori Anda untuk mengidentifikasi kerentanan di seluruh aplikasi. Harus ada proses yang didokumentasikan untuk memulihkan masalah yang ditemukan dalam waktu yang wajar, meskipun standar "bug bar" yang cacatnya harus diperbaiki terbatas sampai aplikasi mencapai profil keamanan standar yang seimbang atau tinggi.
Standar - Pastikan Anda sepenuhnya memindai semua komponen dengan semua alat SAST/DAST yang berlaku dan mengidentifikasi kelemahan. Pastikan cakupan keamanan penuh atas kode aplikasi Anda. Pastikan Anda mengikuti proses yang didokumenkan untuk remediasi dan memiliki standar "bilah bug" yang cocok dengan toleransi risiko organisasi Anda.
Keamanan tinggi – Pastikan semua aplikasi yang berlaku memberlakukan proses terperinci dan terdokumen yang menangani semua kerentanan keamanan. Menerapkan perbaikan sebelum aktivitas build atau rilis apa pun. Pastikan Anda mengikuti proses yang didokumenkan untuk remediasi dan memiliki "bilah bug" yang sangat ketat yang cocok dengan toleransi risiko organisasi Anda untuk beban kerja penting bagi bisnis keamanan tinggi.
Ada banyak alat yang tersedia untuk digunakan untuk analisis statis. Tinjau daftar di Siklus Hidup Pengembangan Keamanan Microsoft untuk menemukan informasi selengkapnya.
Mengamankan alur CI/CD
Manajemen rantai pasokan / dependensi
Kontrol ini mendukung Praktik SDL Berkelanjutan 5 - Mengamankan Rantai Pasokan Perangkat Lunak.
Kontrol ini berfokus pada pengamanan rantai pasokan pengembangan Anda dengan menggunakan alat dan kerangka kerja Analisis Komposisi Perangkat Lunak (SCA) seperti Secure Supply Chain Consumption Framework (S2C2F). Proses ini membantu mengurangi risiko penyusupan oleh kode non-Microsoft.
Dalam lanskap saat ini, sebagian besar aplikasi mengandalkan perangkat lunak sumber terbuka (OSS) dengan sedikit pengawasan atau kontrol dari konsumen komponen ini. Kontrol ini menyoroti strategi inti, teknik, dan teknologi untuk menyerap, mengonsumsi, menggunakan, dan memelihara OSS dengan aman. Ini juga menekankan untuk mengamankan dependensi internal, memastikan siklus hidup end-to-end lengkap, terlepas dari siapa yang mengkodekan perangkat lunak.
Kegagalan untuk mengontrol rantai pasokan perangkat lunak Anda mengekspos Anda pada kerentanan signifikan yang diperkenalkan oleh kode yang tidak Anda kontrol. Contoh terkenal adalah kerentanan log4J/Log4Shell, yang memungkinkan eksekusi kode jarak jauh dalam sistem atau aplikasi apa pun menggunakan paket ini. Kerentanan tersebut dapat timbul secara tidak sengaja atau berbahaya.
Mengamankan rantai pasokan Anda adalah bagian penting untuk memastikan siklus hidup pengembangan yang aman dan harus dipertimbangkan di setiap status profil, meskipun setiap status harus mengikuti proses standar yang sama untuk menyerap dependensi.
Minimum sementara - Inventarisi semua dependensi Anda sehingga Anda memahami dampak kerentanan OSS pada aplikasi Anda. Inventaris ini dapat dicapai menggunakan Dependabot atau alat Analisis Komposisi Perangkat Lunak (SCA) lainnya. Alat-alat ini mungkin juga membantu Anda menghasilkan tagihan Perangkat Lunak Bahan (SBOM).
Standar - Menganalisis semua Kerentanan OSS dan secara otomatis memperbaikinya dengan permintaan pull otomatis. Kontrol ini juga dapat dicapai dengan menggunakan Dependabot dan grafik/ulasan Dependensi GitHub.
Keamanan tinggi – Secara aktif memblokir semua paket yang tidak aman dengan kerentanan yang dapat dieksploitasi yang digunakan dalam aplikasi.
Untuk mempelajari selengkapnya tentang kontrol ini dan mengukur kematangan Keamanan OSS Anda, tinjau dokumentasi PRAKTIK terbaik OSS Supply Chain Framework dan GitHub tentang Mengamankan siklus hidup pengembangan Anda.
Tinjauan kode keamanan
Kontrol ini berfokus pada memiliki kode ulasan pakar keamanan untuk mengidentifikasi potensi kelemahan keamanan. Ini membantu menemukan masalah keamanan yang sulit untuk mengotomatiskan deteksi.
Tinjauan ini dapat dilakukan oleh: serekan di tim yang sama dengan keahlian keamanan aplikasi, juara keamanan dalam organisasi, pakar keamanan aplikasi dari tim keamanan aplikasi pusat, atau pihak eksternal.
Ulasan ini harus selalu menjadi orang yang terpisah dari pengembang yang menulis kode. Tinjauan ini harus dilakukan sebagai aktivitas terpisah setelah analisis kode otomatis selesai.
Minimum sementara – Kontrol ini direkomendasikan untuk profil ini.
Standar - Kontrol ini direkomendasikan untuk profil ini.
Keamanan tinggi - Kontrol ini diperlukan untuk semua aplikasi keamanan tinggi dan sering melibatkan beberapa pakar individu.
Pemindaian kredensial dan rahasia
Kontrol ini mendukung Praktik SDL Berkelanjutan 7 - Melakukan Pengujian Keamanan.
Kontrol ini berfokus pada pengurangan risiko dari kunci autentikasi dan rahasia lain yang terekspos dalam kode. Pelaku ancaman memiliki keahlian dan otomatisasi untuk menemukan dan mengeksploitasi rahasia yang disematkan dalam kode.
Pendekatan terbaik adalah menggunakan identitas terkelola dan protokol autentikasi modern alih-alih kunci dan rahasia jika memungkinkan. Saat menggunakan kunci dan rahasia API secara tradisional telah menjadi praktik pengkodean dan pengujian, metode yang disukai harus selalu menjadi autentikasi berbasis identitas ke sumber daya karena peningkatan kemampuan manajemen keamanan dan siklus hidup. Implementasi kontrol ini berbentuk menggunakan identitas terkelola, seperti Identitas terkelola untuk sumber daya Azure.
Jika penggunaan rahasia diperlukan, Anda harus mengamankannya melalui seluruh siklus hidupnya termasuk pembuatan, penggunaan, rotasi reguler, dan pencabutannya. Hindari langsung menggunakan rahasia dalam kode dan hanya simpan dalam sistem penyimpanan kunci/rahasia yang aman seperti Azure Key Vault atau Modul Keamanan Perangkat Keras (HSM) jika perlu. Dalam keadaan apa pun harus kunci teks biasa dan rahasia yang pernah disimpan dalam kode, bahkan untuk sementara! Penyerang menemukan dan mengeksploitasi rahasia ini.
Penting
Repositori kode sumber internal tidak aman!
Repositori internal harus tunduk pada persyaratan yang sama dengan repositori yang menghadap ke publik karena pelaku ancaman sering berburu rahasia dan kunci di repositori setelah mendapatkan akses ke lingkungan melalui phishing atau cara lain. Ini diperlukan untuk pendekatan Zero Trust yang mengasumsikan pelanggaran dan merancang kontrol keamanan yang sesuai.
Standar - Kebersihan rahasia yang baik sangat penting dan diperlukan di semua profil.
Catatan
Karena rahasia ini ditemukan oleh tim Anda atau oleh penyerang, Anda harus memastikan bahwa kunci tidak dapat digunakan untuk mengakses sumber daya (bervariasi menurut jenis sumber daya) selain memodifikasi mekanisme ke metode akses yang lebih aman seperti identitas terkelola.
Detail dan sumber daya lebih lanjut meliputi:
- Pemindaian Rahasia untuk GitHub Advanced Security untuk Azure DevOps
- Praktik terbaik untuk menggunakan Azure Key Vault
Catatan
Kami sangat menyarankan penggunaan per kunci beban kerja dengan solusi penyimpanan rahasia seperti Azure Key Vault.
Alur aman
Kontrol ini mendukung Praktik SDL Berkelanjutan 5 - Mengamankan Rantai Pasokan Perangkat Lunak.
Kontrol ini berfokus pada pengamanan alur DevOps dan semua artefak yang dibuat selama proses build aplikasi Anda.
Alur adalah bagian penting dari mengotomatiskan aktivitas inti yang dapat diulang dalam Siklus Hidup DevSecOps. 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, yang mencakup toolset keamanan.
Menggunakan alur untuk menjalankan skrip atau menyebarkan kode ke lingkungan produksi dapat menimbulkan tantangan keamanan yang unik. Pastikan bahwa 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 harus memastikan bahwa hanya kode yang ingin dirilis oleh tim Anda yang disebarkan. Proses ini mencakup artefak alur CI/CD Anda, terutama artefak yang dibagikan di antara berbagai tugas yang dapat digunakan sebagai bagian dari serangan.
Pembuatan Software Bill of Materials (SBOM) harus diotomatisasi ke dalam proses build untuk membuat artefak bukti kode yang sangat penting ini tanpa memerlukan tindakan pengembang manual.
Keamanan alur dapat dipastikan dengan memastikan kontrol akses yang baik ke sumber daya yang digunakan dalam alur dan memvalidasi/memperbarui dependensi/skrip inti secara teratur. Penting untuk dicatat bahwa skrip yang digunakan dalam alur CI/CD juga merupakan kode dan harus diperlakukan dengan cara yang sama seperti Anda memperlakukan kode lain dalam proyek Anda.
Catatan
Keamanan alur tergantung pada keamanan infrastruktur yang mendasar dan akun/identitas yang digunakan untuk proses tersebut. Untuk informasi selengkapnya, lihat mengamankan lingkungan pengembangan Anda dan kontrol operasi aman (Identitas Identitas/Kontrol Akses Aplikasi, Kontrol Host/Kontainer, Kontrol Akses Jaringan)
Standar - Kontrol ini harus dievaluasi pada tingkat akses ke setiap sumber daya dalam proyek; ini adalah kontrol yang diperlukan di semua tingkat profil DevSecOps.
Untuk mempelajari selengkapnya tentang keamanan alur, lihat Mengamankan Azure Pipelines.
Operasi aman
Pengujian penetrasi situs langsung
Kontrol ini mendukung Praktik SDL Berkelanjutan 7 - Melakukan Pengujian Keamanan.
Minta penguji penetrasi aplikasi profesional mencoba membahayakan instans langsung dari beban kerja lengkap. Pengujian ini memvalidasi bahwa kontrol keamanan beban kerja efektif dan konsisten. Pengujian penetrasi membantu menemukan dan menyoroti jalur resistensi paling sedikit yang dapat digunakan penyerang untuk mengeksploitasi aplikasi Anda dan membahayakan bisnis. Tes penetrasi bisa sangat berharga ketika dilakukan pada waktu yang tepat. Gunakan setelah Anda mengurangi kerentanan yang murah dan mudah dieksploitasi yang ditemukan dalam pemindaian sebelumnya.
Kami sarankan Anda melakukan pengujian ini di semua tingkat profil keamanan DevSecOps.
Minimum sementara - Kami sarankan Anda melakukan pengujian penetrasi pada semua aplikasi. Karena kendala waktu, Anda mungkin hanya dapat mengidentifikasi metode yang lebih mudah ke dalam aplikasi yang mungkin dieksploitasi penyerang. Rencanakan untuk dengan cepat membawa nilai ini ke tingkat standar minimal.
Standar - Pada profil standar, kami sarankan Anda melakukan tes penetrasi. Dalam hal ini, Anda mungkin mengungkap kerentanan yang lebih kompleks karena perawatan ekstra yang diambil di awal proses pengembangan.
Keamanan tinggi - Untuk aplikasi lini bisnis dan beban kerja penting, ini adalah persyaratan untuk menyelesaikan tes penetrasi. Setiap kerentanan dalam aplikasi ini harus diperlakukan dengan perhatian dan perawatan ekstra.
Integrasikan temuan dan umpan balik dari aktivitas ini untuk meningkatkan proses dan alat keamanan Anda.
Kontrol akses identitas/aplikasi
Kontrol ini mendukung Praktik SDL Berkelanjutan 8 - Memastikan keamanan platform operasional dan Praktik 6 - Mengamankan lingkungan teknik Anda.
Pastikan bahwa praktik terbaik keamanan untuk manajemen identitas dan akses termasuk mengamankan akses istimewa diikuti untuk semua elemen teknis lingkungan pengembangan, alur CI/CD, beban kerja operasional, dan sistem pengembangan lainnya. Pelaku ancaman memiliki metode dan otomatisasi canggih untuk serangan identitas yang sering mereka gunakan terhadap sistem produksi dan proses pengembangan. Manajemen identitas dan akses adalah pilar dasar dari model Zero Trust yang direkomendasikan Microsoft.
Pastikan praktik terbaik keamanan diikuti untuk semua sistem pengembangan dan infrastruktur yang menghostingnya (VM, kontainer, perangkat jaringan, dan banyak lagi).
Minimum sementara - Pastikan semua orang menggunakan autentikasi multifaktor dan hanya dapat mengakses sistem yang diperlukan untuk melakukan tugas harian mereka.
Standar - Pastikan bahwa komponen infrastruktur yang menghosting beban kerja (seperti VM, kontainer, jaringan, dan sistem identitas) memenuhi praktik terbaik keamanan untuk manajemen identitas dan akses, termasuk mengamankan akses istimewa.
Keamanan tinggi - Terapkan strategi Zero Trust penuh yang menggabungkan MFA, Deteksi dan Respons Ancaman Identitas, dan Cloud Infrastructure Entitlement Management (CIEM). Lakukan model ancaman khusus beban kerja dari sistem identitas dan komponen yang mendukung setiap beban kerja keamanan tinggi.
Identitas Terkelola adalah metode autentikasi yang lebih aman dan disukai jika memungkinkan. Penggunaan token dan rahasia kurang aman karena kebutuhan untuk menyimpan dan mengambilnya di lapisan aplikasi. Selain itu, Identitas Terkelola secara otomatis digulirkan tanpa perlu intervensi manual.
Detail dan sumber daya lebih lanjut meliputi:
- Mengamankan panduan Akses Istimewa (SPA)
- Lima langkah untuk mengamankan infrastruktur identitas Anda
- Apa identitas terkelola untuk sumber daya Azure?
- Apa itu Microsoft Entra Privileged Identity Management
- Apa itu Manajemen Izin Microsoft Entra?
Kontrol host/kontainer/lingkungan
Kontrol ini mendukung Praktik SDL Berkelanjutan 8 - Memastikan keamanan platform operasional dan Praktik 6 - Mengamankan lingkungan teknik Anda.
Pastikan bahwa praktik terbaik keamanan diikuti untuk semua sumber daya komputasi dan lingkungan hosting untuk semua elemen teknis siklus hidup pengembangan. Pelaku ancaman memiliki metode dan otomatisasi canggih untuk infrastruktur dan serangan titik akhir pengguna yang sering mereka gunakan terhadap sistem produksi dan proses pengembangan. Keamanan infrastruktur adalah pilar dasar dari model Zero Trust yang direkomendasikan Microsoft.
Kontrol ini harus mencakup semua elemen pengembangan dan siklus hidup operasional termasuk tetapi tidak terbatas pada:
- Stasiun kerja dan lingkungan TI/operasional umum
- Stasiun kerja dan lingkungan pengembangan khusus
- Infrastruktur alur CI/CD
- Lingkungan hosting beban kerja
- Sistem pengembangan lainnya.
Kontrol ini mencakup sumber daya apa pun yang dapat menjalankan kode apa pun termasuk tetapi tidak terbatas pada:
- Host komputer virtual (VM) dan VM
- Infrastruktur kontainer dan kontainer
- Platform hosting aplikasi, skrip, dan kode
- Langganan/akun cloud dan pendaftaran
- Stasiun Kerja Admin Pengembang, Pengguna, dan TI
Pastikan Anda menerapkan praktik terbaik keamanan ke komponen infrastruktur termasuk pembaruan keamanan (patch), konfigurasi keamanan dasar, dan banyak lagi.
Minimum sementara - Terapkan konfigurasi perusahaan standar untuk host dan langganan.
Standar - Pastikan infrastruktur memenuhi praktik terbaik keamanan yang diuraikan dalam Microsoft Cloud Security Benchmark (MCSB).
Keamanan tinggi - Menerapkan standar MCSB secara ketat dan melakukan model ancaman khusus beban kerja infrastruktur yang mendukung setiap beban kerja keamanan tinggi.
Detail dan sumber daya lebih lanjut meliputi:
- Tolok Ukur Keamanan Cloud Microsoft (MCSB)
- Microsoft Defender untuk Cloud
- AppLocker
- Mengamankan SQL Server
- garis besar Keamanan Windows
- Kontrol Aplikasi dan perlindungan integritas kode berbasis virtualisasi
Kontrol Akses Jaringan
Kontrol ini mendukung Praktik SDL Berkelanjutan 8 - Memastikan keamanan platform operasional dan Praktik 6 - Mengamankan lingkungan teknik Anda.
Pastikan bahwa praktik terbaik keamanan untuk manajemen akses jaringan diikuti untuk semua elemen teknis lingkungan pengembangan, alur CI/CD, lingkungan beban kerja operasional, dan sistem pengembangan lainnya. Pelaku ancaman memiliki metode dan otomatisasi canggih untuk serangan identitas yang sering mereka gunakan terhadap sistem produksi dan proses pengembangan. Keamanan jaringan adalah pilar dasar dari model Zero Trust yang direkomendasikan Microsoft.
Keamanan jaringan harus mencakup:
- Perlindungan Jaringan Eksternal – Isolasi dari lalu lintas eksternal/internet yang tidak diminta dan mitigasi jenis serangan yang diketahui. Isolasi ini biasanya mengambil bentuk firewall internet, firewall aplikasi web (WAF), dan solusi keamanan API.
- Perlindungan Jaringan Internal – Isolasi dari lalu lintas internal yang tidak diminta (dari lokasi jaringan perusahaan lainnya). Isolasi ini mungkin menggunakan kontrol serupa sebagai perlindungan jaringan eksternal dan mungkin terperinci ke beban kerja atau untuk komponen dan alamat IP individual tertentu.
- Penolakan Mitigasi Layanan – Perlindungan terhadap Penolakan Layanan Terdistribusi (DDoS) dan penolakan serangan layanan lainnya.
- Security Service Edge (SSE) – Penggunaan mikrosegmentasi sisi klien untuk menyediakan akses aman langsung ke sumber daya, termasuk penerapan kebijakan Zero Trust.
Pastikan praktik terbaik keamanan diikuti untuk semua sistem pengembangan dan infrastruktur yang menghostingnya (VM, kontainer, perangkat jaringan, dan banyak lagi).
Minimum sementara – Menerapkan konfigurasi perusahaan standar untuk beban kerja.
Standar - Pastikan semua sistem memiliki perlindungan jaringan eksternal, perlindungan DDoS, dan minimal perlindungan jaringan internal per beban kerja.
Keamanan tinggi - Semua perlindungan standar ditambah granularitas tinggi perlindungan jaringan internal, penerowongan paksa lalu lintas server keluar melalui mekanisme perlindungan jaringan eksternal, dan model ancaman khusus beban kerja infrastruktur jaringan yang mendukung setiap beban kerja keamanan tinggi.
Detail dan sumber daya lebih lanjut meliputi:
- Keamanan jaringan MCSB
- Microsoft Defender untuk Cloud
- Azure Firewall
- Azure Web Applications Firewalls (WAF)
- Azure DDoS Protection
Pemantauan, respons, dan pemulihan
Kontrol ini mendukung Praktik SDL Berkelanjutan 9 - Menerapkan Pemantauan dan Respons Keamanan.
Pastikan bahwa tim operasi keamanan (SecOps/SOC) memiliki visibilitas, deteksi ancaman, dan prosedur respons untuk beban kerja (API dan aplikasi) serta infrastruktur yang menghostingnya. Pastikan bahwa proses dan alat lintas tim antara SecOps dan tim Infrastruktur/Beban Kerja memungkinkan pemulihan yang cepat setelah serangan.
Kontrol ini mempertahankan keamanan beban kerja setelah dalam produksi dan berjalan secara aktif di organisasi Anda. Proses ini harus diintegrasikan dengan kemampuan operasi keamanan Anda yang ada yang mendeteksi dan merespons insiden keamanan.
Pemantauan keamanan untuk beban kerja kustom menggabungkan solusi deteksi dan respons yang diperluas (XDR) untuk komponen umum dengan menganalisis log dan data aplikasi lainnya untuk mendeteksi dan menyelidiki potensi ancaman keamanan. Data aplikasi kustom sering mencakup: informasi tentang permintaan pengguna, aktivitas aplikasi, kode kesalahan, lalu lintas jaringan, detail relevan lainnya dari aplikasi, database, titik akhir jaringan, dan komponen sistem lainnya.
Data ini kemudian ditingkatkan dengan wawasan dari inteligensi ancaman real-time untuk mengidentifikasi pola perilaku anomali yang dapat menunjukkan potensi upaya untuk menyusup ke jaringan. Setelah dikumpulkan, berkorelasi, dan dinormalisasi, platform XDR dan Security Information and Event Management (SIEM) menawarkan tindakan remediasi.
Minimum sementara – Sebarkan kemampuan XDR di lingkungan Anda untuk memantau lalu lintas perangkat pengguna akhir Anda.
Standar - Menyebarkan XDR dan deteksi SIEM kustom yang mengidentifikasi perilaku anomali relatif terhadap lingkungan keseluruhan. Profil ini mungkin menyertakan deteksi kustom untuk beban kerja individual.
Keamanan tinggi – Kontrol standar ditambah deteksi per beban kerja kustom berdasarkan wawasan dari pemodelan ancaman beban kerja. Gabungkan profil ini dengan AI untuk memberikan kesadaran kontekstual terhadap rekomendasi remediasi.
- Pertahanan Microsoft
- Microsoft Sentinel
- Mengelola dan menangani peringatan keamanan
- Unduhan Microsoft: Manajemen Insiden Keamanan di Microsoft Office 365
- Respons Insiden Microsoft dan tanggung jawab bersama untuk komputasi cloud
Langkah berikutnya
Mengadopsi kontrol keamanan ini dan menyesuaikannya dengan toleransi risiko dan persyaratan produktivitas organisasi Anda. Anda harus menggunakan pendekatan peningkatan berkelanjutan di mana Anda terus membangun menuju status ideal.
Mulailah dengan memprioritaskan kontrol dan tingkat target ideal minimum. Pastikan Anda memiliki dampak keamanan positif dan perubahan gesekan rendah terlebih dahulu. Prioritaskan, terapkan, dan integrasikan kontrol pertama lalu ulangi proses dengan kontrol berikutnya.
Anda harus memprioritaskan fondasi penting terlebih dahulu karena dampak positif yang luas dan kredensial dan pemindaian rahasia karena dampaknya yang tinggi dan penggunaan penyerang yang sering.