KEAMANAN KOMPUTER STUDI KASUS KEAMANAN PADA DATABASE/BASIS DATA Indah Rianita11108010 Tri Hardiyanti 11108964 KELAS 4KA01 UNIVERSITAS GUNADARMA 2011 KATA PENGANTAR Assalammualaikum Wr.Wb Bismillahirrahmaanirrahiim Segala puji dan syukur ke hadirat Allah SWT , karena berkat rahmat dan karunia – Nya kami dapat menyelesaikan tugas makalah ini. Tugas makalah ini dibuat guna menyelesaikan tugas Keamanan Komputer yang diberikan oleh Ibu Dosen kami, Ibu Swelandiah Endah Pratiwi. Adapun judul dari makalah ini yaitu “Keamanan Database”. Walaupun banyak kesulitan dalam hal penyelesaian tugas ini, namun berkat bantuan pihak lain tugas inipun dapat diselesaikan tepat pada waktunya. Akhir kata, hanya kepada Tuhan jualah segalanya dikembalikan dan kami sebagai penulis sadari bahwa makalah ini masih jauh dari sempurna, disebabkan karena berbagai keterbatasan yang kami miliki. Untuk itu kami mengharapkan kritik dan saran yang bersifat membangun untuk menjadi perbaikan di masa yang akan datang. Wassalamu’laikum Wr. Wb. Depok, Desember 2011 Penulis 2 1. Basis Data (Database) Basis data adalah suatu koleksi data computer yang terintegrasi, diorganisasikan dan disimpan dengan suatu cara yang memudahkan pengambilan kembali. Integrasi logis dari record-record dalam banyak file ini disebut konsep database yang bertujuan untuk meminimumkan pengulangan data (duplikasi data artinya data yang sama disimpan dalam beberapa file) dan mencapai independensi data (kemampuan untuk membuat perubahan dalam struktur data tanpa membuat perubahan pada program yang memproses data). Basis data dapat juga diartikan sebagai kumpulan informasi yang disimpan didalam computer secara sistematik sehingga dapat diperiksa menggunakan suatu program computer untuk memperoleh informasi dari basis data tersebut. Perangkat lunak yang digunakan untuk mengelola dan memanggil query basis data disebut system management basis data (DBMS). Hirarki data dalam konsep system database yaitu database, file, record dan eleman data. Penyalahgunaan Database : 1. Tidak disengaja, jenisnya : a. kerusakan selama proses transaksi b. anomali yang disebabkan oleh akses database yang konkuren c. anomali yang disebabkan oleh pendistribuasian data pada beberapa komputer d. logika error yang mengancam kemampuan transaksi untuk mempertahankan konsistensi database. 2. Disengaja, jenisnya : a. Pengambilan data / pembacaan data oleh pihak yang tidak berwenang. b. Pengubahan data oleh pihak yang tidak berwenang. c. Penghapusan data oleh pihak yang tidak berwenang. Tingkatan Pada Keamanan Database : 1. Fisikal lokasi-lokasi dimana terdapat sistem komputer haruslah aman secara fisik terhadap serangan perusak. 2. Manusia wewenang pemakai harus dilakukan dengan berhati-hati untuk mengurangi kemungkinan adanya manipulasi oleh pemakai yang berwenang 3. Sistem Operasi Kelemahan pada SO ini memungkinkan pengaksesan data oleh pihak tak berwenang, karena hampir seluruh jaringan sistem database menggunakan akses jarak jauh. 4. Sistem Database Pengaturan hak pemakai yang baik. 3 2. Keamanan Database Keamanan merupakan suatu proteksi terhadap pengerusakan data dan pemakaian data oleh pemakai yang tidak punya kewenangan. Untuk menjaga keaman an Basis Data dapat dengan: (1) Penentuan perangkat lunak database server yang handal (2) Pemberian otoritas kepada user mana saja yang berhak mengakses, serta memanipulasi data-data yang ada. a. Otorisasi : Pemberian Wewenang atau hak istimewa (priviledge) untuk mengakses sistem atau obyek database Kendali otorisasi (=kontrol akses) dapat dibangun pada perangkat lunak dengan 2 fungsi : Mengendalikan sistem atau obyek yang dapat diakses Mengendalikan bagaimana pengguna menggunakannya Sistem administrasi yang bertanggungjawab untuk memberikan hak akses dengan membuat account pengguna. b. Tabel View : Merupakan metode pembatasan bagi pengguna untuk mendapatkan model database yang sesuai dengan kebutuhan perorangan. Metode ini dapat menyembunyikan data yang tidak digunakan atau tidak perlu dilihat oleh pengguna. Contoh pada Database relasional,untuk pengamanan dilakukan beberapa level: 1. Relasi pengguna diperbolehkan atau tidak diperbolehkan mengakses langsung suatu relasi 2. View pengguna diperbolehkan atau tidak diperbolehkan mengakses data yang terapat pada view 3. Read Authorization pengguna diperbolehkan membaca data, tetapi tidak dapat memodifikasi. 4. Insert Authorization pengguna diperbolehkan menambah data baru, tetapi tidak dapat memodifikasi data yang sudah ada. 5. Update Authorization pengguna diperbolehkan memodifikasi data, tetapi tidak dapat menghapus data. 6. Delete Authorization pengguna diperbolehkan menghapus data. Untuk Modifikasi data terdapat otorisasi tambahan : 1. Index Authorization pengguna diperbolehkan membuat dan menghapus index data. 2. Resource Authorization pengguna diperbolehkan membuat relasi-relasi baru. 3. Alteration Authorization pengguna diperbolehkan menambah/menghapus atribut suatu relasi. 4. Drop Authorization pengguna diperbolehkan menghapus relasi yang sudah ada. Contoh perintah menggunakan SQL : 4 GRANT : memberikan wewenang kepada pemakai Syntax : GRANT <priviledge list> ON <nama relasi/view> TO <pemakai> Contoh : GRANT SELECT ON S TO BUDI GRANT SELECT,UPDATE (STATUS,KOTA) ON S TO ALI,BUDI REVOKE : mencabut wewenang yang dimiliki oleh pemakai Syntax : REVOKE <priviledge list> ON <nama relasi/view> FROM <pemakai> Contoh : REVOKE SELECT ON S TO BUDI REVOKE SELECT,UPDATE (STATUS,KOTA) ON S TO ALI,BUDI Priviledge list : READ, INSERT, DROP, DELETE, INEX, ALTERATION, RESOURCE c. Backup data dan recovery : Backup : proses secara periodik untuk mebuat duplikat ari database dan melakukan logging file (atau program) ke media penyimpanan eksternal. Jurnaling : proses menyimpan dan mengatur log file dari semua perubahan yang dibuat di database untuk proses recovery yang efektif jika terjadi kesalahan. Isi Jurnal : Record transaksi 1. Identifikasi dari record 2. Tipe record jurnal (transaksi start, insert, update, delete, abort, commit) 3. Item data sebelum perubahan (operasi update dan delete) 4. Item data setelah perubahan (operasi insert dan update) 5. Informasi manajemen jurnal (misal : pointer sebelum dan record jurnal selanjutnya untuk semua transaksi Record checkpoint : suatu informasi pada jurnal untuk memulihkan database dari kegagalan, kalau sekedar redo, akan sulit penyimpanan sejauh mana jurnal untuk mencarinya kembali, maka untuk membatasi pencarian menggunakan teknik ini. Recovery : merupakan upaya uantuk mengembalikan basis data ke keadaaan yang dianggap benar setelah terjadinya suatu kegagalan. 5 Jenis Pemulihan : 1. Pemulihan terhadap kegagalan transaksi : Kesatuan prosedur alam program yang dapat mengubah / memperbarui data pada sejumlah tabel. 2. Pemulihan terhadap kegagalan media : Pemulihan karena kegagalan media dengan cara mengambil atau memuat kembali salinan basis data (backup) 3. Pemulihan terhadap kegagalan sistem : Karena gangguan sistem, hang, listrik terputus alirannya. Fasilitas pemulihan pada DBMS : 1. Mekanisme backup secara periodik 2. fasilitas logging dengan membuat track pada tempatnya saat transaksi berlangsung dan pada saat database berubah. 3. fasilitas checkpoint, melakukan update database yang terbaru. 4. manager pemulihan, memperbolehkan sistem untuk menyimpan ulang database menjadi lebih konsisten setelah terjadinya kesalahan. Teknik Pemulihan : 1. defered upate / perubahan yang ditunda : perubahan pada DB tidak akan berlangsung sampai transaksi ada pada poin disetujui (COMMIT). Jika terjadi kegagalan maka tidak akan terjadi perubahan, tetapi diperlukan operasi redo untuk mencegah akibat dari kegagalan tersebut. 2. Immediate Upadate / perubahan langsung : perubahan pada DB akan segera tanpa harus menunggu sebuah transaksi tersebut disetujui. Jika terjadi kegagalan diperlukan operasi UNDO untuk melihat apakah ada transaksi yang telah disetujui sebelum terjadi kegagalan. 3. Shadow Paging : menggunakan page bayangan imana paa prosesnya terdiri dari 2 tabel yang sama, yang satu menjadi tabel transaksi dan yang lain digunakan sebagai cadangan. Ketika transaksi mulai berlangsung kedua tabel ini sama dan selama berlangsung tabel transaksi yang menyimpan semua perubahan ke database, tabel bayangan akan digunakan jika terjadi kesalahan. Keuntungannya adalah tidak membutuhkan REDO atau UNDO, kelemahannya membuat terjadinya fragmentasi. d. Kesatuan data dan Enkripsi : Enkripsi : keamanan data Integritas :metode pemeriksaan dan validasi data (metode integrity constrain), yaitu berisi aturan-aturan atau batasan-batasan untuk tujuan terlaksananya integritas data. Konkuren : mekanisme untuk menjamin bahwa transaksi yang konkuren pada database multi user tidak saling menganggu operasinya masing-masing. Adanya penjadwalan proses yang akurat (time stamping). e. Tujuan Keamanan Basis Data Secrecy/Confidentiality: Informasi tidak boleh diungkapkan kepada pengguna yang tidak sah. Sebagai contoh, mahasiswa seharusnya tidak diperbolehkan untuk memeriksa nilai siswa lainnya. 6 Integrity: Hanya pengguna yang berwenang harus diizinkan untuk memodifikasi data. Sebagai contoh, siswa mungkin diperbolehkan untuk melihat nilai mereka, namun tidak diperbolehkan (jelas) untuk memodifikasi mereka. Availability: Pengguna yang terdaftar tidak boleh ditolak akses. Sebagai contoh, seorang instruktur yang ingin mengubah kelas harus diizinkan untuk melakukannya f. Ancaman terhadap Keamanan Database Interuption: Sumber daya basis data dirusak atau menjadi tidak dapat dipakai (ancaman terhadap availability). Interception: Pemakai atau bagian yang tidak berhak mengakses sumber daya basis data (ancaman secrecy). Modification: Pemakai atau bagian yang tidak berhak tidak hanya mengakses tapi juga merusak sumber daya sistem komputer (ancaman integrity). Fabrication: Pemakai atau bagian yang tidak berhak menyisipkan objek palsu kedalam sistem (ancaman integrity). 3. Studi Kasus Keamanan Database 3.1.Pengertian Stored Prosedure Stored Prosedure adalah program yang disimpan dalam data base seperti halnya data. Hal ini sebenarnya cukup tidak umum, karena kita mengharapkan yang disimpan dalam database adalah data bukan program. Dengan adanya Store Procedure, maka program SQL yang telah kita buat : a. Dapat digunakan kapanpun Seperti halnya pembuatan prosedur pada C++ / Pascal / Java atau pemrograman yang lain, apabila pembuatan program bersifat modular (dibuat kecil untuk setiap maksud/tujuan), akan lebih baik apabila pemrograman tesebut menggunakan banyak prosedur. Dengan dibuat terpisah, kapanpun diinginkan, hanya tinggal memanggil program tersebut. b. Lebih cepat dan efisien Untuk program yang besar, pembuatan program Server Side, terasa lebih mudah dibandingkan Client Side. Dengan Server Side, program lebih bersifat Netral terhadap semua aplikasi. Disisi Programer, ia tidak perlu mengetahui terlalu mendalam terhadap suatu program aplikasi seperti VB, Delphi, Java , 7 C++ Builder, PHP, ASP, J2ME, WAP, SMS dsb. karena tugas–tugas tersebut sebenarnya dapat dilakukan oleh Server (dalam hal ini SQL Server) sedangkan aplikasi lainnyahanya untuk User interface/tampilan belaka, yang hanya berfungsi untuk menampilkan data, memasukkan data, serta memberikan parameter-parameter yang dibutuhkan oleh server untuk menghapus , mengubah, skeduling, backup dan sebagainya. Sedangkan program yang sesungguhnya berada pada Server tersebut. c. Mudah dibuat dan dirawat karena kecil tapi ‘Power Full’ Stored Procedure juga memiliki beberapa keunggulan dari beberapa aspek, yaitu: Kinerja 1. Execution plan pada stored procedure sudah dibuat pada saat procedure itu dikompilasi jadi hanya terjadi 1 kali. Berbeda dengan adhoc query terutama dengan query tanpa parameter (tanpa simbol @). Query adhoc dikompilasi (dibuat parse tree dan query tree) secara realtime, terutama jika query tersebut tidak ada di procedure cache. 2. Stored procedure dapat dipin(ditandai) di memori. Artinya sebuah Stored procedure dapat dipaksa untuk tetap berada di memori fisik meskipun dbms membutuhkan memori tambahan. Akibatnya operasi swaping in & swapping out Stored procedure dapat diminimalkan terutama untuk Stored procedure yang sering dipakai. Sebagai catatan dengan harga memori yang makin murah (relatif dalam US $) maka opsi pin ini semakin atraktif 3. Stored procedure dapat digunakan untuk membatasi jumlah record yang dikirim ke client. Hal ini dapat mengurangi beban jaringan. Hal ini akan sangat mempercepat karena bottle neck utama di applikasi database terletak di jaringan. 4. Stored procedure terletak di DBMS sehingga untuk proses yang membutuhkan data banyak, round trip untuk permintaan data sampai data itu diterima dapat ditiadakan. Transparansi dan scolabilitas Kemanan 8 Stored procedure mencegah terjadinya SQL injection. SQL injenction dalah sebuah aksi hacking yang dilakukan di aplikasi client dengan cara memodifikasi perintah SQL yang ada di memori aplikasi client. Statement sql bukanlah bahasa pemrograman seperti pascal,Delphi atau visual basic. Statemen sql biasanya digunakan bersama sama dengan bahasa pemrograman lain pada saat mengakses database. Untuk mencocokan user yang login, maka digunakan statemen sql yang kurang lebih sebagai berikut: Select * from admin where username = input_username And password = input_password Sebagai contoh apabila penulis sebagai administrator dengan username = administrator dan password = admin bermaksud login maka sql statemennya sebagai berikut Select * from admin where username = ‘administrator’ and Password = ‘admin’ Dapat dipastikan bahwa apabila field username terdapat record administrator dengan filed password terdapat admin, penulis dapat melewati proteksi dan masuk kehalaman berikutnya ,akan tetapi apabila sebaliknya ,maka akan keluar pesan kesalahan yang kurang lebih isinya kita tidak dapat masuk ke halaman berikutnya. Statemen SQL jika penulis memasukkan input ‘or”=’ pada username dan pasword: Select * from admin where username = ‘’ or ‘’ = ‘’ and Password = ‘’ or ‘’=’’ Logika OR menyebabkan statement membalikan nilai false jadi true sehingga kita dapat masuk sebagai user yang terdapat pada record pertama dalam table admin ( record pertama biasanya administrator) , dan bagaimana kalo kita hanya mengetahui username saja tapi passwordnya tidak , misalkan username = administrator , caranya cukup sederhana , pada text box tempat menginput username isi dengan “administrator’—“ sedangkan pada textbox password boleh diisi sembarang misalkan ‘ or ‘’=’ maka statement sql akan berubah menjadi 9 Select * from admin where username = ‘ administrator ‘—“ And password = ‘’ or ‘’=’’ Cara untuk mencegah dari SQL injection adalah menggunakan srored procedure yang mempunyai parameter. Penggunaan parameter tersebut untuk memastikan nilai input sudah dicek tipe dan panjangnya. Parameter juga diberlakukan untuk menjamin sebagai nilai yang aman dan bukan kode yang dapat dieksekusi dalam database. Jika tidak dapat menggunakan stored procedures, sebaiknya menggunakan SQL statement dengan parameter. Jangan pernah membangun SQL statement dengan langsung memasukkan nilai input dalam SQL command. Pastikan aplikasi memberikan hak akses ke database seperlunya saja. Hak akses stored procedure terhadap data di database bergantung pada hak akses pembuatnya bukan bergantung pada hak akses pengguna stored procedure. Hal ini memungkinkan user applikasi untuk tidak diberi hak akses terhadap semua tabel yang ada namun diberi hak akses untuk menjalankan stored procedure. Akibat penggunaan mekanisme ini adalah enforcement terhadap aktifitas user (select, inser, update, delete) tersentralisasi bahkan untuk applikasi seperti query analyzer tidak akan dapat digunakan untuk mengakses data secara tidak sah. Penggunaan stored procedure mendukung penggunaan application role. Application role adalah sebuah role di SQL server 2k dimana role ini tidak memiliki pengguna. Mekanisme ini merupakan mekanisme standard yang disarankan oleh Microsoft untuk membuat applikasi database berbasis SQL server 2k. Keunggulan penggunaan application role ini adalah dengan menggunakannya maka hanya app kita yang dapat mengakses database applikasi lain tidak dapat kecuali user memakai login yang berrole sysadmin. Perlindungan hak cipta. stored procedure dapat dienkript sehingga proses tidak dapat dibajak orang dengan mudah. Memungkinkan manual audit yang sangat baik. Manual audit didefinisikan sebagai audit dimana mekanisme pencatatan log dilakukan oleh applikasi bukan dbms. Memang manual audit dapat dilakukan tanpa penggunaan stored procedure namun manual audit dapat dibypass misalkan dengan menggunakan query analyzer. Dengan stored 10 procedure dan fasilitas application role maka mekanisme manual audit dapat dienforce setiap saat. Fleksibilitas terhadap perubahan proses bisnis Stored procedure tersimpan di server. Modifikasi mudah dilakukan dan dengan cepat. Ekonomi Stored procedure menyediakan 1 pintu masuk untuk proses data entri. Applikasi client tinggal mengaksesnnya. Stored procedure dibuat 1 kali dan dapat diakses oleh applikasi client yang berbeda-beda. Efesien dan murah 11 DAFTAR PUSTAKA http://docs.google.com/viewer?a=v&q=cache:KAfpJxKqtp4J:mapbigi.files.wordpress.com/2 009/08/keamanan-data-dan-metodaenkripsi.doc+metoda+keamanan+data&hl=id&gl=id&pid=bl&srcid=ADGEESiLZRxyyrKX MjdgnT415O7XQwrcbUVKWIe91iEgAw8vgKSn_dPqiRsAmlRzvPwMHYleFxUy_It3S4b GgbOV9fm0BzR7cnAOswAhmVJYzgRJz2uvH3v8xlDx4XVvmNZJz5_wb41&sig=AHIEtb Qn4UAHvIKvmF90hRv6r-cy-gknRQ http://swelandiah.staff.gunadarma.ac.id/Downloads http://blog.uad.ac.id/maratul/category/basis-data/ 12