Akses Kontrol kanggo Pangguna lan Peranan ing SQL

Keamanan paling penting kanggo pangurus basis data sing ngupaya nglindhungi gigabyte data bisnis penting saka paningale saka wong njaba sing ora sah lan insiders nyoba ngluwihi panguwasa. Kabeh sistem manajemen basis data relasional nyedhiyakake sawetara mekanisme keamanan intrinsik sing dirancang kanggo ngurangi ancaman kasebut. Sabanjure ranging saka proteksi sandhi prasaja sing ditampa dening Microsoft Access menyang struktur pangguna / peran komplit sing didhukung dening database hubungan maju kaya Oracle lan Microsoft SQL Server. Artikel iki fokus ing mekanisme keamanan sing umum kanggo kabeh database sing nglakokake Structured Query Language (utawa SQL ). Bareng, kita bakal mlaku liwat proses ngiyatake kontrol akses data lan njamin keamanan data sampeyan.

Pangguna

Database basis server kabeh ndhukung konsep pangguna sing padha karo sistem operasi komputer. Yen sampeyan kenal karo hirarki pangguna / klompok sing ditemokake ing Microsoft Windows NT lan Windows 2000, sampeyan bakal nemokake yen klompok pangguna / peran sing didhukung dening SQL Server lan Oracle padha banget.

Penting banget kanggo nggawe akun panganggo database individu kanggo saben wong sing bakal ngakses database. Iku kanthi teknis bisa kanggo nuduhake akun antarane pangguna utawa mung nggunakake akun siji kanggo saben jinis pangguna sing perlu kanggo ngakses database, nanging aku banget ora ngalangi laku iki kanggo rong alasan. Kaping pisanan, bakal ngilangi akuntabilitas individu-manawa pangguna ndadekake owah-owahan menyang basis data (ayo ngomong kanthi menehi dhuwit $ 5,000 mundhak), sampeyan ora bakal bisa nglacak manawa wong tartamtu liwat nggunakake log audit. Salajengipun, manawi pangguna tartamtu nilar organisasi sampeyan lan sampeyan pengin mbusak aksesipun saking basis data, sampeyan bakal dipeksa ngganti tembung sandhi sing dianggo kabeh.

Cara nggawe akun panganggo beda-beda saka platform menyang platform lan sampeyan kudu takon dokumentasi spesifik DBMS kanggo prosedur sing bener. Pangguna Microsoft SQL Server ngirim neliti panggunaan sp_adduser sing disimpen prosedur. Administrator basis data Oracle bakal nemokake perintah CREATE USER migunani. Sampeyan uga pengin nliti rencana otentikasi alternatif. Contone, Microsoft SQL Server ndhukung nggunakake Windows NT Integrated Security. Ing ngisor iki rencana, para pengguna diidentifikasi ing basis data dening akun panganggo Windows NT lan ora kudu nglebokaké ID panganggo lan tembung sandhi tambahan kanggo ngakses database. Pendekatan iki arang banget populer ing antarane administrator basis data amarga ngowahi beban manajemen akun menyang staf administrasi jaringan lan nyedhiyakake ease saka siji tandha-tandha menyang pangguna pungkasan.

Tumindak

Yen sampeyan ana ing sawijining lingkungan karo sawetara panganggo sing cilik, sampeyan bakal nemokake menawa nggawe akun panganggo lan menehi ijin kanthi langsung marang cukup kanggo kabutuhan. Nanging, yen sampeyan duwe akeh panganggo, sampeyan bakal paling kasep dening beban ngreksa akun lan ijin sing tepat. Kanggo ngilangi beban kasebut, basis data relasional ndhukung pemikiran saka peran. Dhokumèntasi basis data duwé fungsi sing padha karo grup Windows NT. Akun panganggo ditugasake kanggo peran lan ijin sing banjur ditugasake ing peranan kanthi tinimbang akun panganggo individu. Contone, kita bisa nggawe peran DBA lan nambah akun panganggo staf administrasi kita ing peran iki. Sawise kita wis rampung, kita bisa nemtokake ijin tartamtu kanggo kabeh administrator saiki (lan mangsa) dening mung menehi ijin kanggo peran. Sawise maneh, tata cara nggawe peran beda-beda saka platform menyang platform. Administrator MS SQL Server ngirim selidik sp_addrole disimpen prosedur nalika Oracle DBAs kudu nggunakake sintesis ROOT Gawe.

Ijin Granting

Saiki kita wis nambahake pangguna menyang database, wektu kanggo miwiti ngiyatake keamanan kanthi nambah idin. Langkah pisanan kita bakal diwenehake ijin basis data sing cocok kanggo pangguna kita. Kita bakal ngrampungake iki kanthi nggunakake statement SQL GRANT.

Punika sintaks saking pernyataan punika:

GRANT
[ON

]
TO
[WITH GRANT OPTION]

Saiki, ayo goleki statement iki saben baris. Ing baris pisanan, GRANT , ngidini kita nemtokake ijin tabel tartamtu sing diwenehake. Iki bisa dadi salah siji ijin tingkat meja (kayata SELECT, INSERT, UPDATE lan DELETE) utawa ijin basis data (kayata CREATE TABLE, ALTER DATABASE and GRANT). Isi luwih saka siji bisa diwenehake ing statement GRANT tunggal, nanging ijin tingkat meja lan ijin tingkat database bisa digabungake ing statement siji.

Baris kapindho, ON

