Kontrol Akses untuk Pengguna dan Peran di SQL

click fraud protection

Semua relasional sistem manajemen basis data menyediakan semacam mekanisme keamanan intrinsik yang dirancang untuk meminimalkan ancaman kehilangan data, korupsi data, atau pencurian data. Mulai dari perlindungan kata sandi sederhana yang ditawarkan oleh akses microsoft ke struktur pengguna/peran yang kompleks yang didukung oleh basis data relasional tingkat lanjut seperti Peramal danMicrosoft SQL Server. Beberapa mekanisme keamanan umum untuk semua database yang mengimplementasikanBahasa Kueri Terstruktur.

Keamanan Tingkat Pengguna

Basis data berbasis server mendukung a pengguna konsep yang mirip dengan yang digunakan dalam sistem operasi komputer. Jika Anda terbiasa dengan hierarki pengguna/grup yang ditemukan di Microsoft Windows NT dan Windows 2000, Anda akan menemukan bahwa pengelompokan pengguna/peran yang didukung oleh SQL Server dan Oracle serupa.

Buat akun pengguna basis data individual untuk setiap orang yang memiliki akses ke basis data Anda.

Hindari penyediaan akun generik yang dapat diakses oleh beberapa orang yang berbeda. Pertama, praktik ini menghilangkan akuntabilitas individu—jika pengguna membuat perubahan pada database Anda (misalkan dengan memberi dirinya kenaikan $ 5.000), Anda tidak akan dapat melacaknya kembali ke orang tertentu melalui penggunaan audit log. Kedua, jika pengguna tertentu keluar dari organisasi Anda dan Anda ingin menghapus aksesnya dari database, Anda harus mengubah kata sandi yang diandalkan oleh semua pengguna.

instagram viewer

Seorang pengembang web
OstapenkoOlena/Getty Images

Metode untuk membuat akun pengguna bervariasi dari platform ke platform dan Anda harus berkonsultasi dengan dokumentasi khusus DBMS Anda untuk prosedur yang tepat. Pengguna Microsoft SQL Server harus menyelidiki penggunaan sp_adduser prosedur tersimpan. Administrator database Oracle akan menemukan find BUAT PENGGUNA perintah berguna. Anda juga mungkin ingin menyelidiki skema otentikasi alternatif. Misalnya, Microsoft SQL Server mendukung penggunaan Keamanan Terpadu Windows NT. Di bawah skema ini, pengguna diidentifikasi ke database oleh akun pengguna Windows NT mereka dan tidak perlu memasukkan ID pengguna dan kata sandi tambahan untuk mengakses database. Pendekatan ini populer di kalangan administrator database karena menggeser beban akun manajemen ke staf administrasi jaringan dan memberikan kemudahan sistem masuk tunggal ke pengguna akhir.

Keamanan Tingkat Peran

Jika Anda berada di lingkungan dengan sejumlah kecil pengguna, Anda mungkin akan menemukan bahwa membuat akun pengguna dan memberikan izin langsung kepada mereka sudah cukup untuk kebutuhan Anda. Namun, jika Anda memiliki banyak pengguna, Anda akan kewalahan dengan mempertahankan akun dan izin yang tepat. Untuk meringankan beban ini, database relasional mendukung peran. Peran database berfungsi sama dengan grup Windows NT. Akun pengguna ditetapkan ke peran dan izin kemudian ditetapkan ke peran secara keseluruhan, bukan akun pengguna individu. Misalnya, Anda dapat membuat peran DBA lalu menambahkan akun pengguna staf administrasi Anda ke peran ini. Setelah itu, Anda dapat menetapkan izin khusus untuk semua administrator saat ini (dan yang akan datang) hanya dengan menetapkan izin ke peran tersebut. Sekali lagi, prosedur untuk membuat peran bervariasi dari satu platform ke platform lainnya. Administrator MS SQL Server harus menyelidiki: sp_addrol prosedur tersimpan sementara Oracle DBA harus menggunakan BUAT PERAN sintaksis.

Memberikan Izin

