Database Security
Hi, Dany’s here today i wanna Discuss about Database Security.
1. Pengertian
a. Keamanan Basis Data
Keamanan basis data merupakan serangkaian tindakan yang digunakan untuk melindungi data dari berbagai ancaman, seperti akses tanpa izin, perubahan data secara ilegal, kehilangan data, dan penyalahgunaan hak akses.
Sistem basis data dapat memiliki banyak pengguna. Setiap pengguna biasanya mempunyai tugas dan hak akses yang berbeda. Oleh karena itu, pemberian hak akses harus dilakukan secara tepat agar setiap pengguna hanya dapat mengakses data yang memang diperlukan.
Beberapa hak akses yang tersedia dalam SQL antara lain:
SELECT, untuk melihat data.INSERT, untuk menambahkan data.UPDATE, untuk mengubah data.DELETE, untuk menghapus data.REFERENCES, untuk mengatur referensi antartabel.TRIGGER, untuk menjalankan trigger.EXECUTE, untuk menjalankan stored procedure.USAGE, untuk memberikan akses dasar tanpa hak khusus.ALL PRIVILEGES, untuk memberikan seluruh hak akses.
b. Ancaman terhadap Basis Data
Ancaman pada basis data dapat berasal dari pengguna internal maupun pihak luar. Beberapa ancaman yang mungkin terjadi adalah:
- Pengguna mengakses tabel yang bukan menjadi kewenangannya.
- Pengguna mengubah atau menghapus data penting.
- Informasi rahasia dapat dilihat oleh pengguna yang tidak memiliki izin.
- Terjadi penyalahgunaan akun pengguna.
- Terjadi kehilangan data akibat kesalahan atau serangan.
Pemberian hak akses sesuai kebutuhan dapat mengurangi risiko penyalahgunaan basis data.
c. GRANT
Perintah GRANT digunakan untuk memberikan hak akses kepada pengguna atau role tertentu.
Contoh pemberian hak akses:
GRANT SELECT ON nama_database.nama_tabel TO 'nama_user'@'localhost';d. REVOKE
Perintah REVOKE digunakan untuk mencabut hak akses yang sebelumnya telah diberikan kepada pengguna.
Contoh:
REVOKE SELECT ON nama_database.nama_tabel FROM 'nama_user'@'localhost';e. Role-Based Access Control
Role-Based Access Control atau RBAC adalah metode pengaturan akses berdasarkan peran atau role. Hak akses diberikan kepada role, kemudian role tersebut diberikan kepada satu atau lebih pengguna.
Dengan menggunakan role, administrator tidak perlu memberikan hak akses kepada setiap pengguna secara satu per satu.
2. Praktikum
a. Login ke MySQL
Setelah berhasil login, terminal akan menampilkan prompt MySQL atau MariaDB.
b. Membuat Basis Data
Basis data yang digunakan pada praktikum ini bernama db_kampus.
CREATE DATABASE db_kampus;
USE db_kampus;Perintah CREATE DATABASE digunakan untuk membuat basis data baru, sedangkan perintah USE digunakan untuk memilih basis data yang akan digunakan.
c. Membuat Tabel Mahasiswa
Tabel mahasiswa digunakan untuk menyimpan data mahasiswa.
CREATE TABLE mahasiswa (
nim CHAR(10) PRIMARY KEY,
nama VARCHAR(50),
jurusan VARCHAR(30)
);d. Membuat Tabel Mata Kuliah
Tabel matakuliah digunakan untuk menyimpan informasi mata kuliah.
CREATE TABLE matakuliah (
kode_mk CHAR(6) PRIMARY KEY,
nama_mk VARCHAR(50),
sks INT
);e. Membuat Tabel Dosen
Tabel dosen digunakan untuk menyimpan data dosen.
CREATE TABLE dosen (
nip CHAR(10) PRIMARY KEY,
nama VARCHAR(50),
bidang VARCHAR(30)
);3. User Management
a. Membuat User Admin
Pengguna user_admin dibuat sebagai pengguna yang memperoleh akses penuh terhadap basis data.
CREATE USER 'user_admin'@'localhost' IDENTIFIED BY 'admin123';Password yang digunakan oleh user_admin adalah admin123.
b. Membuat User Mahasiswa
Pengguna user_mhs digunakan untuk melakukan pengujian hak akses terbatas.
CREATE USER 'user_mhs'@'localhost' IDENTIFIED BY 'mhs123';Password yang digunakan oleh user_mhs adalah mhs123.
c. Membuat User Dosen
Pengguna user_dosen digunakan untuk menerapkan pengaturan akses berbasis role.
CREATE USER 'user_dosen'@'localhost' IDENTIFIED BY 'dosen123';Password yang digunakan oleh user_dosen adalah dosen123.
4. Penerapan GRANT dan REVOKE
a. Memberikan Akses Penuh kepada User Admin
Pengguna user_admin diberikan seluruh hak akses pada basis data db_kampus.
GRANT ALL PRIVILEGES ON db_kampus.* TO 'user_admin'@'localhost';Tanda * setelah nama basis data menunjukkan bahwa hak akses diberikan terhadap seluruh tabel yang berada di dalam db_kampus.
Dengan hak akses tersebut, user_admin dapat:
- Membuat tabel.
- Menghapus tabel.
- Melihat data.
- Menambahkan data.
- Mengubah data.
- Menghapus data.
b. Memberikan Akses Terbatas kepada User Mahasiswa
Pengguna user_mhs hanya diberikan hak akses SELECT pada tabel matakuliah.
GRANT SELECT ON db_kampus.matakuliah TO 'user_mhs'@'localhost';Dengan hak akses tersebut, user_mhs hanya dapat melihat data pada tabel matakuliah.
Pengguna tidak diperbolehkan melihat tabel lain, menambahkan data, mengubah data, maupun menghapus data.
c. Mencabut Akses User Mahasiswa
Hak akses SELECT pada tabel matakuliah kemudian dicabut menggunakan perintah REVOKE.
REVOKE SELECT ON db_kampus.matakuliah FROM 'user_mhs'@'localhost';Setelah perintah tersebut dijalankan, user_mhs tidak dapat lagi melihat data pada tabel matakuliah.
5. Penerapan Role-Based Access Control
a. Membuat Role Dosen
Role baru bernama role_dosen dibuat menggunakan perintah berikut:
CREATE ROLE 'role_dosen';Role tersebut digunakan untuk menampung kumpulan hak akses yang dibutuhkan oleh pengguna dosen.
b. Memberikan Hak Akses kepada Role Dosen
Role dosen diberikan hak akses SELECT dan INSERT pada tabel mahasiswa.
GRANT SELECT, INSERT ON db_kampus.mahasiswa TO 'role_dosen';Dengan hak akses tersebut, pengguna yang memperoleh role_dosen dapat melihat dan menambahkan data mahasiswa.
c. Memberikan Role kepada User Dosen
Role yang telah dibuat diberikan kepada user_dosen.
GRANT 'role_dosen' TO 'user_dosen'@'localhost';d. Menetapkan Default Role
Role dosen ditetapkan sebagai role default untuk pengguna user_dosen.
SET DEFAULT ROLE role_dosen FOR 'user_dosen'@'localhost';6. Pengujian Hak Akses
Pengujian dilakukan dengan login menggunakan pengguna yang berbeda. Tujuannya adalah untuk memastikan setiap pengguna hanya dapat menjalankan perintah sesuai hak akses yang diberikan.
a. Pengujian User Mahasiswa
Login menggunakan user_mhs.
mysql -u user_mhs -pMasukkan password:
mhs123a. Uji Akses Positif Sebelum Dicabut
Get Dany’s stories in your inbox
Join Medium for free to get updates from this writer.
Sebelum hak akses dicabut, jalankan perintah:
SELECT * FROM db_kampus.matakuliah;Perintah berhasil dijalankan karena user_mhs memiliki hak akses SELECT pada tabel matakuliah.
b. Uji Setelah REVOKE
Setelah hak akses dicabut, jalankan kembali:
SELECT * FROM db_kampus.matakuliah;Perintah ditolak dan muncul pesan access denied.
c. Uji Akses Tabel Mahasiswa
SELECT * FROM db_kampus.mahasiswa;Perintah ditolak karena user_mhs tidak memiliki akses terhadap tabel mahasiswa.
d. Uji Menambahkan Mata Kuliah
INSERT INTO db_kampus.matakuliah VALUES ('IF2020', 'Jaringan', 3);Perintah ditolak karena user_mhs tidak memiliki hak akses INSERT.
7. Pengujian User Dosen
Login menggunakan user_dosen.
mysql -u user_dosen -pMasukkan password:
dosen123a. Mengakses Tabel Mahasiswa
SELECT * FROM db_kampus.mahasiswa;Berhasil karena role_dosen mempunyai hak akses SELECT pada tabel mahasiswa.
b. Menambahkan Data Mahasiswa
INSERT INTO db_kampus.mahasiswa VALUES ('1234567890', 'Andi', 'Informatika');Berhasil karena role_dosen mempunyai hak akses INSERT pada tabel mahasiswa.
Untuk melihat data yang telah dimasukkan, jalankan kembali:
SELECT * FROM db_kampus.mahasiswa;c. Mengakses Tabel Dosen
SELECT * FROM db_kampus.dosen;Ditolak karena role_dosen tidak diberikan hak akses terhadap tabel dosen.
8. Pengujian User Admin
Login menggunakan user_admin.
mysql -u user_admin -pMasukkan password:
admin123Karena user_admin mempunyai ALL PRIVILEGES, pengguna tersebut seharusnya dapat membuat dan menghapus tabel.
a. Membuat Tabel Sementara
create table temp_tabel(
nah int primary key,
name varchar(36) not null,
alamat varchar(64) not null);berhasil.
b. Menghapus Tabel Sementara
DROP TABLE IF EXISTS temp_tabel;berhasil.
9. Tugas
Soal
- Membuat role baru bernama
role_keuanganyang hanya dapat melakukanSELECTdanUPDATEpada tabeltagihan. - Membuat pengguna baru bernama
user_keu, kemudian memberikan role tersebut kepada pengguna. - Memastikan pengguna hanya dapat melihat dan mengubah data, tetapi tidak dapat melakukan
INSERTatauDELETE.
a. Membuat Tabel Tagihan
Karena tabel tagihan belum tersedia pada basis data db_kampus, tabel tersebut perlu dibuat terlebih dahulu menggunakan pengguna root atau user_admin.
USE db_kampus;
CREATE TABLE tagihan (
id_tagihan INT PRIMARY KEY,
nim CHAR(10),
jumlah_tagihan DECIMAL(12,2),
status_tagihan VARCHAR(20)
);b. Menambahkan Data Dummy
Data dummy ditambahkan agar hak akses SELECT dan UPDATE dapat diuji.
INSERT INTO tagihan VALUES
(1, '1234567890', 1500000.00, 'Belum Lunas'),
(2, '1234567891', 2000000.00, 'Belum Lunas');Untuk melihat data:
SELECT * FROM tagihan;c. Membuat Role Keuangan
Role baru dibuat dengan nama role_keuangan.
CREATE ROLE 'role_keuangan';d. Memberikan Hak SELECT dan UPDATE
Role role_keuangan hanya diberikan hak untuk melihat dan mengubah data pada tabel tagihan.
GRANT SELECT, UPDATE ON db_kampus.tagihan TO 'role_keuangan';Role tersebut tidak diberikan hak INSERT dan DELETE.
e. Membuat User Keuangan
Pengguna baru dibuat dengan nama user_keu.
CREATE USER 'user_keu'@'localhost' IDENTIFIED BY 'keu123';f. Memberikan Role kepada User Keuangan
Role role_keuangan diberikan kepada user_keu.
GRANT 'role_keuangan' TO 'user_keu'@'localhost';Role kemudian ditetapkan sebagai role default.
SET DEFAULT ROLE role_keuangan FOR 'user_keu'@'localhost';g. Pengujian User Keuangan
Login menggunakan akun user_keu.
mysql -u user_keu -pMasukkan password:
keu123h. Pengujian SELECT
Jalankan perintah berikut:
SELECT * FROM db_kampus.tagihan;Berhasil karena role_keuangan memiliki hak akses SELECT.
i. Pengujian UPDATE
Ubah status tagihan dengan ID 1 menjadi Lunas.
UPDATE db_kampus.tagihan
SET status_tagihan = 'Lunas'
WHERE id_tagihan = 1;Berhasil karena role_keuangan memiliki hak akses UPDATE.
Periksa perubahan data:
SELECT * FROM db_kampus.tagihan;j. Pengujian INSERT
Coba tambahkan data baru menggunakan perintah berikut:
INSERT INTO db_kampus.tagihan
VALUES (3, '1234567892', 1750000.00, 'Belum Lunas');Ditolak atau muncul pesan access denied karena role_keuangan tidak mempunyai hak akses INSERT.
k. Pengujian DELETE
Coba menghapus data menggunakan perintah berikut:
DELETE FROM db_kampus.tagihan
WHERE id_tagihan = 2;Ditolak atau muncul pesan access denied karena role_keuangan tidak mempunyai hak akses DELETE.
That’s all, Thanks for reading my post, see ya on the last database report.
Reference:
- MODUL 8 — KEAMANAN BASIS DATA by Ahmad Nugroho, S.Kom., M.Eng.
GitHub Link:
https://github.com/dxnyai/Praktikum-Basis-Data/blob/main/Tugas/TugasModul8_DBMS_2505060062.sql









