Keamanan Database

advertisement
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
Download