Aspek keamanan: kerahasiaan, integritas, ketersediaan
Tujuan Pembelajaran
Setelah mempelajari modul ini, mahasiswa diharapkan mampu:
- Menjelaskan aspek utama keamanan basis data (CIA: Confidentiality, Integrity, Availability).
- Menerapkan konfigurasi dan praktik keamanan pada MySQL.
- Memahami pengelolaan hak akses, enkripsi, dan backup data untuk menjaga keamanan basis data.
Tiga Pilar Keamanan Basis Data (CIA)
| Aspek | Definisi |
|---|---|
| Kerahasiaan | Menjaga agar data hanya dapat diakses oleh pihak yang berwenang. |
| Integritas | Menjamin bahwa data akurat, konsisten, dan tidak dimodifikasi tanpa izin. |
| Ketersediaan | Menjamin data dan layanan database tersedia saat dibutuhkan. |
Kerahasiaan (Confidentiality)
Tujuan:
Melindungi data dari akses tidak sah.
Contoh di MySQL:
1. Membuat pengguna dan memberi hak akses minimum
-* Buat user baru CREATE USER 'editor'@'localhost' IDENTIFIED BY 'password123'; -* Hanya izinkan SELECT pada tabel mahasiswa GRANT SELECT ON universitas.mahasiswa TO 'editor'@'localhost';
2. Menghapus hak akses
REVOKE SELECT ON universitas.mahasiswa FROM 'editor'@'localhost';
3. Mengaktifkan autentikasi enkripsi SSL (opsional)
Aktifkan SSL di file config:
[mysqld] ssl-ca=/etc/mysql/certs/ca.pem ssl-cert=/etc/mysql/certs/server-cert.pem ssl-key=/etc/mysql/certs/server-key.pem
Integritas (Integrity)
Tujuan:
Melindungi data agar tidak diubah/dihapus secara tidak sah atau tidak sengaja.
Contoh di MySQL:
1. Gunakan constraint seperti PRIMARY KEY, FOREIGN KEY, dan CHECK
CREATE TABLE mahasiswa (
nim VARCHAR(10) PRIMARY KEY,
nama VARCHAR(100) NOT NULL,
ipk DECIMAL(3,2) CHECK (ipk BETWEEN 0.00 AND 4.00)
);
2. Gunakan TRIGGER untuk validasi otomatis
DELIMITER //
CREATE TRIGGER before_insert_mahasiswa
BEFORE INSERT ON mahasiswa
FOR EACH ROW
BEGIN
IF NEW.ipk > 4.00 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'IPK tidak valid';
END IF;
END;
//
DELIMITER ;
Ketersediaan (Availability)
Tujuan:
Memastikan database tetap bisa diakses saat dibutuhkan, meski ada gangguan.
Strategi:
1. Backup Berkala
mysqldump -u root -p universitas > backup_universitas.sql
2. Restore Data
mysql -u root -p universitas < backup_universitas.sql
3. Monitoring dan Restart Otomatis
Gunakan `systemd` agar MySQL selalu otomatis restart jika gagal:
sudo systemctl enable mysql sudo systemctl start mysql
4. Monitoring Kesehatan Server
Install dan jalankan MySQLTuner:
sudo apt install mysqltuner sudo mysqltuner
Kesimpulan
| Aspek | Implementasi MySQL Ubuntu 24.04 |
|---|---|
| Kerahasiaan | Buat user terbatas, grant/revoke, gunakan SSL |
| Integritas | Gunakan constraint, trigger, validasi data |
| Ketersediaan | Backup, monitoring, pemulihan otomatis, konfigurasi systemd |