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.