Difference between revisions of "Mekanisme kontrol akses dan otorisasi"
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
		
	
Onnowpurbo (talk | contribs)  (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...")  | 
				Onnowpurbo (talk | contribs)   | 
				||
| Line 1: | Line 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.  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | ==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)'''  | |
| − | |||
| − | GRANT   | ||
| − | -- 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'''  | |
| − | + |  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)'''  | |
| − | + |  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*).  | |
| − | GRANT   | + | * Nonaktifkan user default yang tidak dipakai.  | 
| − | + | * Jangan pernah berikan `GRANT ALL ON *.*` kecuali untuk admin terpercaya.  | |
| − | + | ==Kesimpulan==  | |
| − | + | {| 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`  | ||
| + | |}  | ||
| − | + | Kontrol akses dan otorisasi adalah garis pertahanan pertama dalam menjaga keamanan basis data dari penyalahgunaan akses.  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | ==Pranala Menarik==  | |
| − | + | * [[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.