Bagikan melalui


Merancang aplikasi aman di Azure

Dalam artikel ini, kami menyajikan aktivitas dan kontrol keamanan untuk dipertimbangkan saat Anda merancang aplikasi untuk cloud. Sumber daya pelatihan beserta pertanyaan dan konsep keamanan yang perlu dipertimbangkan selama tahap persyaratan dan perancangan Microsoft Security Development Lifecycle (SDL) telah tercakup. Artikel ini bertujuan untuk membantu Anda menentukan aktivitas dan layanan Azure yang dapat Anda gunakan untuk merancang aplikasi yang lebih aman.

Tahap SDL berikut tercakup dalam artikel ini:

  • Pelatihan
  • Persyaratan
  • Rancang

Pelatihan

Sebelum Anda mulai mengembangkan aplikasi cloud Anda, luangkan waktu untuk memahami keamanan dan privasi di Azure. Dengan mengambil langkah ini, Anda dapat mengurangi jumlah dan tingkat keparahan kerentanan yang dapat dieksploitasi dalam aplikasi Anda. Anda akan lebih siap untuk bereaksi dengan tepat terhadap lanskap ancaman yang selalu berubah.

Gunakan sumber daya berikut selama tahap pelatihan untuk membiasakan diri dengan layanan Azure yang tersedia untuk pengembang dan dengan praktik terbaik keamanan di Azure:

  • Panduan pengembang untuk Azure menunjukkan cara memulai menggunakan Azure. Panduan ini menunjukkan layanan mana yang dapat Anda gunakan untuk menjalankan aplikasi, menyimpan data, menggabungkan kecerdasan, membangun aplikasi IoT, dan menyebarkan solusi Anda dengan cara yang lebih efisien dan aman.

  • Panduan memulai untuk pengembang Azure menyediakan informasi penting bagi pengembang yang ingin mulai menggunakan platform Azure untuk kebutuhan pengembangan mereka.

  • SDK dan alat menjelaskan alat-alat yang tersedia di Azure.

  • Layanan Azure DevOps menyediakan alat kolaborasi pengembangan. Alat-alat ini meliputi alur berperforma tinggi, repositori Git gratis, papan Kanban yang dapat dikonfigurasi, dan pengujian beban berbasis cloud yang otomatis dan luas. Pusat Sumber Daya Azure DevOps menggabungkan sumber daya kami untuk mempelajari praktik DevOps, kontrol versi Git, metode yang tangkas, cara kami bekerja dengan DevOps di Microsoft, dan bagaimana Anda dapat menilai perkembangan DevOps Anda sendiri.

  • Lima item keamanan teratas yang perlu dipertimbangkan sebelum mendorong ke produksi menunjukkan kepada Anda cara membantu mengamankan aplikasi web Anda di Azure dan melindungi aplikasi Anda dari serangan aplikasi web yang paling umum dan berbahaya.

  • Secure DevOps Kit for Azure adalah kumpulan skrip, alat, ekstensi, dan otomatisasi yang memenuhi kebutuhan keamanan sumber daya dan langganan Azure yang komprehensif dari tim DevOps yang menggunakan otomatisasi ekstensif. Secure DevOps Kit untuk Azure dapat menunjukkan cara mengintegrasikan keamanan dengan lancar ke alur kerja DevOps asli Anda. Kit ini membahas alat-alat seperti tes verifikasi keamanan (SVT), yang dapat membantu pengembang menulis kode yang aman, serta menguji konfigurasi aman aplikasi cloud mereka pada tahap pengkodean dan pengembangan awal.

  • Praktik dan pola terbaik keamanan Azure - Kumpulan praktik terbaik keamanan untuk digunakan saat Anda merancang, menyebarkan, dan mengelola solusi cloud dengan menggunakan Azure. Panduan dimaksudkan untuk menjadi sumber daya bagi profesional TI. Dapat meliputi perancang, arsitek, pengembang, dan penguji yang membuat dan menyebarkan solusi Azure yang aman.

Persyaratan

Fase definisi persyaratan adalah langkah penting dalam menentukan apa itu aplikasi Anda dan apa fungsinya saat dirilis. Fase persyaratan juga merupakan waktu untuk memikirkan kontrol keamanan yang Anda bangun ke dalam aplikasi Anda. Selama fase ini, Anda juga memulai langkah-langkah yang Anda ambil di seluruh SDL untuk memastikan bahwa Anda merilis dan menyebarkan aplikasi yang aman.

Mempertimbangkan masalah keamanan dan privasi

Tahap ini adalah waktu terbaik untuk mempertimbangkan masalah keamanan dan privasi dasar. Menentukan tingkat keamanan dan privasi yang dapat diterima pada awal proyek akan membantu tim:

  • Memahami risiko yang terkait dengan masalah keamanan.
  • Mengidentifikasi dan memperbaiki bug keamanan selama pengembangan.
  • Menerapkan tingkat keamanan dan privasi yang ditetapkan di seluruh proyek.

Ketika Anda menulis persyaratan untuk aplikasi Anda, pastikan untuk mempertimbangkan kontrol keamanan yang dapat membantu menjaga aplikasi dan data Anda tetap aman.

Menanyakan pertanyaan keamanan

Tanyakan pertanyaan keamanan seperti:

  • Apakah aplikasi saya berisi data sensitif?

  • Apakah aplikasi saya mengumpulkan atau menyimpan data yang mengharuskan saya untuk mematuhi standar industri dan program kepatuhan seperti Dewan Pemeriksaan Keuangan Lembaga Federal (FFIEC) atau Standar Keamanan Data Industri Kartu Pembayaran (PCI DSS)?

  • Apakah aplikasi saya mengumpulkan atau berisi data sensitif pribadi atau pelanggan yang dapat digunakan, baik langsung atau dengan informasi lain, untuk mengidentifikasi, menghubungi, atau menemukan seseorang?

  • Apakah aplikasi saya mengumpulkan atau berisi data yang dapat digunakan untuk mengakses informasi medis, pendidikan, keuangan, atau pekerjaan seseorang? Mengidentifikasi sensitivitas data Anda selama fase persyaratan membantu Anda mengklasifikasikan data dan mengidentifikasi metode perlindungan data yang Anda gunakan untuk aplikasi Anda.

  • Di mana dan bagaimana data saya disimpan? Pertimbangkan bagaimana Anda memantau layanan penyimpanan yang digunakan aplikasi Anda untuk setiap perubahan tak terduga (seperti waktu respons yang lebih lambat). Apakah Anda dapat memengaruhi pengelogan untuk mengumpulkan data yang lebih rinci dan menganalisis masalah secara mendalam?

  • Apakah aplikasi saya tersedia untuk umum (di internet) atau hanya secara internal? Jika aplikasi Anda tersedia untuk umum, bagaimana Anda melindungi data yang mungkin dikumpulkan agar tidak disalahgunakan? Jika aplikasi Anda hanya tersedia secara internal, pertimbangkan siapa di organisasi Anda yang harus memiliki akses ke aplikasi dan berapa lama mereka akan memiliki akses.

  • Apakah Anda memahami model identitas Anda sebelum mulai merancang aplikasi Anda? Dapatkah Anda menentukan bahwa pengguna adalah siapa yang mereka katakan dan apa yang diizinkan untuk dilakukan pengguna?

  • Apakah aplikasi saya melakukan tugas sensitif atau penting (seperti mentransfer uang, membuka kunci pintu, atau mengirimkan obat)? Pertimbangkan bagaimana Anda memvalidasi bahwa pengguna yang melakukan tugas sensitif berwenang untuk melakukan tugas dan bagaimana Anda mengautentikasi bahwa orang tersebut adalah orang yang mereka katakan. Otorisasi (AuthZ) adalah tindakan pemberian izin pokok keamanan terautentikasi untuk melakukan sesuatu. Autentikasi (AuthN) adalah tindakan untuk mempertanyakan mandat yang sah pada suatu pihak.

  • Apakah aplikasi saya melakukan aktivitas perangkat lunak yang berisiko, seperti memungkinkan pengguna untuk mengunggah atau mengunduh file atau data lainnya? Jika aplikasi Anda melakukan aktivitas berisiko, pertimbangkan bagaimana aplikasi Anda melindungi pengguna dari penanganan file atau data berbahaya.

Meninjau OWASP top 10

Pertimbangkan untuk meninjau 10 Risiko Teratas Keamanan Aplikasi OWASP. 10 Risiko Teratas OWASP membahas risiko keamanan penting untuk aplikasi web. Kesadaran akan risiko keamanan ini dapat membantu Anda membuat keputusan persyaratan dan rancangan yang meminimalkan risiko ini dalam aplikasi Anda.

Memikirkan kontrol keamanan untuk mencegah pelanggaran adalah hal penting. Namun, ada baiknya untuk mengasumsikan pelanggaran yang akan terjadi. Mengasumsikan pelanggaran membantu menjawab beberapa pertanyaan penting tentang keamanan di awal, sehingga Anda memiliki jawabannya saat keadaan darurat terjadi:

  • Bagaimana cara mendeteksi serangan?
  • Apa yang akan kulakukan jika ada serangan atau pelanggaran?
  • Bagaimana saya akan melakukan pemulihan dari serangan seperti kebocoran atau perusakan data?

