Mekanisme kontrol akses dan otorisasi

From OnnoWiki
Jump to navigation Jump to search

Berikut adalah lanjutan dari **Modul 8: Keamanan Basis Data**, dengan fokus pada **mekanisme kontrol akses dan otorisasi**, lengkap dengan **contoh implementasi di MySQL pada Ubuntu 24.04**.

---

    1. πŸ›‘οΈ **Modul 8 (Lanjutan): Keamanan Basis Data**
      1. 🎯 **Tujuan Pembelajaran**

Setelah mempelajari bagian ini, mahasiswa diharapkan mampu: - Memahami prinsip kontrol akses berbasis peran dan pengguna. - Mengelola hak akses (privileges) pengguna di MySQL. - Mengimplementasikan kontrol akses menggunakan perintah GRANT, REVOKE, dan SHOW GRANTS.

---

    1. πŸ” **8.6 Mekanisme Kontrol Akses dan Otorisasi**
      1. πŸ”Ž Definisi:

- **Kontrol Akses**: Menentukan **siapa** yang dapat mengakses **apa** di dalam basis data. - **Otorisasi**: Proses untuk memverifikasi **apa saja yang boleh dilakukan** oleh pengguna yang telah diautentikasi.

---

    1. 🧱 **8.7 Struktur Sistem Hak Akses di MySQL**

- **User**: Diidentifikasi oleh `username@host` - **Privileges**: Hak untuk melakukan aksi seperti `SELECT`, `INSERT`, `UPDATE`, dll - **Level Akses**:

 - **Global** β†’ berlaku ke seluruh database
 - **Database** β†’ berlaku ke satu database
 - **Tabel** β†’ berlaku ke tabel tertentu
 - **Kolom** β†’ berlaku ke kolom tertentu
 - **Rutin** β†’ berlaku ke prosedur/fungsi

---

    1. πŸ› οΈ **8.8 Praktik: Kontrol Akses di MySQL (Ubuntu 24.04)**
      1. πŸ‘€ 1. **Membuat Pengguna Baru**

```sql CREATE USER 'editor'@'localhost' IDENTIFIED BY 'password123'; ```

---

      1. βœ… 2. **Memberi Hak Akses (GRANT)**

```sql -- Akses penuh ke database 'universitas' GRANT ALL PRIVILEGES ON universitas.* TO 'editor'@'localhost';

-- Akses hanya SELECT dan INSERT pada tabel mahasiswa GRANT SELECT, INSERT ON universitas.mahasiswa TO 'editor'@'localhost'; ```

---

      1. πŸ” 3. **Melihat Hak Akses Pengguna**

```sql SHOW GRANTS FOR 'editor'@'localhost'; ```

Contoh hasil:

``` GRANT SELECT, INSERT ON `universitas`.`mahasiswa` TO 'editor'@'localhost' ```

---

      1. ❌ 4. **Menghapus Hak Akses (REVOKE)**

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

---

      1. 🧼 5. **Menghapus Pengguna**

```sql DROP USER 'editor'@'localhost'; ```

---

    1. πŸ“‹ **8.9 Studi Kasus Kontrol Akses Berbasis Peran (Simulasi)**
      1. πŸŽ“ Skenario:

- **Admin** boleh mengakses semua data. - **Dosen** hanya bisa melihat dan menginput nilai. - **Mahasiswa** hanya bisa melihat data dirinya sendiri.

      1. 🧩 Implementasi Sederhana:

```sql -- Buat user untuk dosen CREATE USER 'dosen'@'localhost' IDENTIFIED BY 'dosenpass'; GRANT SELECT, INSERT, UPDATE ON universitas.nilai TO 'dosen'@'localhost';

-- Buat user untuk mahasiswa CREATE USER 'mahasiswa'@'localhost' IDENTIFIED BY 'mahasiswapass'; GRANT SELECT ON universitas.mahasiswa TO 'mahasiswa'@'localhost'; ```

---

    1. 🧠 **8.10 Tips Praktik Keamanan MySQL**

- Gunakan **password yang kuat** dan simpan dengan aman. - Hanya berikan hak minimum yang dibutuhkan pengguna (prinsip *least privilege*). - Nonaktifkan user default yang tidak dipakai. - Jangan pernah berikan `GRANT ALL ON *.*` kecuali untuk admin terpercaya.

---

    1. πŸ“Œ **8.11 Kesimpulan**

| Aksi | Perintah MySQL | |------------------------------|----------------------------------------| | Buat user | `CREATE USER` | | Beri hak akses | `GRANT` | | Cek hak akses | `SHOW GRANTS` | | Cabut hak akses | `REVOKE` | | Hapus user | `DROP USER` |

Kontrol akses dan otorisasi adalah garis pertahanan pertama dalam menjaga keamanan basis data dari penyalahgunaan akses.

---

Kalau kamu mau lanjut ke **Modul 9: Backup, Recovery, dan Replikasi** atau saya bantu simulasi multi-user access di MySQL (misal role-based access), tinggal bilang ya!