Security engineering berkaitan dengan pengembangan dan
evolusi sistem yang bisa menolak serangan-serangan jahat, yang bermaksud untuk
merusak sistem dan data di dalamnya. Isu keamanan telah menjadi prioritas untuk
bisnis maupun individual seiring banyaknya pelaku kriminal mencoba
mengeksploitasi sistem untuk tujuan ilegal. Dalam isu keamanan, kita harus
mempertimbangkan baik perangkat lunak aplikasi maupun infrastruktur dimana
sistem dibangun.
Dalam prakteknya, ada perbedaan utama antara keamanan
aplikasi dan keamanan infrastruktur:
- Keamanan aplikasi adalah masalah pengembangan perangkat lunak dimana pengembang harus memastikan sistem dirancang untuk melawan serangan.
- Keamanan infrastruktur adalah masalah manajemen dimana manajer sistem mengatur infrastruktur utuk melawan serangan.
Manajemen keamanan sistem meliputi:
- Manajemen perizinan dan pengguna, termasuk menambah dan menghilangkan pengguna dari sistem, memastikan mekanisme autentikasi pengguna sudah tepat dan mengatur perizinan dalam sistem sehingga pengguna hanya mempunyai akses pada sumber yang mereka perlukan.
- Pengembangan dan perawatan sistem, termasuk memasang perangkat lunak dan middleware dan mengaturnya dengan baik sehingga keamanan sistem tidak rentan diserang.
- Pemantauan, deteksi dan pemulihan kembali atas serangan.
Manajemen keamanan sangatlah penting, namun jarang
dipertimbangkan sebagai bagian dari penerapan security engineering. Penerapan
security engineering berkaitan dengan merancang sebuah sistem seaman mungkin.
Manajemen Resiko Keamanan
Manajemen resiko ini terkait dengan menilai kerugian yang
mungkin terjadi akibat serangan pada aset dalam sistem dan menyeimbangkan
kerugian tersebut dengan biaya prosedur keamanan yang dapat mengurangi kerugian
tersebut. Manajemen resiko cenderung merupakan isu bisnis daripada isu teknis
sehingga para pengembang sistem tidak harus memutuskan kontrol apa saja yang
harus ada pada sistem. Penilaian resiko dimulai sebelum keputusan untuk membuat
sistem dibuat dan harus berlangsung selama proses pengembangan sistem dan
setelah sistem digunakan. Tahap-tahap proses penilaian resiko adalah sebagai
berikut.
- Preliminary risk assessment: Kebutuhan sistem secara mendetail, rancangan sistem atau teknologi implementasi belum diputuskan pada tahap ini. Tujuan tahap ini adalah untuk memutuskan jika level keamanan yang memadai bisa diperoleh dengan harga yang masuk akal.
- Life-cycle risk assessment: Dilaksanakan selama siklus hidup pengembangan sistem dan berdasarkan pada rancangan teknis sistem dan keputusan implementasi. Hasilnya dapat mengarah pada perubahan kebutuhan keamanan dan penambahan kebutuhan baru
- Operational risk assessment: Kelanjutan penilaian sebelumnya, dimana adanya kebutuhan keamanan baru yang harus diimplementasikan seiring sistem berevolusi.
Rancangan Keamanan
Secara umum sangat sulit untuk menambah fitur keamanan pada
sebuah sistem yang telah diimplementasi. Oleh karena itu, kita perlu menyiapkan
isu keamanan selama proses perancangan sistem. Langkah-langkah keamanan
terkadang mengharuskan pengguna untuk mengingat dan menetapkan informasi
tambahan (contoh: multiple password). Namun terkadang pula pengguna melupakan
informasi ini sehingga pengamanan tambahan berarti mereka tidak bisa
menggunakan sistem. Ada beberapa hal yang harus diperhatikan dalam rancangan
sistem yang aman
1. Desain
arsitektur
Dalam merancang arsitektur sistem yang mampu memelihara
keamanan, kita harus memperhatikan dua hal:
- Perlindungan - bagaimana seharusnya sistem diatur sehingga aset yang penting bisa dilindungi dari serangan eksternal?
- Distribusi - bagaimana seharusnya aset sistem disebarkan sehingga efek serangan yang berhasil bisa dikurangi?
Dua isu ini berpotensi menimbulkan masalah. Jika kita
meletakkan semua aset dalam satu tempat, maka perlindungan berlapis bisa
dibangun disekelilingnya. Karena hanya perlu membangun sistem perlindungan
tunggal, kita bisa memperoleh sistem yang kuat dengan beberapa lapis
perlindungan, namun jika perlindungan tersebut gagal, maka seluruh aset berada
dalam bahaya. Di sisi lain, jika aset disebarkan, biaya untuk melindunginya
akan lebih besar sebab sistem perlindungan harus diimplementasikan pada tiap
unit aset
2. Good
Practice
Ada panduan umum yang mempunyai kemampuan penerapan yang
luas ketika merancang keamanan sistem, dua prinsip penggunaannya adalah:
- Membantu meningkatkan kesadaran akan isu keamanan dalam tim pengembang perangkat lunak
- Dapat digunakan sebagai daftar tinjauan untuk proses validasi sistem.
10 hal di dalam panduan tersebut adalah sebagai berikut.
- Buatlah keputusan keamanan berdasarkan pada kebijakan keamanan eksplisit
- Hindari kegagalan di satu tempat
- Gagal dengan aman
- Seimbangkan keamanan dan usability
- Log user actions
- Gunakan redundansi dan keragaman untuk mengurangi resiko
- Validasi semua input
- Kelompokkan aset
- Desain untuk deployment
- Desain agar bisa dipulihkan kembali
3. Desain
untuk Deployment
Built-in support untuk deployment harus selalu disediakan
untuk mengurangi kemungkinan administrator sistem atau pengguna melakukan
kesalahan ketika mengkonfigurasi sistem. Sommerville menyarankan empat cara
untuk memasukkan deployment support dalam sebuah sistem:
- Masukkan support untuk melihat dan menganalisa konfigurasi
- Minimalisir default privileges
- Tempatkan pengaturan konfigurasi di satu tempat
- Fasilitasi cara mudah untuk memperbaiki kerentanan sistem
Ketahanan Sistem
Keamanan sistem tidak hanya bergantung pada keputusan
internal, namun juga pada keamanan aplikasi eksternal, web services dan
infrastruktur jaringan. Artinya, terlepas dari sebanyak apapun perhatian pada
tingkat keamanan, itu tidak menjamin sebuah sistem bisa melawan serangan
eksternal. Oleh karena itu, kita harus memikirkan bagaimana membuat sebuah
sistem kuat bertahan untuk mengirimkan pelayanan yang esensial kepada pengguna.
Ketahanan sistem merefleksikan kemampuan sebuah sistem untuk
tetap mengirimkan pelayanan maupun proses bisnis yang penting kepada pengguna
yang berhak ketika sedang diserang atau setelah sebagian dari sistem dirusak. Menjaga
ketersediaan pelayanan penting adalah inti dari ketahanan sistem. Menurut
Ellison, ada tiga strategi komplementer dalam mencapai ketahanan:
- Resistance, yaitu menghindari masalah dengan membangun kekuatan sistem untuk melawan serangan
- Recognition, yaitu mendeteksi serangan dan kegagalan serta menaksir akumulasi kerusakan
- Recovery, yaitu membangun kekuatan sistem untuk mengirimkan pelayanan penting ketika sedang diserang dan memulihkan kembali fungsionalitas penuh setelah diserang.
Berikut adalah tahap-tahap analisis agar sistem mampu
bertahan:
- System understanding
- Critical service identification
- Attack simulation
- Survivability analysis
EmoticonEmoticon