Bagikan melalui


Mengembangkan aplikasi aman di Azure

Dalam artikel ini, kami menyajikan aktivitas dan kontrol keamanan untuk dipertimbangkan saat Anda mengembangkan aplikasi untuk cloud. Pertanyaan dan konsep keamanan yang perlu dipertimbangkan selama fase implementasi dan verifikasi Siklus Hidup Pengembangan Keamanan Microsoft (SDL) tercakup. Tujuannya adalah untuk membantu Anda menentukan aktivitas dan layanan Azure yang dapat Anda gunakan untuk mengembangkan aplikasi yang lebih aman.

Tahap SDL berikut tercakup dalam artikel ini:

  • Implementation
  • Verification

Implementation

Fokus fase implementasi adalah menetapkan praktik terbaik untuk pencegahan dini dan mendeteksi dan menghapus masalah keamanan dari kode. Asumsikan bahwa aplikasi Anda digunakan dengan cara yang tidak ingin Anda gunakan. Ini membantu Anda melindungi aplikasi Anda dari penyalahgunaan yang tidak disengaja maupun disengaja.

Melakukan tinjauan kode

Sebelum Anda memeriksa kode, lakukan tinjauan kode untuk meningkatkan kualitas kode secara keseluruhan dan mengurangi risiko pembuatan bug. Anda dapat menggunakan Visual Studio untuk mengelola proses peninjauan kode.

Melakukan analisis kode statis

Analisis kode statis (juga dikenal sebagai analisis kode sumber) dilakukan sebagai bagian dari tinjauan kode. Analisis kode statis umumnya mengacu pada menjalankan alat analisis kode statis untuk menemukan potensi kerentanan dalam kode nonrunning. Analisis kode statis menggunakan teknik seperti pemeriksaan taint dan analisis aliran data.

Azure Marketplace menawarkan alat pengembang yang melakukan analisis kode statis dan membantu tinjauan kode.

Memvalidasi dan membersihkan setiap input untuk aplikasi Anda

Perlakukan semua input sebagai tidak tepercaya untuk melindungi aplikasi Anda dari kerentanan aplikasi web yang paling umum. Data yang tidak tepercaya adalah sarana untuk serangan injeksi. Input untuk aplikasi Anda mencakup parameter di dalam URL, input dari pengguna, data dari database atau dari API, dan apa pun yang diteruskan yang dapat dimanipulasi oleh pengguna. Aplikasi harus memvalidasi bahwa data secara sintetis dan valid secara semantik sebelum aplikasi menggunakan data dengan cara apa pun (termasuk menampilkannya kembali kepada pengguna).

Validasi input awal dalam aliran data untuk memastikan bahwa hanya data yang terbentuk dengan benar yang memasuki alur kerja. Anda tidak ingin data cacat bertahan di database Anda atau memicu kerusakan dalam komponen hilir.

Daftar blokir dan daftar izin adalah dua pendekatan umum untuk melakukan validasi sintaks input:

  • Pemblokiran mencoba memeriksa bahwa input pengguna tertentu tidak berisi konten yang sudah diketahui berbahaya.

  • Allowlisting berusaha memverifikasi apakah input pengguna tertentu cocok dengan sekumpulan input yang sudah dikenal baik. Daftar izin berbasis karakter adalah bentuk daftar izin di mana aplikasi memeriksa bahwa input pengguna hanya berisi karakter "baik yang diketahui" atau input yang cocok dengan format yang diketahui.

    Misalnya, ini mungkin melibatkan pemeriksaan bahwa nama pengguna hanya berisi karakter alfanumerik atau berisi tepat dua angka.

Allowlisting adalah pendekatan yang lebih disukai untuk membangun perangkat lunak yang aman. Daftar blokir rentan terhadap kesalahan karena tidak mungkin untuk memikirkan daftar lengkap input yang berpotensi buruk.

Lakukan pekerjaan ini di server, bukan di sisi klien (atau di server dan di sisi klien).

Memverifikasi output aplikasi Anda

Output apa pun yang Anda sajikan baik secara visual maupun dalam dokumen harus selalu dikodekan dan diloloskan. Penyesatan, juga dikenal sebagai pengodean output, digunakan untuk membantu memastikan bahwa data yang tidak tepercaya tidak digunakan sebagai media untuk serangan injeksi. Melarikan diri, dikombinasikan dengan validasi data, memberikan pertahanan berlapis untuk meningkatkan keamanan sistem secara keseluruhan.

Melarikan diri memastikan bahwa semuanya ditampilkan sebagai output. Melarikan diri juga memungkinkan penerjemah tahu bahwa data tidak dimaksudkan untuk dijalankan, dan ini mencegah serangan berfungsi. Ini adalah teknik serangan umum lainnya yang disebut scripting lintas situs (XSS).

