Difference between revisions of "Mekanisme kontrol akses dan otorisasi"

From OnnoWiki
Jump to navigation Jump to search
(Created page with "Berikut adalah lanjutan dari **Modul 8: Keamanan Basis Data**, dengan fokus pada **mekanisme kontrol akses dan otorisasi**, lengkap dengan **contoh implementasi di MySQL pada...")
 
 
Line 1: Line 1:
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**.
+
==Tujuan Pembelajaran==
 
+
Setelah mempelajari bagian ini, mahasiswa diharapkan mampu:
---
+
* Memahami prinsip kontrol akses berbasis peran dan pengguna.
 
+
* Mengelola hak akses (privileges) pengguna di MySQL.
## 🛡️ **Modul 8 (Lanjutan): Keamanan Basis Data**
+
* Mengimplementasikan kontrol akses menggunakan perintah GRANT, REVOKE, dan SHOW GRANTS.
  
### 🎯 **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**
+
==Mekanisme Kontrol Akses dan Otorisasi==
  
### 🔎 Definisi:
+
'''Definisi:'''
  
- **Kontrol Akses**: Menentukan **siapa** yang dapat mengakses **apa** di dalam basis data.
+
* '''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.
+
* '''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`
+
==Struktur Sistem Hak Akses di MySQL==
- **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
 
  
---
+
* '''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
+
==Praktik: Kontrol Akses di MySQL (Ubuntu 24.04)==
CREATE USER 'editor'@'localhost' IDENTIFIED BY 'password123';
 
```
 
  
---
+
1. '''Membuat Pengguna Baru'''
  
### ✅ 2. **Memberi Hak Akses (GRANT)**
+
CREATE USER 'editor'@'localhost' IDENTIFIED BY 'password123';
  
```sql
+
2. '''Memberi Hak Akses (GRANT)'''
-- Akses penuh ke database 'universitas'
 
GRANT ALL PRIVILEGES ON universitas.* TO 'editor'@'localhost';
 
  
-- Akses hanya SELECT dan INSERT pada tabel mahasiswa
+
--- Akses penuh ke database 'universitas'
GRANT SELECT, INSERT ON universitas.mahasiswa TO 'editor'@'localhost';
+
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**
+
3. '''Melihat Hak Akses Pengguna'''
  
```sql
+
SHOW GRANTS FOR 'editor'@'localhost';
SHOW GRANTS FOR 'editor'@'localhost';
 
```
 
  
 
Contoh hasil:
 
Contoh hasil:
  
```
+
GRANT SELECT, INSERT ON `universitas`.`mahasiswa` TO 'editor'@'localhost'
GRANT SELECT, INSERT ON `universitas`.`mahasiswa` TO 'editor'@'localhost'
 
```
 
  
---
+
4. '''Menghapus Hak Akses (REVOKE)'''
  
### ❌ 4. **Menghapus Hak Akses (REVOKE)**
+
REVOKE INSERT ON universitas.mahasiswa FROM 'editor'@'localhost';
  
```sql
+
5. '''Menghapus Pengguna'''
REVOKE INSERT ON universitas.mahasiswa FROM 'editor'@'localhost';
 
```
 
  
---
+
DROP USER 'editor'@'localhost';
  
### 🧼 5. **Menghapus Pengguna**
+
==Studi Kasus Kontrol Akses Berbasis Peran (Simulasi)==
  
```sql
+
'''Skenario:'''
DROP USER 'editor'@'localhost';
 
```
 
  
---
+
* '''Admin''' boleh mengakses semua data.
 +
* '''Dosen''' hanya bisa melihat dan menginput nilai.
 +
* '''Mahasiswa''' hanya bisa melihat data dirinya sendiri.
  
## 📋 **8.9 Studi Kasus Kontrol Akses Berbasis Peran (Simulasi)**
+
'''Implementasi Sederhana:'''
  
### 🎓 Skenario:
 
  
- **Admin** boleh mengakses semua data.
+
--- Buat user untuk dosen
- **Dosen** hanya bisa melihat dan menginput nilai.
+
CREATE USER 'dosen'@'localhost' IDENTIFIED BY 'dosenpass';
- **Mahasiswa** hanya bisa melihat data dirinya sendiri.
+
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';
  
### 🧩 Implementasi Sederhana:
 
  
```sql
+
==Tips Praktik Keamanan MySQL==
-- 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
+
* Gunakan '''password yang kuat''' dan simpan dengan aman.
CREATE USER 'mahasiswa'@'localhost' IDENTIFIED BY 'mahasiswapass';
+
* Hanya berikan hak minimum yang dibutuhkan pengguna (prinsip *least privilege*).
GRANT SELECT ON universitas.mahasiswa TO 'mahasiswa'@'localhost';
+
* Nonaktifkan user default yang tidak dipakai.
```
+
* Jangan pernah berikan `GRANT ALL ON *.*` kecuali untuk admin terpercaya.
  
---
+
==Kesimpulan==
  
## 🧠 **8.10 Tips Praktik Keamanan MySQL**
+
{| class="wikitable"
 +
! Aksi                        !! Perintah MySQL
 +
|-
 +
| Buat user                    || `CREATE USER`
 +
|-
 +
| Beri hak akses              || `GRANT`
 +
|-
 +
| Cek hak akses                || `SHOW GRANTS`
 +
|-
 +
| Cabut hak akses              || `REVOKE`
 +
|-
 +
| Hapus user                  || `DROP USER`
 +
|}
  
- Gunakan **password yang kuat** dan simpan dengan aman.
+
Kontrol akses dan otorisasi adalah garis pertahanan pertama dalam menjaga keamanan basis data dari penyalahgunaan akses.
- 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.
 
  
---
+
==Pranala Menarik==
  
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!
+
* [[Database: Kuliah]]

Latest revision as of 07:25, 21 April 2025

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.


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.


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


Praktik: Kontrol Akses di MySQL (Ubuntu 24.04)

1. Membuat Pengguna Baru

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

2. Memberi Hak Akses (GRANT)

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

SHOW GRANTS FOR 'editor'@'localhost';

Contoh hasil:

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

4. Menghapus Hak Akses (REVOKE)

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

5. Menghapus Pengguna

DROP USER 'editor'@'localhost';

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:


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


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.

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.


Pranala Menarik