GRANT, REVOKE, dan DENY Database Permissions
Data Control Language (DCL) adalah bagian dari Structured Query Language (SQL) dan memungkinkan administrator basis data untuk mengkonfigurasi akses keamanan ke database relasional. Ini melengkapi Data Definition Language (DDL), yang digunakan untuk menambah dan menghapus objek database, dan Data Manipulation Language (DML) yang digunakan untuk mengambil, menyisipkan, dan memodifikasi isi dari database.
DCL adalah yang paling sederhana dari subset SQL , karena hanya terdiri dari tiga perintah: GRANT, REVOKE, dan DENY. Gabungan, ketiga perintah ini memberi administrator fleksibilitas untuk mengatur dan menghapus izin basis data dengan cara yang sangat terperinci.
Menambahkan Izin Dengan Perintah GRANT
Perintah GRANT digunakan oleh administrator untuk menambahkan izin baru ke pengguna basis data . Ini memiliki sintaks yang sangat sederhana, didefinisikan sebagai berikut:
GRANT [privilege] ON [objek] KE [pengguna] [DENGAN GRANT OPTION]Berikut ini rundown pada masing-masing parameter yang dapat Anda berikan dengan perintah ini:
- Privilege dapat berupa kata kunci ALL (untuk memberikan berbagai izin) atau izin database tertentu atau serangkaian izin. Contohnya termasuk CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE, dan CREATE VIEW.
- Objek dapat berupa objek basis data apa pun. Opsi hak istimewa yang berlaku bervariasi berdasarkan jenis objek basis data yang Anda masukkan dalam klausa ini. Biasanya, objek akan berupa database, fungsi, prosedur tersimpan , tabel atau tampilan.
- Pengguna dapat berupa pengguna basis data apa pun. Anda juga dapat mengganti peran untuk pengguna dalam klausa ini jika Anda ingin menggunakan keamanan basis berbasis peran.
- Jika Anda menyertakan klausa opsional dengan GRANT OPTION di akhir perintah GRANT, Anda tidak hanya memberikan pengguna yang ditentukan izin yang didefinisikan dalam pernyataan SQL tetapi juga memberikan pengguna kemampuan untuk memberikan izin yang sama untuk pengguna database lainnya. Untuk alasan ini, gunakan klausul ini dengan hati-hati.
Sebagai contoh, asumsikan Anda ingin memberi pengguna Joe kemampuan untuk mengambil informasi dari tabel karyawan dalam database yang disebut HR. Anda mungkin menggunakan perintah SQL berikut:
PILIH GRAN pada HR.karyawan ke JoeJoe sekarang akan memiliki kemampuan untuk mengambil informasi dari tabel karyawan. Dia tidak akan, bagaimanapun, dapat memberikan izin kepada pengguna lain untuk mengambil informasi dari tabel tersebut karena Anda tidak menyertakan klausa DENGAN HIBURAN GRANT dalam pernyataan GRANT.
Mencabut Akses Database
Perintah REVOKE digunakan untuk menghapus akses basis data dari pengguna yang sebelumnya diberikan akses tersebut. Sintaks untuk perintah ini didefinisikan sebagai berikut:
REVOKE [GRANT OPTION FOR] [izin] ON [objek] DARI [pengguna] [CASCADE]Berikut ini rundown pada parameter untuk perintah REVOKE:
- Izin menentukan izin database untuk menghapus dari pengguna yang diidentifikasi. Perintah tersebut mencabut pernyataan GRANT dan DENY yang sebelumnya dibuat untuk izin yang teridentifikasi.
- Objek dapat berupa objek basis data apa pun. Opsi hak istimewa yang berlaku bervariasi berdasarkan jenis objek basis data yang Anda masukkan dalam klausa ini. Biasanya, objek akan berupa database, fungsi, prosedur tersimpan, tabel atau tampilan.
- Pengguna dapat berupa pengguna basis data apa pun. Anda juga dapat mengganti peran untuk pengguna dalam klausa ini jika Anda ingin menggunakan keamanan basis berbasis peran.
- The GRANT OPTION FOR clause menghapus kemampuan pengguna yang ditentukan untuk memberikan izin yang ditentukan kepada pengguna lain. Catatan : Jika Anda menyertakan GRANT OPTION FOR clause dalam pernyataan REVOKE, izin utama tidak dicabut. Klausul ini hanya mencabut kemampuan pemberian.
- Opsi CASCADE juga mencabut izin yang ditentukan dari pengguna mana pun bahwa pengguna tertentu memberikan izin.
Misalnya, perintah berikut mencabut izin yang diberikan kepada Joe pada contoh sebelumnya:
REVOKE SELECT ON HR.employees FROM JoeSecara eksplisit Menyangkal Akses Database
Perintah DENY digunakan untuk secara eksplisit mencegah pengguna menerima izin tertentu. Ini berguna ketika pengguna adalah anggota peran atau grup yang diberikan izin, dan Anda ingin mencegah pengguna individu itu mewarisi izin dengan membuat pengecualian. Sintaks untuk perintah ini adalah sebagai berikut:
DENY [izin] ON [objek] KE [pengguna] Parameter untuk perintah DENY identik dengan yang digunakan untuk perintah GRANT.
Misalnya, jika Anda ingin memastikan bahwa Matthew tidak akan pernah menerima kemampuan untuk menghapus informasi dari tabel karyawan, berikan perintah berikut: