The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

[BD-XII] 317.415 - A. Pengamanan Sistem Basis Data

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by Perpustakaan SMK Telkom Banjarbaru, 2022-01-13 01:12:38

[BD-XII] 317.415 - A. Pengamanan Sistem Basis Data

[BD-XII] 317.415 - A. Pengamanan Sistem Basis Data

Pengamanan Sistem
Basis Data

Setyo Wahyu Saputro, S.Kom, M.Kom

Kompetensi Dasar

3.17 Menganalisis struktur penuyimpanan pada RDBMS

4.17 Membuat struktur penyimpanan pada RDBMS
-----

Buku Referensi

Basis Data
Program Keahlian Teknik Komputer dan Informatika
Kompetensi Keahlian Rekayasa Perangkat Lunak

SMK/MAK Kelas II
Penerbit Andi.

Pengamanan Sistem
Basis Data

MySQL

• MySQL software merupakan suatu aplikasi yang
sifatnya open source serta server basis data MySQL
memiliki kinerja sangat cepat, reliable, dan mudah
untuk digunakan serta bekerja dengan arsitektur client
server atau embedded systems.

• Selain itu, MySQL adalah sebuah Database Manajemen
System (DBMS) popular yang memiliki fungsi sebagai
Relational Database Manajemen System (RDBMS).

• Dikarenakan faktor open source dan popular, maka cocok
untuk mendemontrasikan proses replikasi basis data.

Pengamanan Sistem Database

• Keamanan database adalah suatu cara untuk melindungi database
ancaman, baik dalam bentuk kesengajaan ataupun bukan

• Agar memiliki suatu keamanan yang efektif dibutuhkan kontrol vang tepat.
• Keamanan database tidak hanya berkenaan dengan data yang ada pada

database saja, tetapi juga meliputi bagian lain dari system database yang
dapat memengaruhi database tersebut.
• Hal ini berarti keamanan database mencakup perangkat keras, perangkat
lunak, orang, dan data.
• Seseorang yang memiliki hak untuk mengontrol dan mengatur database
biasanya disebut Administrator Database (Database Administrator/
DBA)

1. Password Akses Basis Data

Jika menggunakan database MySQL, terdapat dua buah fungsi untuk
mengenkripsi data yang paling sering digunakan, yaitu password()
dan encrypt().

Masalah keamanan (security) di MySQL merupakan hal yang tidak
boleh dianggap remeh apalagi dikesampingkan.

Beberapa hal yang harus diperhatikan dalam mengamankan server
MySQL sebagai berikut.

a. Jangan Pernah Memberi Akses ke Semua User

– Jangan pernah memberi akses ke semua user (kecuali user root) untuk
dapat mengakses database MySQL.

– Jika seseorang dapat mengakses database ini, maka dia dapat melihat
informasi user (termasuk user, password dan host) MySQL dan dapat
menambah atau mengubah informasi tersebut.

1. Password Akses Basis Data

b. Pelajari Mengenai Hak Akses di MySQL

– dPieMrinytSaQhLG. RANT dan REVOKE digunakan untuk mengatur hak akses
– UdenntguaknmpeelrainktuakhanMaynStQisLip-ausriodoetn. gan melakukan pengecekan login
– GmkJiaRkernaAegnNbaaeTkrpsShaeaussssnsiwlteulroovkrgdeimrnrMeokloiyethSmsaQetarLsvseieahmrt,akumuoasamhoknaeakgnhgsaageklhusiinennsaigkubgasiasneasrpe.mmereuinnajtaaudhsieSmrHdaOasapWlaath besar

c. Jangan Menyimpan Password dalam Bentuk Teks
Biasa di MySQL
– GMuDn5a(k) aunntfuukngmsienengeknrikprsiipssei aisriaphassespweorrtdi .fungsi PASSWORD() dan
Sebab tidak ada jaminan100% bahwa server akan aman dari penyusup
– (intruder)

1. Password Akses Basis Data

d. Hati-Hati dalam Memilih Password

– Memilih password yang mudah diingat tapi sulit ditebak oleh
orang lain. Dan jangan menggunakan kata-kata yang ada di
kamus, tetapi menggunakan antara kombinasi angka dan huruf.

