Back to IF3140 Sistem Basis Data

Topic: Implementasi Kontrol Akses dengan SQL

Questions/Cues

  • Apa saja bentuk otorisasi di SQL?

  • Bagaimana sintaks perintah GRANT?

  • Bagaimana sintaks perintah REVOKE?

  • Apa fungsi ROLES dalam SQL?

  • Bagaimana cara memberikan hak akses pada VIEW?

  • Apa itu WITH GRANT OPTION?

  • Apa fungsi CASCADE pada REVOKE?

  • Apa itu Authorization-Grant Graph?

Reference Points

  • Slides 26-36: Database Security.pdf

Otorisasi dan Hak Akses (Privileges) di SQL

Otorisasi di SQL adalah proses memberikan hak kepada pengguna untuk mengakses atau memanipulasi objek database. Hak akses (privileges) ini dapat dibagi menjadi dua kategori utama:

  1. Hak Akses Data:

    • SELECT (Read): Membaca data.

    • INSERT: Menambahkan data baru.

    • UPDATE: Mengubah data yang sudah ada.

    • DELETE: Menghapus data.

  2. Hak Akses Skema:

    • INDEX: Membuat atau menghapus indeks.

    • RESOURCES: Membuat relasi/tabel baru.

    • ALTERATION: Mengubah struktur tabel (menambah/menghapus kolom).

    • DROP: Menghapus tabel.

    • REFERENCES: Membuat foreign key yang mereferensikan tabel lain.

Perintah GRANT: Memberikan Hak Akses

Perintah GRANT digunakan untuk memberikan satu atau lebih hak akses kepada pengguna atau peran.

Sintaks Dasar:

GRANT <privilege_list> ON <object_name> TO <user_list>;
  • <user_list> bisa berupa ID pengguna, PUBLIC (semua pengguna), atau sebuah ROLE.

  • WITH GRANT OPTION: Jika ditambahkan di akhir, penerima hak akses juga diizinkan untuk memberikan hak akses yang sama kepada pengguna lain.

Perintah REVOKE: Mencabut Hak Akses

Perintah REVOKE digunakan untuk mencabut hak akses yang sebelumnya telah diberikan.

Sintaks Dasar:

REVOKE <privilege_list> ON <object_name> FROM <user_list>;
  • Efek Berantai (Cascading): Jika pengguna U1 memberikan hak ke U2, dan kemudian hak U1 dicabut, maka hak U2 juga akan otomatis tercabut.

  • CASCADE vs RESTRICT:

    • CASCADE: Saat hak dicabut, semua hak lain yang bergantung padanya (yang diberikan oleh pengguna tersebut) juga akan ikut dicabut.

    • RESTRICT: Pencabutan akan gagal jika ada hak lain yang bergantung padanya.

Menggunakan ROLES

ROLE adalah sebuah entitas yang berisi kumpulan hak akses. Ini menyederhanakan manajemen hak akses, sejalan dengan konsep RBAC.

  1. Buat Role: CREATE ROLE nama_role;

  2. Berikan Hak ke Role: GRANT SELECT ON mahasiswa TO nama_role;

  3. Berikan Role ke Pengguna: GRANT nama_role TO user_A;

Role juga bisa diberikan ke role lain untuk menciptakan hierarki.

Otorisasi pada Views dan Authorization-Grant Graph

  • Views: Memberikan hak akses pada sebuah VIEW tidak secara otomatis memberikan hak akses pada tabel dasarnya. Keamanan VIEW bergantung pada hak akses yang dimiliki oleh pembuat VIEW saat VIEW itu dibuat.

  • Authorization-Grant Graph: Adalah sebuah graf berarah yang memvisualisasikan alur pemberian hak akses. Node merepresentasikan pengguna (atau DBA), dan panah dari U1 ke U2 berarti U1 memberikan hak akses kepada U2. Ini membantu melacak dependensi saat melakukan REVOKE.

Summary

SQL menyediakan mekanisme kontrol akses yang kuat melalui perintah GRANT untuk memberi hak dan REVOKE untuk mencabutnya. Penggunaan ROLES menyederhanakan manajemen hak dengan mengelompokkannya, sejalan dengan prinsip RBAC. Fitur seperti WITH GRANT OPTION memungkinkan delegasi wewenang, sementara Authorization-Grant Graph membantu memvisualisasikan dependensi hak akses untuk mengelola pencabutan secara efektif.