Rancang

Tahapan desain sangat penting guna membangun praktik terbaik untuk desain dan spesifikasi fungsional. Tahap ini juga penting untuk melakukan analisis risiko yang membantu mengurangi masalah keamanan dan privasi di seluruh proyek.

Ketika Anda telah memiliki persyaratan keamanan dan menggunakan konsep desain yang aman, Anda dapat menghindari atau memperkecil peluang munculnya celah keamanan. Celah keamanan adalah kesalahan dalam rancangan aplikasi yang memungkinkan pengguna melakukan tindakan berbahaya atau tidak terduga setelah aplikasi Anda dirilis.

Selama tahap rancangan, pikirkan juga tentang bagaimana Anda dapat menerapkan keamanan secara berlapis; satu tingkat pertahanan belum tentu cukup. Apa yang terjadi jika penyerang melewati firewall aplikasi web (WAF)? Anda menginginkan kontrol keamanan lain yang tersedia untuk bertahan terhadap serangan itu.

Dengan mengingat hal ini, berikut pembahasan konsep rancangan aman dan kontrol keamanan yang harus Anda tangani saat Anda merancang aplikasi yang aman:

  • Gunakan pustaka pengkodean dan kerangka kerja perangkat lunak yang aman.
  • Pindai komponen yang rentan.
  • Gunakan pemodelan ancaman selama perancangan aplikasi.
  • Kurangi permukaan serangan Anda.
  • Adopsi kebijakan identitas sebagai perimeter keamanan utama.
  • Memerlukan aatentikasi ulang untuk transaksi penting.
  • Gunakan solusi manajemen kunci untuk mengamankan kunci, informasi masuk, dan rahasia lainnya.
  • Lindungi data sensitif.
  • Terapkan tindakan fail-safe.
  • Manfaatkan penanganan kesalahan dan pengecualian.
  • Gunakan pengelogan dan pemberitahuan.

Menggunakan pustaka pengkodean dan kerangka kerja perangkat lunak yang aman

Untuk pengembangan, gunakan pustaka pengkodean yang aman dan kerangka kerja perangkat lunak yang memiliki keamanan tersemat. Pengembang dapat menggunakan fitur yang telah ada dan terbukti (enkripsi, sanitasi input, pengkodean output, kunci atau string koneksi, dan apa pun yang akan dianggap sebagai kontrol keamanan) alih-alih mengembangkan kontrol keamanan dari awal. Tindakan ini membantu memberikan perlindungan terhadap kelemahan implementasi dan desain terkait keamanan.

Pastikan untuk menggunakan kerangka kerja versi terbaru dan semua fitur keamanan yang tersedia dalam kerangka kerja. Microsoft menawarkan set alat pengembangan yang komprehensif untuk semua pengembang, yang berfungsi pada platform atau bahasa apa pun, untuk menyediakan aplikasi cloud. Anda dapat membuat kode dengan bahasa pilihan Anda dengan memilih dari berbagai SDK. Anda dapat memanfaatkan lingkungan pengembangan terpadu (IDE) berfitur lengkap dan penyunting yang memiliki kemampuan debug canggih dan dukungan Azure bawaan.

Microsoft menawarkan berbagai bahasa, kerangka kerja, dan alat yang dapat Anda gunakan untuk mengembangkan aplikasi di Azure. Misalnya, Azure untuk pengembang .NET dan .NET Core. Untuk setiap bahasa dan kerangka kerja yang kami tawarkan, Anda dapat menemukan mulai cepat, tutorial, dan referensi API untuk membantu Anda memulai dengan cepat.

Azure menawarkan berbagai layanan yang dapat Anda gunakan untuk menghosting situs web dan aplikasi web. Layanan ini memungkinkan Anda melakukan pengembangan dalam bahasa favorit Anda, entah itu .NET, .NET Core, Java, Ruby, Node.js, PHP, atau Python. Azure App Service Web Apps (Web Apps) adalah salah satu layanan ini.

Web Apps menambahkan kecanggihan Microsoft Azure ke aplikasi Anda. Kecanggihan tersebut mencakup keamanan, penyeimbangan beban, penskalaan otomatis, dan manajemen otomatis. Anda juga dapat memanfaatkan kemampuan DevOps di Web Apps, seperti manajemen paket, penyiapan lingkungan, domain kustom, sertifikat SSL/TLS, dan penyebaran berkelanjutan dari Azure DevOps, GitHub, Docker Hub, dan sumber lainnya.