e. Pasang Firewall

– Memasang firewall di server untuk mencegah penyusup. Hal ini
dapat mencegah setidaknya 50% dari program penyusup yang ada.

f. Jangan Percaya terhadap Data yang Dimasukkan
oleh User

– Memasang firewall di server untuk mencegah penyusup. Hal ini dapat
mencegah setidaknya 50% dari program penyusup yang ada.

1. Password Akses Basis Data

Dalam hal pengamanan server MySQL, setidaknya terdapat beberapa
faktor yang cukup memengaruhi dalam prosedur mengamankan
database secara menyeluruh sebagai berikut.

a. Server MySQL

– Konfigurasi dan setting dalam server MySQL sangat memengaruhi
keamanan data MySQL. Tentu sangat berbahaya jika seorang user yang
tidak berhak dapat mengakses sistem dan konfigurasi MySQL.

b. Server atau Komputer Tempat MySQL Berada

– Server tempat MySQL diinstal menjadi gerbang utama bagi penyusup
(intruder). Untuk itu harus benar-benar memperhatikan faktor keamanan
server. Dalam hal ini dapat diantisipasi dengan memasang prinsip deny-
all/allow-some untuk menutup semua lubang dan hanya membuka yang
diperlukan.

1. Password Akses Basis Data

c. User atau Pengguna

– User server MySQL juga memengaruhi keamanan datanya.
– Misalnya pemilihan password yang mudah ditebak (seperti tanggal

lahir), kecerobohan user yang lupa logout setelah menggunakan
MySQL atau user yang menuliskan passwordnya di buku catatan.

d. Aplikasi (Pemrograman) yang Digunakan

– Sebagian besar penyusup akan memilih cara menyusup melalui
aplikasi jika kedua hal diatas tidak dapat dilakukan.

– Dan banyak database yang kebobolan karena kelemahan dari sisi
aplikasi. Secara sederhana dapat mengakses data ke MySQL
melalui konsep yang sering disebut sebagai SQL Injection.

2. Enkripsi Password

• Penyimpanan password dalam suatu table database memerlukan pengamanan yang tidak
sembarangan, sangat disarankan password disimpan dalam keadaan terenkripsi.

• Sehingga jika seseorang yang tidak berkepentingan mendapatkan isi dari database user
dan didalamnya tersimpan password dari user di sistem, orang tersebut masih relatif sulit
menebak password user tersebut.

• Pada dasarnya, fungsi encrypt merupakan fungsi bawaan dari Unix yang bernama crypt.
• Enkripsi diterjemahkan sebagai suatu proses pengaburan data password semula ke dalam

bentuk lain yang tidak mudah ditebak, namun dapat dikembalikan lagi ke bentuk semula
jika diperlukan.
• Karena alasan keamanan, maka enkripsi banyak digunakan pada proses auhentifikasi di
dalam database.
• Permasalahan enkripsi data biasanya muncul ketika membuat aplikasi yang berhubungan
dengan password.
• Seorang user harus menyimpan data user beserta passwordnya yang tidak mungkin dibaca
oleh orang lain bahkan oleh seorang administrator.

2. Enkripsi Password

a. Proses Encrypt /Decrypt Cepat

– Seringkali suatu encrypt yang sulit di bongkar memerlukan
waktu saat melakukan encrypt.

– Proses ini sebenarnya tidak terlalu pengaruh pengakses
system tidak banyak, tapi akan sangat mengganggu jika
pengakses terlalu banyak.

b. Hasilnya Sulit Ditebak

– Sebuah password yang sama dan keyword yang sama dalam
waktu yang berbeda akan menghasilkan nilai yang berbeda,
maka metode ini akan sulit sekali dibongkar.

2. Enkripsi Password

• Untuk melakukan encrypt/decrypt dalam perintah
Transact SQL, SQL Server telah menyediakan beberapa
fungsi internal yang dapat digunakan, fungsi relatif
cepat, mudah digunakan, dan relatif sulit dibongkar
karena selalu menghasilkan nilai yang berubah.

