Aspek keamanan: kerahasiaan, integritas, ketersediaan
Berikut adalah **Modul 8: Keamanan Basis Data**, dengan fokus pada tiga aspek utama yaitu **kerahasiaan (confidentiality)**, **integritas (integrity)**, dan **ketersediaan (availability)**, disertai dengan **contoh implementasi di MySQL Ubuntu 24.04**.
---
- π‘οΈ **Modul 8: Keamanan Basis Data**
- π― **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.
---
- π **8.1 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. |
---
- π **8.2 Kerahasiaan (Confidentiality)**
- β Tujuan:
Melindungi data dari akses tidak sah.
- πΉ Contoh di MySQL:
- π€ 1. **Membuat pengguna dan memberi hak akses minimum**
- πΉ Contoh di MySQL:
```sql -- 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**
```sql REVOKE SELECT ON universitas.mahasiswa FROM 'editor'@'localhost'; ```
- π 3. **Mengaktifkan autentikasi enkripsi SSL (opsional)**
Aktifkan SSL di file config: ```ini [mysqld] ssl-ca=/etc/mysql/certs/ca.pem ssl-cert=/etc/mysql/certs/server-cert.pem ssl-key=/etc/mysql/certs/server-key.pem ```
---
- 𧱠**8.3 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**
```sql 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**
```sql 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 ; ```
---
- βοΈ **8.4 Ketersediaan (Availability)**
- β Tujuan:
Memastikan database tetap bisa diakses saat dibutuhkan, meski ada gangguan.
- πΉ Strategi:
- π‘οΈ 1. **Backup Berkala**
```bash mysqldump -u root -p universitas > backup_universitas.sql ```
- π 2. **Restore Data**
```bash mysql -u root -p universitas < backup_universitas.sql ```
- π 3. **Monitoring dan Restart Otomatis**
Gunakan `systemd` agar MySQL selalu otomatis restart jika gagal:
```bash sudo systemctl enable mysql sudo systemctl start mysql ```
- π 4. **Monitoring Kesehatan Server**
Install dan jalankan MySQLTuner:
```bash sudo apt install mysqltuner sudo mysqltuner ```
---
- π **8.5 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 |
---
Kalau kamu mau lanjut ke **Modul 9: Backup dan Replikasi Basis Data** atau saya bantu buat skrip keamanan MySQL lengkap (user-role audit, log akses, dll), tinggal bilang ya!