Azure menawarkan layanan lainnya yang dapat Anda gunakan untuk menghosting situs web dan aplikasi web. Untuk kebanyakan skenario, Web Apps adalah pilihan terbaik. Untuk arsitektur layanan mikro, pertimbangkan menggunakan Azure Service Fabric. Jika Anda memerlukan kontrol lebih besar atas VM yang menjalankan kode Anda, pertimbangkan Microsoft Azure Virtual Machines. Untuk mengetahui informasi selengkapnya tentang cara memilih antara layanan-layanan Azure ini, lihat perbandingan Azure App Service, Virtual Machines, Service Fabric, dan Cloud Services.

Menerapkan pembaruan pada komponen

Untuk mencegah kerentanan, Anda harus terus membuat invenatris komponen sisi klien dan sisi server Anda (misalnya, kerangka kerja dan pustaka) dan dependensinya untuk pembaruan. Kerentanan baru dan versi perangkat lunak baru akan dirilis secara berkelanjutan. Pastikan Anda memiliki rencana berkelanjutan untuk melakukan pemantauan, triase, dan penerapan pembaruan atau perubahan konfigurasi pada pustaka dan komponen yang Anda gunakan.

Lihat halaman Proyek Keamanan Aplikasi Web Terbuka (OWASP) tentang penggunaan komponen dengan kerentanan yang diketahui untuk saran alat. Anda juga dapat berlangganan pemberitahuan surel untuk mengetahui kerentanan keamanan yang terkait dengan komponen yang Anda gunakan.

Menggunakan pemodelan ancaman selama perancangan aplikasi

Pemodelan ancaman adalah proses mengidentifikasi potensi ancaman keamanan terhadap bisnis dan aplikasi Anda, lalu memastikan bahwa mitigasi yang tepat telah siap. SDL menentukan bahwa tim harus terlibat dalam pemodelan ancaman selama tahap desain, saat penyelesaian masalah potensial relatif mudah dan hemat biaya. Menggunakan pemodelan ancaman dalam tahap desain dapat sangat mengurangi total biaya pengembangan Anda.

Untuk membantu memfasilitasi proses pemodelan ancaman, kami merancang Alat Pemodelan Ancaman SDL dengan mempertimbangkan pakar non-keamanan. Alat ini mempermudah pemodelan ancaman bagi semua pengembang dengan memberikan panduan yang jelas tentang cara membuat dan menganalisis model ancaman.

Memodelkan desain aplikasi dan menghitung ancaman STRIDE-Spoofing , Perusakan, Penolakan, Pengungkapan Informasi, Penolakan Layanan, dan Elevasi Hak Istimewa di semua batas kepercayaan telah membuktikan cara yang efektif untuk menangkap kesalahan desain lebih awal. Tabel berikut mencantumkan ancaman STRIDE dan memberikan beberapa contoh mitigasi yang memanfaatkan fitur yang disediakan oleh Azure. Mitigasi ini tidak berfungsi dalam setiap situasi.

Ancaman Properti keamanan Mitigasi potensial dari platform Azure
Spoofing Autentikasi Mengharuskan sambungan HTTPS.
Gangguan Integritas Memvalidasi sertifikat SSL/TLS. Aplikasi yang menggunakan SSL/TLS harus memverifikasi sepenuhnya sertifikat X.509 dari entitas tujuan sambungan. Gunakan sertifikat Azure Key Vault untuk mengelola sertifikat x509 Anda.
Penyangkalan Non-penyangkalan Mengaktifkan pemantauan dan diagnostik Azure.
Keterbukaan Informasi Kerahasiaan Mengenkripsi data sensitif saat tidak aktif dan dalam transit.
Penolakan Layanan Ketersediaan Memantau metrik performa untuk potensi kondisi penolakan layanan. Menerapkan filter koneksi. Azure DDoS Protection, yang dikombinasikan dengan praktik terbaik desain aplikasi, memberikan pertahanan terhadap serangan DDoS.
Peningkatan Hak Istimewa Authorization Gunakan Microsoft Entra ID Privileged Identity Management.

Mengurangi permukaan serangan Anda

Permukaan serangan adalah jumlah total tempat potensi kerentanan mungkin terjadi. Dalam artikel ini, kita berfokus pada permukaan serangan aplikasi. Fokusnya adalah untuk melindungi aplikasi dari serangan. Cara yang cepat dan sederhana untuk memperkecil permukaan serangan Anda adalah dengan menghapus sumber daya dan kode yang tidak digunakan dari aplikasi Anda. Semakin kecil aplikasi Anda, semakin kecil permukaan serangan Anda. Misalnya, hapus:

  • Kode untuk fitur yang belum Anda rilis.
  • Kode dukungan penelusuran kesalahan.
  • Antarmuka dan protokol jaringan yang tidak digunakan atau tidak digunakan lagi.
  • Komputer virtual dan sumber daya lain yang tidak Anda gunakan.