Jika Anda menggunakan kerangka kerja web dari pihak ketiga, Anda dapat memverifikasi opsi Anda untuk pengkodean keluaran di situs web dengan menggunakan panduan pencegahan OWASP XSS.

Menggunakan kueri berparameter saat Anda menghubungi database

Jangan pernah membuat kueri database secara langsung dalam kode Anda dan mengirimkannya langsung ke database. Kode berbahaya yang dimasukkan ke dalam aplikasi Anda berpotensi menyebabkan database Anda dicuri, dihapus, atau dimodifikasi. Aplikasi Anda juga dapat digunakan untuk menjalankan perintah sistem operasi berbahaya pada sistem operasi yang menghosting database Anda.

Sebagai gantinya, gunakan kueri berparameter atau prosedur tersimpan. Saat Anda menggunakan kueri berparameter, Anda dapat memanggil prosedur dari kode Anda dengan aman dan meneruskannya string tanpa khawatir bahwa itu akan diperlakukan sebagai bagian dari pernyataan kueri.

Menghapus header server standar

Header seperti Server, X-Powered-By, dan X-AspNet-Version mengungkapkan informasi tentang server dan teknologi yang mendasar. Sebaiknya Anda menyembunyikan header ini untuk menghindari pelacakan aplikasi. Lihat menghapus header server standar di situs web Azure.

Memisahkan data produksi Anda

Data produksi Anda, atau data "nyata", tidak boleh digunakan untuk pengembangan, pengujian, atau tujuan lain selain apa yang dimaksudkan bisnis. Himpunan data tertutup (dianonimkan) harus digunakan untuk semua pengembangan dan pengujian.

Ini berarti lebih sedikit orang yang memiliki akses ke data nyata Anda, yang mengurangi permukaan serangan Anda. Ini juga berarti lebih sedikit karyawan melihat data pribadi, yang menghilangkan potensi pelanggaran dalam kerahasiaan.

Menerapkan kebijakan kata sandi yang kuat

Untuk bertahan dari tebakan berbasis brute-force dan kamus, Anda harus menerapkan kebijakan kata sandi yang kuat untuk memastikan bahwa pengguna membuat kata sandi yang kompleks (misalnya, panjang minimum 12 karakter dan membutuhkan karakter alfanumerik dan khusus).

MICROSOFT Entra External ID di penyewa eksternal membantu Anda dengan manajemen kata sandi, dengan menyediakan pengaturan ulang kata sandi mandiri dan banyak lagi.

Untuk melindungi dari serangan pada akun default, verifikasi bahwa semua kunci dan kata sandi dapat diganti dan dibuat atau diganti setelah Anda menginstal sumber daya.

Jika aplikasi harus membuat kata sandi secara otomatis, pastikan bahwa kata sandi yang dihasilkan acak dan memiliki entropi tinggi.

Memvalidasi unggahan file

Jika aplikasi Anda mengizinkan pengunggahan file, pertimbangkan tindakan pencegahan yang dapat Anda ambil untuk aktivitas berisiko ini. Langkah pertama dalam banyak serangan adalah mendapatkan beberapa kode berbahaya ke dalam sistem yang sedang diserang. Menggunakan unggahan file membantu penyerang menyelesaikan ini. OWASP menawarkan solusi untuk memvalidasi file untuk memastikan bahwa file yang Anda unggah aman.

Perlindungan antimalware membantu mengidentifikasi dan menghapus virus, spyware, dan perangkat lunak berbahaya lainnya. Anda dapat menginstal Microsoft Antimalware atau solusi perlindungan titik akhir mitra Microsoft (Trend Micro, Broadcom, McAfee, Antivirus Pertahanan Microsoft di Windows, dan Perlindungan Titik Akhir).

Microsoft Antimalware mencakup fitur seperti perlindungan real time, pemindaian terjadwal, remediasi malware, pembaruan tanda tangan, pembaruan mesin, pelaporan sampel, dan pengumpulan peristiwa pengecualian. Anda dapat mengintegrasikan Microsoft Antimalware dan solusi mitra dengan Pertahanan Microsoft untuk Cloud untuk kemudahan dalam penyebaran dan deteksi bawaan (pemberitahuan dan insiden).

Jangan cache konten sensitif