• Tinggal bagaimana dalam mengkombinasikan fungsi
convert dan EncryptByPassPhrase untuk membuat
perintah encrypt, serta fungsi convert dan
DecryptByPassPhrase untuk mengembalikan nilai
fungsi.

3. Privilege

• Semua pengaturan hak akses (privileges) tersimpan di database mysql
yangng secara default sudah ada di sistem MySQL.

• Hak akses dalam MySQL selain dibatasi dengan query apa saja yang
dibolehkan, juga dapat dibatasi nada level di mana query tersebut akan
dijalankan, misalkan pada level database, level tabel, atau level kolom.

• Di MySQL dapat mengatur hak akses tiap user terhadap data di database.
MySQL bisa mengatur hak akses user sampai pada tingkat kolom yang
artinya dapat mengatur kolom tertentu dapat diakses oleh user siapa saja.

• Di samping itu, juga dapat mengatur hak akses user terhadap tabel, dan
database.

3. Privilege

Tabel penyimpanan data pada MySQL Keterangan
No. Komponen

1. columns_priv Tabel ini digunakan untuk menyimpan informasi
mengenai hak akses user terhadap kolom.

2. db Tabel ini digunakan untuk menyimpan informasi
mengenai hak akses user terhadap database.

3. func Tabel ini digunakan untuk menyimpan informasi
mengenai function yang didefinisikan di MySQL.

4. host Tabel ini digunakan untuk menyimpan daftar komputer
(bisa berupa alamat IP, nama komputer) yang
berhak mengakses suatu database.

5. proc Tabel ini digunakan untuk menyimpan informasi
mengenai daftar procedure dalam MySQL.

3. Privilege

No. Komponen Keterangan
6. procs_priv
7. tables_priv Tabel ini digunakan untuk menyimpan informasi
mengenai hak akses user terhadap procedure.
8. user
Tabel ini digunakan untuk menyimpan informasi
mengenai hak akses user terhadap tabel.Dengan kata
lain menyimpan tabel ini dapat diakses oleh siapa
dengan hak akses apa saja.

Tabel ini digunakan untuk menyimpan informasi user
MySQL yang mencakup informasi user, password dan
host user, serta informasi hak akses user.

3. Privilege

• Perancangan aplikasi yang membutuhkan database, setiap user akan
mengakses database seharusnya memiliki batasan masing-masing sesuai
dengan fungsinya.

• Misalnya, pada database sekolahsmk terdapat (dua) buah tabel, yaitu
siswa_RPL dan siswa_TMO.

• Misalkan membuat user siswa yang hanya diberikan hak akses untuk melihat
data tabel siswa_RPL dan siswa TMO, tetapi tidak bisa merubah apapun di
dalam tabel tersebut.

• Di dalam MySQL, user siswa hanya diberikan hak akse SELECT. Sedangkan
untuk keperluan administrasi maka user RPL admin sebagai administrator
diberikan hak akses untuk dapat menginput data dar merubah data dari tabel
siswa RPL.

• Tetapi, user RPL_admin tidak bisa melihat dan merubah tabel siswa TMO
karena hak akses itu seharusnya diberikan kepada TMO admin.

• Dari contoh tersebut dapat dilihat perlunya membatasi hak akses untuk
masing-masing user: user siswa, user RPL_admin, dan user TMO_admin.

4. Pembatasan Kewenangan Hak Akses
User Basis Data RDBMS

• Hak akses (privileges) user MySQL dengan
query GRANT pada dasarnya digunakan untuk
memberikan hak akses untuk user.

• Hak akses dapat dibatasi pada 4 (empat)
tingkatan level, yaitu level global, level
database, level tabel, dan level kolom

4. a. Memberikan Hak Akses Kepada
User dengan Query GRANT

Untuk memberikan hak akses kepada sebuah user,
MySQL menyediakan query GRANT. Berikut format dasar
query GRANT:

GRANT hak_akses ON nama_database.nama tabel
TO 'nama user'@'lokasi user';

4. a. Memberikan Hak Akses Kepada
User dengan Query GRANT

GRANT hak_akses ON nama_database.nama tabel TO 'nama
user'@'lokasi user’;
1) hak_akses adalah privileges yang akan berikan kepada user tersebut. Hak