Melakukan pembersihan sumber daya secara teratur dan memastikan bahwa Anda menghapus kode yang tidak digunakan adalah cara yang bagus untuk memastikan mengecilnya peluang bagi aktor jahat untuk menyerang.

Cara yang lebih rinci dan mendalam untuk mengurangi permukaan serangan Anda adalah dengan menyelesaikan analisis permukaan serangan. Analisis permukaan serangan membantu Anda memetakan bagian-bagian sistem yang perlu ditinjau dan diuji untuk menemukan kerentanan keamanan.

Tujuan dari analisis permukaan serangan adalah untuk memahami area risiko dalam aplikasi sehingga pengembang dan spesialis keamanan menyadari bagian mana dari aplikasi yang rawan terhadap serangan. Kemudian, Anda dapat menemukan cara untuk meminimalkan potensi ini, melacak kapan dan bagaimana permukaan serangan berubah, dan apa arti hal ini dari perspektif risiko.

Analisis permukaan serangan membantu Anda mengidentifikasi:

  • Fungsi dan bagian dari sistem yang perlu Anda tinjau dan uji untuk kerentanan keamanan.
  • Area kode berisiko tinggi yang memerlukan perlindungan pertahanan mendalam (bagian dari sistem yang perlu Anda lindungi).
  • Ketika Anda harus mengubah permukaan serangan dan perlu merefresh penilaian ancaman.

Untuk mengurangi peluang penyerang untuk mengeksploitasi titik lemah potensial atau kerentanan, Anda harus menganalisis permukaan serangan aplikasi Anda secara keseluruhan dengan cermat. Hal ini juga termasuk menonaktifkan atau membatasi akses ke layanan sistem, menerapkan prinsip hak istimewa minimum, dan menggunakan pertahanan berlapis jika memungkinkan.

Kita membahas melakukan peninjauan permukaan serangan selama tahap verifikasi SDL.

Catatan

Apa perbedaan antara pemodelan ancaman dan analisis permukaan serangan? Pemodelan ancaman adalah proses mengidentifikasi potensi ancaman keamanan terhadap bisnis dan aplikasi Anda dan memastikan bahwa mitigasi yang tepat telah disiapkan. Analisis permukaan serangan mengidentifikasi area kode berisiko tinggi yang mudah diserang. Analisis ini melibatkan pencarian cara untuk melindungi area berisiko tinggi aplikasi Anda, serta peninjauan dan pengujian pada area kode sebelum Anda menyebarkan aplikasi.

Mengadopsi kebijakan identitas sebagai perimeter keamanan utama

Saat Anda merancang aplikasi cloud, penting bagi Anda untuk memperluas fokus perimeter keamanan dari pendekatan berpusat jaringan hingga pendekatan berpusat identitas. Secara historis, perimeter keamanan lokal utama adalah jaringan organisasi. Sebagian besar desain keamanan lokal menggunakan jaringan sebagai pivot keamanan utama. Untuk aplikasi cloud, Anda lebih baik dilayani dengan mempertimbangkan identitas sebagai perimeter keamanan utama.

Hal-hal yang dapat Anda lakukan untuk mengembangkan pendekatan berpusat identitas untuk mengembangkan aplikasi web, meliputi:

  • Menerapkan autentikasi multifaktor untuk pengguna.
  • Menggunakan platform otorisasi dan autentikasi yang kuat.
  • Menerapkan prinsip hak istimewa minimum.
  • Menerapkan akses just-in-time.

Menerapkan autentikasi multifaktor untuk pengguna

Gunakan otentikasi dua faktor. Otentikasi dua faktor adalah standar saat ini untuk autentikasi dan otorisasi karena proses ini menghindari kelemahan keamanan yang melekat pada jenis autentikasi nama pengguna dan kata sandi. Akses ke antarmuka manajemen Azure (portal Azure/PowerShell jarak jauh) dan ke layanan yang berhadapan dengan pelanggan harus dirancang dan dikonfigurasi untuk menggunakan autentikasi multifaktor Microsoft Entra.

Menggunakan platform otorisasi dan autentikasi yang kuat

