Mekanisme kontrol akses dan otorisasi: Difference between revisions

From OnnoCenterWiki
Jump to navigationJump 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..."
 
No edit summary
 
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 00: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