, digunakake kanggo nemtokake tabel sing magepokan kanggo ijin tingkat meja. Baris iki wis dilirwakaké manawa kita menehi idin level database. Baris katelu nemtokake panganggo utawa peran sing diwenehake ijin.

Pungkasan, baris papat, WITH OPTION GRANT, opsional. Yen baris iki kalebu ing pernyataan, pangguna sing kena pengaruh uga diijini ngidini ijin sing padha kanggo pangguna liyane. Elinga yen WITH WITHOUT GRANT ora bisa ditemtokake nalika idin ditugasake kanggo peran.

Conto

Ayo ndeleng conto sawetara. Ing skenario kapisan, kita wis nyiapake sekelompok 42 operator data sing bakal nambah lan ngreksa rekaman pelanggan. Padha kudu bisa ngakses informasi ing tabel Pelanggan, ngowahi informasi kasebut lan nambah cathetan anyar menyang tabel. Wong-wong kudu ora bisa mbusak kabeh rekaman saka database. Pisanan, kita kudu nggawe akun panganggo kanggo saben operator banjur nambah kabeh menyang peran anyar, DataEntry. Sabanjure, kita kudu nggunakake statement SQL ing ngisor iki kanggo menehi ijin kasebut:

PILIH GANTI, MELANGKAH, UPDATE
ON Pelanggan
TO DataEntry

Lan kabeh iku ana! Saiki ayo nliti kasus ngendi kita menehi ijin tingkat basis data. Kita pengin ngidini anggota saka peran DBA kanggo nambah tabel anyar ing database kita. Salajengipun, kita pengin supaya bisa mènèhi idin kanggo pangguna liya. Punika statement SQL:

GRANT CREATE TABLE
TO DBA
WITHOUT GRANT OPTION

Wigati sing disedhiyakake karo baris GANTI PILIHAN kanggo mesthekake yen DBAs bisa menehi ijin iki marang pangguna liyane.

Mbusak ijin

Sawise kita wis menehi ijin, asring mbuktikake kudu mbatalake mau ing wektu salajengipun. Muga-muga, SQL menehi kita prentah REVOKE kanggo mbusak ijin sing diwenehake sadurunge. Punika ing sintaks:

REVOKE [OPERASI GANTI] kanggo
ON


Saka

Sampeyan bakal sok dong mirsani yen sintaks perintah iki meh padha karo perintah GRANT. Bentenipun mung yaiku WITH OPTION GRANT ditetepake ing baris perintah REVOKE tinimbang ing pungkasan perintah kasebut. Minangka conto, ayo bilih kita pengin mbatalake ijin sing dianakake Mary sadurunge kanggo mbusak cathetan saka database Pelanggan. Kita nggunakake perintah ing ngisor iki:

REVOKE DELETE
ON Pelanggan
Saka Maria

Lan kabeh iku ana! Ana siji mekanisme tambahan sing didhukung dening Microsoft SQL Server sing meh disebutake-perintah DENY. Dhawuh iki bisa digunakake kanggo tegas nolak ijin menyang pangguna sing bisa digunakake liwat anggota peran saiki utawa mangsa ngarep. Punika ing sintaks:

DENY
ON


TO

Conto

Bali menyang conto sadurungé, supaya mbayangno yen Mary uga dadi anggota manajer sing uga nduweni akses menyang tabel Pelanggan. Pernyataan REVOKE sadurungé ora bakal cukup kanggo nyulam akses menyang meja kasebut. Iku bakal mbusak ijin sing diwenehake marang dheweke liwat pernyataan GRANT sing ndhukung akun panganggo, nanging ora bakal mengaruhi ijin sing diduweni liwat anggota ing peran Manager. Nanging, yen kita nggunakake statement DENY, bakal mblokir warisan ijin kasebut. Punika printah:

DENY DELETE
ON Pelanggan
TO Mary

Perintah DENY pancen nggawe "ijin negatif" ing kontrol akses basis data. Yen kita mengko arep menehi ijin Mary kanggo mbusak baris saka tabel Pelanggan, kita ora bisa mung nggunakake perintah GRANT. Perintah kasebut bakal langsung ditindih dening DENY sing wis ana. Nanging, kita bakal nggunakake instruksi REVOKE dhisik kanggo mbusak entri ijin negatif kaya ing ngisor iki:

REVOKE DELETE
ON Pelanggan
Saka Maria

Sampeyan bakal ngelingake yen printah iki persis kaya sing digunakake kanggo mbusak ijin positif. Elinga yen DENY lan GRANT nyatakake loro kanthi cara sing padha: mdash, loro-lorone nggawe ijin (positif utawa negatif) ing mekanisme kontrol akses database. Pandhuan REVOKE mbusak kabeh ijin positif lan negatif kanggo pangguna sing ditemtokake. Sawise dhawuh iki diterbitake, Mary bakal bisa mbusak baris saka meja manawa dheweke minangka anggota saka peran sing nduweni ijin kasebut. Utawa, perintah GRANT bisa diterbitake kanggo nyedhiyake ijin DELETE langsung menyang akun dheweke.

Saindhenging artikel iki, sampeyan wis sinau babagan mekanisme kontrol akses sing didhukung dening Standar Query Language. Pengenalan iki kudu nyedhiyani sampeyan kanthi titik wiwitan sing apik, nanging aku ngajak sampeyan kanggo ngrujuk dokumentasi DBMS kanggo sinau langkah-langkah keamanan ditingkatake sing didhukung dening sistem sampeyan. Sampeyan bakal nemokake manawa akeh basis data ndhukung mekanisme kontrol akses sing luwih maju, kayata menehi ijin ing kolom tartamtu.