Gunakan mekanisme autentikasi dan otorisasi yang disediakan, bukan kode kustom. Hal ini karena mengembangkan kode autentikasi kustom dapat rentan terhadap kesalahan. Kode komersial (misalnya, dari Microsoft) sering ditinjau secara luas untuk keamanan. ID Microsoft Entra (ID Microsoft Entra) adalah solusi Azure untuk manajemen identitas dan akses. Alat dan layanan Microsoft Entra ini membantu pengembangan yang aman:

  • Platform identitas Microsoft adalah sekumpulan komponen yang digunakan pengembang untuk membangun aplikasi dengan proses masuk yang aman untuk pengguna. Platform ini membantu pengembang yang membangun aplikasi penyewa tunggal, lini bisnis (LOB) dan pengembang yang ingin mengembangkan aplikasi multipenyewa. Selain proses masuk dasar, aplikasi yang dibangun dengan menggunakan platform identitas Microsoft dapat memanggil API Microsoft dan API kustom. Platform identitas Microsoft mendukung protokol standar industri seperti OAuth 2.0 dan OpenID Connect.

  • Azure Active Directory B2C (Azure AD B2C) adalah layanan manajemen identitas yang Anda gunakan untuk menyesuaikan dan mengontrol cara pelanggan mendaftar, masuk, dan mengelola profil mereka saat mereka menggunakan aplikasi Anda. Hal ini mencakup aplikasi yang dikembangkan untuk iOS, Android, dan .NET, dll. Azure AD B2C memungkinkan tindakan ini sekaligus melindungi identitas pelanggan.

Menerapkan prinsip hak istimewa terendah

Konsep hak istimewa minimum berarti memberi pengguna tingkat akses dan kontrol yang tepat yang mereka butuhkan untuk melakukan pekerjaan mereka dan tidak lebih.

Apakah pengembang perangkat lunak memerlukan hak admin domain? Apakah asisten administratif memerlukan akses ke kontrol administratif pada komputer pribadi mereka? Ini juga berlaku untuk mengevaluasi akses ke perangkat lunak. Jika Anda menggunakan kontrol akses berbasis peran Azure (Azure RBAC) untuk memberi kemampuan dan otoritas yang berbeda pada pengguna dalam aplikasi, Anda tidak akan memberikan semua akses kepada semua orang. Dengan membatasi akses ke apa yang diperlukan untuk setiap peran, Anda dapat membatasi risiko masalah keamanan yang terjadi.

Pastikan bahwa aplikasi Anda menerapkan hak istimewa minimum di seluruh pola aksesnya.

Catatan

Aturan hak istimewa minimum perlu diterapkan untuk perangkat lunak dan orang yang membuat perangkat lunak. Pengembang perangkat lunak dapat menjadi risiko besar bagi keamanan IT jika mereka diberikan terlalu banyak akses. Konsekuensinya bisa parah jika pengembang memiliki niat jahat atau diberi akses yang terlalu banyak. Sebaiknya terapkan aturan hak istimewa minimum kepada pengembang sepanjang siklus hidup pengembangan.

Menerapkan akses just-in-time

Terapkan akses just-in-time (JIT) untuk lebih menurunkan waktu paparan hak istimewa. Gunakan Microsoft Entra Privileged Identity Management untuk:

  • Memberi pengguna izin secara JIT.
  • Tetapkan peran untuk durasi yang dipersingkat dengan keyakinan bahwa hak istimewa dicabut secara otomatis.

Memerlukan aatentikasi ulang untuk transaksi penting

Pemalsuan permintaan antar situs (juga dikenal sebagai XSRF atau CSRF) adalah serangan terhadap aplikasi yang dihosting web di mana aplikasi web berbahaya mempengaruhi interaksi antara browser klien dan aplikasi web yang mempercayai browser tersebut. Serangan pemalsuan permintaan antar situs mungkin terjadi karena browser web mengirim beberapa jenis token autentikasi secara otomatis dengan setiap permintaan ke situs web. Bentuk eksploitasi ini juga dikenal sebagai serangan satu klik atau penunggangan sesi karena serangan tersebut memanfaatkan sesi yang sebelumnya diautentikasi oleh pengguna.

Cara terbaik untuk melindungi dari serangan semacam ini adalah dengan meminta pengguna untuk sesuatu yang hanya dapat dilakukan pengguna sebelum setiap transaksi penting, seperti pembelian, penonaktifan akun, atau perubahan kata sandi. Anda mungkin meminta pengguna untuk memasukkan kembali kata sandi mereka, menyelesaikan captcha, atau mengirimkan token rahasia yang hanya akan dimiliki pengguna. Pendekatan yang paling umum adalah token rahasia.

Menggunakan solusi manajemen kunci untuk mengamankan kunci, informasi masuk, dan rahasia lainnya

