Mekanisme kontrol akses dan otorisasi
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**.
---
- π‘οΈ **Modul 8 (Lanjutan): Keamanan Basis Data**
- π― **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.
---
- π **8.6 Mekanisme Kontrol Akses dan Otorisasi**
- π 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.
---
- 𧱠**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
---
- π οΈ **8.8 Praktik: Kontrol Akses di MySQL (Ubuntu 24.04)**
- π€ 1. **Membuat Pengguna Baru**
```sql CREATE USER 'editor'@'localhost' IDENTIFIED BY 'password123'; ```
---
- β 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'; ```
---
- π 3. **Melihat Hak Akses Pengguna**
```sql SHOW GRANTS FOR 'editor'@'localhost'; ```
Contoh hasil:
``` GRANT SELECT, INSERT ON `universitas`.`mahasiswa` TO 'editor'@'localhost' ```
---
- β 4. **Menghapus Hak Akses (REVOKE)**
```sql REVOKE INSERT ON universitas.mahasiswa FROM 'editor'@'localhost'; ```
---
- π§Ό 5. **Menghapus Pengguna**
```sql DROP USER 'editor'@'localhost'; ```
---
- π **8.9 Studi Kasus Kontrol Akses Berbasis Peran (Simulasi)**
- π Skenario:
- **Admin** boleh mengakses semua data. - **Dosen** hanya bisa melihat dan menginput nilai. - **Mahasiswa** hanya bisa melihat data dirinya sendiri.
- 𧩠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'; ```
---
- π§ **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.
---
- π **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!