akses disini berisi query yang diperbolehkan seperti SELECT, INSERT,
UPDATE, DELETE, atau query lainnya.
Jika kita ingin memberikan hak penuh untuk semua query dasar
tersebut,hak_akses ini bisa diisi dengan ALL.

2) nama_database adalah nama database yang ingin diberikan hak akses. Jika
kita mengizinkan user tersebut dapat mengakses semua database yang ada,
nama_database bisa ditulis dengan tanda bintang ).

3) nama_tabel adalah nama tabel yang ingin diberikan hak akses. Jika
mengizinkan user dapat menggunakan semua tabel, nama tabel bisa ditulis
dengan tanda bintang (*).

4) nama_user adalah nama dari user yang akan diberikan hak akses.

5) lokasi_user adalah alamat IP dari user yang ingin diberikan hak akses.

4. a. Memberikan Hak Akses Kepada
User dengan Query GRANT

Misalnya, ingin memberikan privileges kepada RPL_admin untuk dapat melihat
(melakukan query SELECT) pada tabel siswa_RPL yang berada pada database
sekolahsmk, maka query yang digunakan sebagai berikut.

mysql> CREATE USER 'RPL admin'@'localhost' IDENTIFIED BY
'ap45aj4’;
Query OK, 0 rows affected (0.52 sec)
mysql> GRANT SELECT ON sekolahsmk.siswa RPL TO "RPL
admin'@'localhost’,
Query OK, o rows affected (0.12 sec)

Query di atas terdiri dari 2 (dua) bagian, yaitu untuk membuat user RPL_admin
yang harus diakses dari komputer localhost (komputer yang sama dengan server
MySQL berada) dan memberikan password ‘ap45aj4'.

4. b. Membuat dan Menghapus User
MySQL (CREATE USER)

• Setelah memberikan hak akses kepada user dengan query GRANT
dilanjutkan dengan memberikan hak akses dengan query GRANT pada
untuk user RPL_admin.

• Cara penulisan query GRANT adalah setelah keyword GRANT diikuti
dengan kata SELECT.

• SELECT sebagai hak akses yang ingin diberikan kepada user.
• Setelah SELECT, diikuti dengan penulisan tabel yang diperbolehkan, yaitu

sekolahsmk.siswa_RPL (cara membaca: tabel siswa_RPL pada database
sekolahsmk).
• Bagian terakhir adalah user yang akan diberikan hak aksesnya, yaitu
RPL_admin pada localhost.
• Untuk mencoba user RPL_admin, harus keluar dari root, dan masuk
sebagai RPL_admin.

4. b. Membuat dan Menghapus User
MySQL (CREATE USER)

E:\MySQL\bin/mysql -u RPL admin –p ap45aj4
Welcome to the MySQL monitor. Commands end
with ; or lg. Your MySQL connection id is 2
Server version: 5.5.27 MySQL Community Server
(GPL) Copyright (c) 2000, 2011, Oracle and/or
its affiliates. All rights reserved. Oracle
is a registered trademark of Oracle
Corporation and/or its affiliates. Other
names may be trademarks of their respective
owners.

4. b. Membuat dan Menghapus User
MySQL (CREATE USER)

• Dapat dilihat bahwa pada saat RPL admin menjalankan perintah
SHOW TABLES hanya dapat melihat satu tabel, yaitu tabel siswa
RPL.

• Padahal dalam database tersebut juga membuat tabel siswa TMO,
namun karena hak akses yang diberikan, RPL_admin hanya dapat
melihat tabel yang diperbolehkan.

• Setelah menampilkan isi tabel siswa_RPL, user RPL_admin dapat
mencoba menghapus tabel siswa RPL.

• Tetapi, karena dibatasi hak aksesnya, maka RPL admin tidak dapat
menjalankan query DELETE dan DROP serta akan langsung ditolak
oleh MySQL.

4. c. Memberikan Hak Akses untuk
Seluruh Tabel

Misalnya, membuat user siswa yang diberikan
hak akses untuk dapat melihat seluruh tabel yang
ada pada database sekolahsmk, perintah query-
nya sebagai berikut.

