Keamanan Basis Data

 

Keamanan basis data adalah suatu upaya untuk menjaga informasi penting agar tidak jatuh ke tangan yang salah. Data yang disimpan pada basis data seharusnya hanya bisa diakses oleh pihak-pihak yang memiliki wewenang (credentials) seperti administrator sistem. Jika data bocor atau diakses pihak yang tidak berwenang, maka dapat menimbulkan banyak masalah seperti penipuan, pencurian identitas, dan perusakan reputasi. Beberapa ancaman terhadap basis data misalnya: pencurian data oleh hacker, virus atau malware, SQL injection, penyalahgunaan akses oleh karyawan internal, dan kelalaian pengguna sehingga tidak sengaja membocorkan data.

Pengelolaan wewenang atau hak akses (selanjutnya disebut credentials) basis data biasanya menggunakan level administrator, user, dan guest. Administrator umumnya memegang semua kendali terhadap basis data termasuk membuat atau menghapus field, record, tabel atau bahkan database itu sendiri. Akun administrator mestinya hanya dipegang oleh satu orang saja. User umumnya dapat melihat, menambahkan atau menghapus record yang diijinkan. Sedangkan guest umumnya hanya dapat melihat data/record dan menyortir tampilan menurut urutan tertentu (sangat dibatasi).

Untuk melindungi data dari akses yang tidak sah dan resiko kehilangan data, dapat dilakukan beberapa hal:

  1. Menggunakan kata sandi yang kuat. Terdiri dari kombinasi huruf, angka, dan simbol/karakter khusus
  2. Enkripsi. Mengubah data menjadi kode tertentu agar tidak bisa mudah dibaca pihak yang tidak berwenang
  3. Firewall dan antivirus. Melindungi sistem dari serangan luar.
  4. Backup data. Menyimpan salinan data secara rutin untuk mengantisipasi gangguan dan kehilangan data.

Enkripsi adalah proses mengubah data asli menjadi bentuk yang tidak dapat dibaca oleh siapa pun kecuali oleh orang yang memiliki "kunci" untuk membacanya. Data yang tidak dienkripsi bisa dengan mudah diakses dan dimanfaatkan oleh pihak yang tidak bertanggung jawab. Misalnya, jika data login dikirim melalui internet tanpa enkripsi, siapa pun yang menyadap koneksi bisa melihat informasi pribadi seperti username, dan password. Tapi jika data dienkripsi, hasil sadapan hanya akan menampilkan kode aneh yang tidak bisa dibaca/tidak memiliki arti.

Secara sederhana, cara kerja enkripsi adalah sebagai berikut:

  1. Proses enkripsi: Data asli (misalnya: Nilai Andi adalah ‘90’) diubah menggunakan algoritma khusus menjadi bentuk acak (misalnya: "hs74@!K#9L").
  2. Pengiriman data: Data yang sudah diacak ini dikirim ke tujuan (misalnya ke basis data/sistem sekolah).
  3. Proses dekripsi: Saat akan ditampilkan, sistem yang memiliki "kunci" enkripsi akan mengubah data kembali ke bentuk semula agar bisa dibaca pada halaman aplikasi.

Terdapat dua jenis enkripsi yang biasa digunakan dalam keamanan data:

  1. Simetris. “Kunci” yang digunakan pada proses enkripsi dan dekripsi sama. Contohnya AES, Blowfish, Twofish, DES.
  2. Asimetris. Menggunakan dua “kunci” yang berbeda, satu untuk enkripsi (kunci publik), dan satu untuk dekripsi (kunci privat). Contohnya RSA dan ECC.


Selain jenis enkripsi, dalam konteks keamanan data ada istilah hash / hashing, yaitu cara menjaga informasi penting. Dalam konteks keamanan data, hashing digunakan sebagai mekanisme perlindungan satu arah untuk menjaga integritas dan kerahasiaan informasi penting—terutama kata sandi dan data sensitif. Diantara fungsi hashing antara lain digunakan dalam:

  1. Penyimpanan Kata Sandi: Kata sandi pengguna disimpan dalam bentuk hash, bukan teks asli. Bahkan pengelola sistem tak bisa melihat kata sandi sebenarnya.
  2. Verifikasi Integritas Data: Hash dapat digunakan untuk memastikan suatu file atau data tidak diubah.
  3. Pengamanan Komunikasi: Digunakan untuk membuat tanda tangan digital (digital signatures).

Proses hashing menggunakan algoritma hashing tertentu. Algoritma yang umum digunakan diantaranya MD5, SHA-256, bcrypt, dan Argon2. Meski hashing mampu ‘menyamarkan’ data untuk melindunginya, perlu diperkuat lagi dengan dengan metode:

  • Salting: menambahkan data acak ke input sebelum hashing, sehingga hash tidak bisa ditebak
  • Peppering: menambahkan rahasia global yang disimpan server, sehingga lebih sulit ditembus.
  • Rate limiting: membatasi jumlah percobaan login untuk mencegah brute force.



Previous: Tugas 2 - Merancang Basis Data

Next: Evaluasi - Basis Data

Comments

Popular posts from this blog

Merancang Basis Data

Bahasa Basis Data

Tugas 1 - Praktikum CRUD