Kehilangan kunci dan informasi masuk adalah masalah umum. Satu-satunya hal yang lebih buruk daripada kehilangan kunci dan kredensial Anda adalah jika ada pihak yang tidak sah dapat mengaksesnya. Penyerang dapat memanfaatkan teknik otomatis dan manual untuk menemukan kunci dan rahasia yang disimpan dalam repositori kode seperti GitHub. Jangan menyimpan kunci dan rahasia dalam repositori kode publik ini atau server lainnya.

Selalu simpan kunci, sertifikat, rahasia, dan string koneksi Anda dalam solusi manajemen kunci. Anda dapat menggunakan solusi terpusat tempat kunci dan rahasia disimpan dalam modul keamanan perangkat keras (HSM). Azure menyediakan HSM di cloud dengan Azure Key Vault untuk Anda.

Key Vault adalah penyimpanan rahasia: yaitu layanan cloud terpusat untuk menyimpan rahasia aplikasi. Key Vault menjaga keamanan data rahasia Anda dengan menyimpan rahasia aplikasi di satu lokasi pusat dan menyediakan akses aman, kontrol izin, dan pengelogan akses.

Rahasia disimpan dalam brankas individu. Setiap brankas memiliki konfigurasi dan kebijakan keamanannya sendiri untuk mengontrol akses. Anda dapat mengakses data Anda melalui REST API atau melalui SDK klien yang tersedia untuk sebagian besar bahasa pemrograman.

Penting

Azure Key Vault dirancang untuk menyimpan rahasia konfigurasi untuk aplikasi server. Aplikasi ini tidak dimaksudkan untuk menyimpan data milik pengguna aplikasi. Hal ini tecermin dalam karakteristik performa, API, dan model biayanya.

Data pengguna harus disimpan di tempat lain, seperti di Instans Azure SQL Database yang memiliki Enkripsi Data Transparan (TDE) atau di akun penyimpanan yang menggunakan Enkripsi Layanan Azure Storage. Rahasia yang digunakan oleh aplikasi Anda untuk mengakses penyimpanan data ini dapat disimpan di Azure Key Vault.

Melindungi data sensitif

Melindungi data adalah bagian penting dari strategi keamanan Anda. Mengklasifikasikan data dan mengidentifikasi kebutuhan perlindungan data akan membantu Anda merancang aplikasi dengan mempertimbangkan keamanan data. Mengklasifikasikan (mengkategorikan) data yang disimpan berdasarkan sensitivitas dan dampak bisnis akan membantu pengembang menentukan risiko yang terkait dengan data.

Beri label semua data yang berlaku sebagai sensitif saat Anda merancang format data Anda. Pastikan bahwa aplikasi memperlakukan data yang berlaku sebagai data sensitif. Praktik berikut dapat membantu Anda melindungi data sensitif Anda:

  • Gunakan enkripsi.
  • Hindari pengkodean permanen rahasia seperti kunci dan kata sandi.
  • Pastikan kontrol akses dan audit telah siap.

Menggunakan enkripsi

Melindungi data harus menjadi bagian penting dari strategi keamanan Anda. Jika data Anda disimpan dalam database atau jika data berpindah bolak-balik di antara lokasi, gunakan enkripsi data tidak aktif (saat berada di database) dan enkripsi data dalam transit (dalam transit ke dan dari pengguna, database, API, atau titik akhir layanan). Sebaiknya selalu gunakan protokol SSL/TLS untuk bertukar data. Pastikan Anda menggunakan TLS versi terbaru untuk enkripsi (saat ini, versi terbaru adalah versi 1.2).

Menghindari pengkodean permanen

Beberapa hal tidak boleh dikode secara permanen dalam perangkat lunak Anda. Beberapa contohnya adalah nama host atau alamat IP, URL, alamat email, nama pengguna, kata sandi, kunci akun penyimpanan, dan kunci kriptografi lainnya. Pertimbangkan untuk menerapkan persyaratan seputar apa yang dapat atau tidak dapat dikodekan secara permanen dalam kode Anda, termasuk di bagian komentar kode Anda.

Saat Anda memasukkan komentar ke dalam kode, pastikan Anda tidak menyimpan informasi sensitif apa pun. Data sensitif ini meliputi alamat email, kata sandi, string koneksi, informasi tentang aplikasi Anda yang hanya akan diketahui oleh seseorang di organisasi Anda, dan apa pun yang mungkin memberi penyerang keuntungan saat menyerang aplikasi atau organisasi Anda.

Pada dasarnya, asumsikan bahwa segala sesuatu dalam proyek pengembangan Anda adalah pengetahuan publik saat disebarkan. Hindari menyertakan data sensitif dalam bentuk apa pun dalam proyek.