Sekarang kita telah menambahkan pengguna ke database kita, saatnya untuk mulai memperkuat keamanan dengan menambahkan izin. Langkah pertama kami adalah memberikan izin basis data yang sesuai kepada pengguna kami. Kami akan menyelesaikan ini melalui penggunaan pernyataan SQL GRANT.

Berikut sintaks dari pernyataan tersebut:

HIBAH. 
[DI. 
UNTUK. 
[DENGAN PILIHAN HIBAH]

Sekarang, mari kita lihat pernyataan ini baris demi baris. Baris pertama, HIBAH , memungkinkan kami untuk menentukan izin tabel tertentu yang kami berikan. Ini dapat berupa izin tingkat tabel (seperti SELECT, INSERT, UPDATE, dan DELETE) atau izin database (seperti CREATE TABLE, ALTER DATABASE, dan GRANT). Lebih dari satu izin dapat diberikan dalam satu pernyataan GRANT, tetapi izin tingkat tabel dan izin tingkat database tidak boleh digabungkan dalam satu pernyataan.

Baris kedua, DI

Akhirnya, baris keempat, DENGAN PILIHAN HIBAH, adalah opsional. Jika baris ini disertakan dalam pernyataan, pengguna yang terpengaruh juga diizinkan untuk memberikan izin yang sama kepada pengguna lain. Perhatikan bahwa WITH GRANT OPTION tidak dapat ditentukan saat izin ditetapkan ke peran.

Contoh Hibah Basis Data

Mari kita lihat beberapa contoh. Dalam skenario pertama kami, kami baru-baru ini mempekerjakan sekelompok 42 operator entri data yang akan menambah dan memelihara catatan pelanggan. Mereka harus mengakses informasi di tabel Pelanggan, mengubah informasi ini, dan menambahkan catatan baru ke tabel. Mereka seharusnya tidak dapat sepenuhnya menghapus catatan dari database.

Pertama, kita harus membuat akun pengguna untuk setiap operator dan kemudian menambahkan semuanya ke peran baru, Entri Data. Selanjutnya, kita harus menggunakan pernyataan SQL berikut untuk memberi mereka izin yang sesuai:

HIBAH PILIH, INSERT, UPDATE. 
PADA Pelanggan. 
UNTUK Entri Data. 

Sekarang mari kita periksa kasus di mana kita menetapkan izin tingkat basis data. Kami ingin mengizinkan anggota peran DBA untuk menambahkan tabel baru ke database kami. Selanjutnya, kami ingin mereka dapat memberikan izin kepada pengguna lain untuk melakukan hal yang sama. Berikut pernyataan SQL:

HIBAH BUAT TABEL. 
UNTUK DBA. 
DENGAN PILIHAN HIBAH. 

Perhatikan bahwa kami telah menyertakan baris WITH GRANT OPTION untuk memastikan bahwa DBA kami dapat memberikan izin ini kepada pengguna lain.

Menghapus Izin

SQL menyertakan perintah REVOKE untuk menghapus izin yang diberikan sebelumnya. Berikut sintaksnya:

cabut [PILIHAN HIBAH UNTUK]
DI. 
DARI. 

Anda akan melihat bahwa sintaks perintah ini mirip dengan perintah GRANT. Satu-satunya perbedaan adalah bahwa WITH GRANT OPTION ditentukan pada baris perintah REVOKE daripada di akhir perintah. Sebagai contoh, bayangkan kita ingin mencabut izin yang diberikan sebelumnya kepada Mary untuk menghapus catatan dari database Pelanggan. Kami akan menggunakan perintah berikut:

cabut HAPUS. 
PADA Pelanggan. 
DARI Maria. 

Ada satu mekanisme tambahan yang didukung oleh Microsoft SQL Server yang perlu disebutkan—perintah DENY. Perintah ini dapat digunakan untuk secara eksplisit menolak izin kepada pengguna yang mungkin mereka miliki melalui keanggotaan peran saat ini atau di masa mendatang. Berikut sintaksnya:

MENYANGKAL. 
DI. 
UNTUK. 
instagram story viewer