mysql> CREATE USER 'siswa'@'localhost' IDENTIFIED BY

'ap45aj4'; Query OK, 0 rows affected (0.01 sec)

mysql> GRANT SELECT ON sekolahsmk.* TO
'siswa'@'localhost'; Query OK, 0 rows affected (0.00
sec)

4. c. Memberikan Hak Akses untuk
Seluruh Tabel

Pembuatan user siswa hampir sama dengan perintah saat membuat user
RPL_admin.
Kecuali untuk penulisan tabel menggunakan format sekolahsmk.* yang berarti
dapat mengakses seluruh tabel pada database sekolahsmk.
Selanjutnya, akan mencoba menggunakan user siswa untuk melihat database
sekolahsmk dengan cara sebagai berikut.
E:\MySQL\bin>mysql -u siswa –p ap45aj4
Welcome to the MySQL monitor. Commands end with ; or \g. Your
MySQL connection id is 3 Server version: 5.5.27 MySQL Community
Server (GPL) Copyright (c) 2000, 2011,
Oracle and/or its affiliates. All rights reserved. oracle is a
registered trademark of Oracle Corporation and/or its
afiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'Th' for help. Type '\c' to clear the current
input statement.

4. c. Memberikan Hak Akses untuk
Seluruh Tabel

mysql> USE sekolahsmk; Database changed

mysql> SHOW TABLES;

+----------------------+

| Tables_in_sekolahsmk |

+----------------------+

| siswa TMO |

| siswa RPL |

+----------------------+

2 rows in set (0.00 sec)

Dari hasil query di atas, terlihat bahwa user siswa dapat melihat 2 (dua)
tabel dalam database sekolahsmk.
Dan jika membuat sebuah tabel baru dalam database sekolahsmk, maka user
siswa akan bisa melihatnya.

4. d. Memberikan Seluruh Hak Akses
(query GRANT ALL)

Untuk memberikan hak akses penuh kepada user TMO admin
dengan query GRANT ALL dilakukan dengan cara sebagai
berikut.
mysql> CREATE USER 'TMO_admin'@'localhost'
IDENTIFIED BY 'ap45aj4’;
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL ON sekolahsmk.siswa_TMO TO
'TMO_admin'@'localhost’;
Query OK, 0 rows affected (0.00 sec)

Dengan memberikan hak akses GRANT ALL, maka user TMO_admin dapat
menggunakan seluruh query dasar pada tabel siswa_TMO, seperti SELECT,
UPDATE bahkan DELETE.

4. e. Memberikan Hak Akses MySQL
pada Level Kolom

Keperluan yang lebih spesifik hak akses dapat juga dibatasi hanya untuk kolom
tertentu.
Hal ini bisa didasarkan bahwa terdapat sebuah colom yang dirasakan rahasia dan
tidak boleh diketahui user tersebut. ainya, membuat user tamu RPL yang hanya
dapat melihat nama umur siswa pada tabel siswa RPL, dan merahasiakan kolom
lainnya seperti alamat dan IPK. Querynya sebagai berikut.

mysql> CREATE USER 'tamu RPL'@'localhost’;
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT SELECT (nama, umur) ON sekolahsmk.siswa RPL To
'tamu_RPL'@'localhost',
Query OK, rows affected (0.00 sec)

4. e. Memberikan Hak Akses MySQL
pada Level Kolom

Cara penulisan kolom yang diberikan hak aksesnya, setelah hak akses (SELECT), penulisan
nama kolom harus berada dalam tanda kurung.
Dapat dilihat bahwa memberikan hak akses hanya pada kolom nama dan umur untuk tabel
siswa_RPL.
Untuk mengujinya, dapat masuk sebagai user tamu_RPL dengan cara sebagai berikut.
E:\MySQL\bin/mysql -u tamu RPL

--------------

mysql> USE sekolahsmk;

Database changed

mysql> SHOW TABLES;
+----------------------+
| Tables_in_sekolahsmk |
+----------------------+
| siswa RPL |
+----------------------+
1 row in set (0.00 sec)

Sekian

Setyo Wahyu Saputro, S.Kom, M.Kom


Click to View FlipBook Version