Sebelumnya, kita telah membahas Azure Key Vault. Anda dapat menggunakan Key Vault untuk menyimpan rahasia seperti kunci dan kata sandi daripada mengodekannya secara permanen. Saat Anda menggunakan Key Vault yang dikombinasi dengan identitas terkelola untuk sumber daya Azure, aplikasi web Azure Anda dapat mengakses nilai konfigurasi rahasia dengan mudah dan aman tanpa menyimpan rahasia apa pun di kontrol atau konfigurasi sumber Anda. Untuk mempelajari lebih lanjut, lihat Mengelola rahasia di aplikasi server Anda dengan Azure Key Vault.

Menerapkan tindakan fail-safe

Aplikasi Anda harus dapat menangani kesalahan yang terjadi selama eksekusi secara konsisten. Aplikasi harus menangkap semua kesalahan dan fail-safe atau tertutup.

Anda juga harus memastikan bahwa kesalahan dicatat ke dalam log dengan konteks pengguna yang memadai untuk mengidentifikasi aktivitas yang mencurigakan atau berbahaya. Log harus dipertahankan untuk waktu yang cukup untuk memungkinkan analisis forensik yang tertunda. Log harus dalam format yang mudah digunakan oleh solusi manajemen log. Pastikan bahwa pemberitahuan untuk kesalahan yang terkait dengan keamanan dipicu. Pengelogan dan pemantauan yang tidak mencukupi memungkinkan penyerang untuk lebih lanjut menyerang sistem dan menjaga kegigihan.

Manfaatkan penanganan kesalahan dan pengecualian

Menerapkan perbaikan kesalahan dan penanganan pengecualian adalah bagian penting dari pengkodean defensif. Penanganan kesalahan dan pengecualian sangat penting untuk membuat sistem dapat diandalkan dan aman. Kesalahan dalam penanganan kesalahan dapat menyebabkan berbagai jenis kerentanan keamanan, seperti membocorkan informasi kepada penyerang dan membantu penyerang memahami lebih banyak tentang platform dan desain Anda.

Pastikan bahwa:

  • Anda menangani pengecualian dengan cara terpusat untuk menghindari blok try/catch duplikat dalam kode.

  • Semua perilaku tak terduga ditangani di dalam aplikasi.

  • Pesan yang ditampilkan kepada pengguna tidak akan membocorkan data penting tetapi memberikan informasi yang cukup untuk menjelaskan masalah tersebut.

  • Pengecualian dicatat ke dalam log dan bahwa mereka memberikan informasi yang cukup untuk penyelidikan tim forensik atau tanggap insiden.

Azure Logic Apps memberikan pengalaman kelas satu untuk menangani kesalahan dan pengecualian yang disebabkan oleh sistem dependen. Anda dapat menggunakan Azure Logic Apps untuk membuat alur kerja guna mengotomatiskan tugas dan proses yang mengintegrasikan aplikasi, data, sistem, dan layanan di seluruh perusahaan dan organisasi.

Menggunakan pengelogan dan peringatan

Catat masalah keamanan Anda ke dalam log untuk penyelidikan keamanan dan picu pemberitahuan tentang masalah untuk memastikan bahwa orang mengetahui masalah tepat waktu. Aktifkan pengauditan dan pengelogan pada semua komponen. Log audit harus menangkap konteks pengguna dan mengidentifikasi semua peristiwa penting.

Pastikan Anda tidak mencatat data sensitif apa pun yang dikirimkan pengguna ke situs Anda. Contoh data sensitif meliputi:

  • Kredensial Pengguna
  • Nomor Jaminan Sosial atau informasi identifikasi lainnya
  • Nomor kartu kredit atau informasi keuangan lainnya
  • Informasi kesehatan
  • Kunci privat atau data lain yang dapat digunakan untuk mendekripsi informasi terenkripsi
  • Informasi sistem atau aplikasi yang dapat digunakan untuk menyerang aplikasi dengan lebih efektif

Pastikan bahwa aplikasi memantau peristiwa manajemen pengguna seperti proses masuk pengguna yang berhasil dan gagal, atur ulang kata sandi, perubahan kata sandi, penguncian akun, dan pendaftaran pengguna. Pengelogan untuk peristiwa ini membantu Anda mendeteksi dan memberikan respons terhadap perilaku yang berpotensi mencurigakan. Ini juga memungkinkan Anda untuk mengumpulkan data operasi, seperti siapa yang mengakses aplikasi.

Langkah berikutnya

Dalam artikel berikut, kami menyarankan kontrol dan aktivitas keamanan yang dapat membantu Anda merancang, mengembangkan, dan menyebarkan aplikasi yang aman.