Jangan cache konten sensitif di browser. Peramban dapat menyimpan informasi dalam cache dan riwayat. File yang di-cache disimpan dalam folder seperti folder File Internet Sementara, dalam kasus Internet Explorer. Ketika halaman-halaman ini dirujuk lagi, browser menampilkan halaman dari cache-nya. Jika informasi sensitif (alamat, detail kartu kredit, Nomor jaminan sosial, nama pengguna) ditampilkan kepada pengguna, informasi mungkin disimpan di cache browser dan dapat diambil dengan memeriksa cache browser atau dengan menekan tombol Kembali browser.

Verification

Fase verifikasi melibatkan upaya komprehensif untuk memastikan bahwa kode memenuhi tenet keamanan dan privasi yang ditetapkan pada fase sebelumnya.

Menemukan dan memperbaiki kerentanan dalam dependensi aplikasi Anda

Anda memindai aplikasi dan pustaka dependennya untuk mengidentifikasi komponen rentan yang diketahui. Produk yang tersedia untuk melakukan pemindaian ini termasuk OWASP Dependency Check, Snyk, dan Black Duck.

Menguji aplikasi Anda dalam status operasi

Pengujian keamanan aplikasi dinamis (DAST) adalah proses pengujian aplikasi dalam status operasi untuk menemukan kerentanan keamanan. Alat DAST menganalisis program saat dijalankan untuk menemukan kerentanan keamanan seperti kerusakan memori, konfigurasi server yang tidak aman, pembuatan skrip lintas situs, masalah hak istimewa pengguna, injeksi SQL, dan masalah keamanan penting lainnya.

DAST berbeda dengan pengujian keamanan aplikasi statis (SAST). Alat SAST menganalisis kode sumber atau versi kode yang dikompilasi saat kode tidak dijalankan untuk menemukan kelemahan keamanan.

Lakukan DAST, sebaiknya dengan bantuan profesional keamanan ( penguji penetrasi atau penilai kerentanan). Jika profesional keamanan tidak tersedia, Anda dapat melakukan DAST sendiri dengan pemindai proksi web dan beberapa pelatihan. Colokkan pemindai DAST lebih awal untuk memastikan bahwa Anda tidak memperkenalkan masalah keamanan yang jelas ke dalam kode Anda. Lihat situs OWASP untuk daftar pemindai kerentanan aplikasi web.

Melakukan pengujian fuzz

Dalam pengujian fuzz, Anda menginduksi kegagalan program dengan sengaja memperkenalkan data cacat atau acak ke aplikasi. Mendorong kegagalan program membantu mengungkapkan potensi masalah keamanan sebelum aplikasi dirilis.

Deteksi Risiko Keamanan adalah layanan pengujian fuzz unik Microsoft untuk menemukan bug penting keamanan dalam perangkat lunak.

Melakukan tinjauan permukaan serangan

Meninjau permukaan serangan setelah penyelesaian kode membantu memastikan bahwa setiap perubahan desain atau implementasi pada aplikasi atau sistem telah dipertimbangkan. Ini membantu memastikan bahwa vektor serangan baru yang dibuat sebagai akibat dari perubahan, termasuk model ancaman, telah ditinjau dan dimitigasi.

Anda dapat membangun gambar permukaan serangan dengan memindai aplikasi. Microsoft menawarkan alat analisis permukaan serangan yang disebut Attack Surface Analyzer. Anda dapat memilih dari banyak alat atau layanan pengujian dan pemindaian kerentanan dinamis komersial, termasuk Detektor Permukaan Serangan OWASP, Arachni, dan w3af. Alat pemindaian ini menelusuri aplikasi Anda dan memetakan serta mengidentifikasi bagian-bagian aplikasi yang dapat diakses melalui web. Anda juga dapat mencari Azure Marketplace untuk alat pengembang serupa.

Melakukan pengujian penetrasi keamanan

Memastikan bahwa aplikasi Anda aman sama pentingnya dengan menguji fungsionalitas lainnya. Jadikan pengujian penetrasi sebagai bagian standar dari proses build dan penyebaran. Jadwalkan pengujian keamanan reguler dan pemindaian kerentanan pada aplikasi yang disebarkan, dan pantau port, titik akhir, dan serangan terbuka.

Menjalankan pengujian verifikasi keamanan

Azure Tenant Security Solution (AzTS) dari Secure DevOps Kit for Azure (AzSK) berisi SVT untuk beberapa layanan platform Azure. Anda menjalankan SVT ini secara berkala untuk memastikan bahwa langganan Azure Anda dan berbagai sumber daya yang terdiri dari aplikasi Anda dalam keadaan aman. Anda juga dapat mengotomatiskan pengujian ini dengan menggunakan fitur ekstensi integrasi berkelanjutan/penyebaran berkelanjutan (CI/CD) AzSK, yang membuat SVT tersedia sebagai ekstensi Visual Studio.

Langkah berikutnya

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