Aspek keamanan: kerahasiaan, integritas, ketersediaan

From OnnoWiki
Jump to navigation Jump to search

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**.

---

    1. πŸ›‘οΈ **Modul 8: Keamanan Basis Data**
      1. 🎯 **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.

---

    1. πŸ” **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. |

---

    1. πŸ” **8.2 Kerahasiaan (Confidentiality)**
      1. βœ… Tujuan:

Melindungi data dari akses tidak sah.

      1. πŸ”Ή Contoh di MySQL:
        1. πŸ‘€ 1. **Membuat pengguna dan memberi hak akses minimum**

```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'; ```

        1. πŸ”’ 2. **Menghapus hak akses**

```sql REVOKE SELECT ON universitas.mahasiswa FROM 'editor'@'localhost'; ```

        1. πŸ” 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 ```

---

    1. 🧱 **8.3 Integritas (Integrity)**
      1. βœ… Tujuan:

Melindungi data agar tidak diubah/dihapus secara tidak sah atau tidak sengaja.

      1. πŸ”Ή Contoh di MySQL:
        1. 🧩 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)

); ```

        1. πŸ” 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 ; ```

---

    1. βš™οΈ **8.4 Ketersediaan (Availability)**
      1. βœ… Tujuan:

Memastikan database tetap bisa diakses saat dibutuhkan, meski ada gangguan.

      1. πŸ”Ή Strategi:
        1. πŸ›‘οΈ 1. **Backup Berkala**

```bash mysqldump -u root -p universitas > backup_universitas.sql ```

        1. πŸ”„ 2. **Restore Data**

```bash mysql -u root -p universitas < backup_universitas.sql ```

        1. πŸ” 3. **Monitoring dan Restart Otomatis**

Gunakan `systemd` agar MySQL selalu otomatis restart jika gagal:

```bash sudo systemctl enable mysql sudo systemctl start mysql ```

        1. πŸ”Ž 4. **Monitoring Kesehatan Server**

Install dan jalankan MySQLTuner:

```bash sudo apt install mysqltuner sudo mysqltuner ```

---

    1. πŸ“Œ **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!