İstifadəçilər və SQL-də rolu üçün giriş nəzarət

Təhlükəsizliyin, mühüm iş məlumatlarının gigabaytlarını icazəsiz kənarların və öz səlahiyyətlərini aşmağa çalışan insanın göz yaşı gözlərindən qorumaq istəyən verilənlər bazası idarəçiləri üçün çox əhəmiyyətlidir. Bütün əlaqəli verilənlər bazası idarəetmə sistemləri bu təhlükələri minimuma endirmək üçün nəzərdə tutulmuş bir sıra daxili təhlükəsizlik mexanizmlərini təmin edir. Oracle və Microsoft SQL Server kimi qabaqcıl əlaqəli verilənlər bazaları tərəfindən dəstəklənən kompleks istifadəçi / rol strukturuna Microsoft Access tərəfindən təklif olunan sadə parol qorunması üçündür. Bu məqalədə Strukturlaşdırılmış Sualı Dilini (və ya SQL ) həyata keçirən bütün verilənlər bazalarına aid olan təhlükəsizlik mexanizmlərinə diqqət yetirilir. Birlikdə, məlumatların əldə olunması nəzarətinin gücləndirilməsi və məlumatların təhlükəsizliyinin təmin edilməsi prosesindən keçəcəyik.

İstifadəçilər

Server əsaslı verilənlər bazaları bütün kompüter əməliyyat sistemlərində istifadə olunan istifadəçi anlayışını dəstəkləyir. Microsoft Windows NT və Windows 2000-də olan istifadəçi / qrup hiyerarşisi ilə tanışsınızsa, SQL Server və Oracle tərəfindən dəstəklənən istifadəçi / rol qruplarının çox oxşar olduğunu görəcəksiniz.

Verilənlər bazasına daxil olacağınız hər bir şəxs üçün fərdi verilənlər bazası istifadəçi hesabı yaratmaq məsləhət görülür. İstifadəçilər arasında hesabları bölüşmək və ya verilənlər bazasına daxil olmaq üçün lazım olan hər bir istifadəçi növü üçün bir istifadəçi hesabını istifadə etmək texniki cəhətdən mümkündür, amma bu praktikanı iki səbəbdən məhdudlaşdırıram. Birincisi, fərdi hesabatlılığı aradan qaldıracaq - əgər istifadəçi verilənlər bazasına dəyişiklik edərsə (məsələn, özünü $ 5,000 yüksəltməklə) audit jurnalının istifadəsi ilə müəyyən bir şəxsə geri qayıda bilməyəcəksiniz. Bundan əlavə, müəyyən bir istifadəçi təşkilatınızı tərk edərsə və onun verilənlər bazasından çıxışını aradan qaldırmaq istəyirsənsə, bütün istifadəçilərə güvənən şifrəni dəyişməyə məcbur olacaqsınız.

İstifadəçi hesabı yaratma üsulları platformadan platforma dəyişir və dəqiq əməliyyatlar üçün DBMS-ə dair sənədlərə müraciət etməlisiniz. Microsoft SQL Server istifadəçiləri sp_adduser saxlanılan prosedurun istifadəsini araşdırmalıdırlar. Oracle verilənlər bazası idarəçiləri CREATE USER komutunu faydalı tapacaqdır. Alternativ autentifikasiya sxemlərini də araşdırmaq istəyə bilərsiniz. Məsələn, Microsoft SQL Server, Windows NT Integrated Security istifadə dəstəkləyir. Bu sxem çərçivəsində istifadəçilər, Windows NT istifadəçi hesabları ilə verilənlər bazasında müəyyən edilir və verilənlər bazasına daxil olmaq üçün əlavə bir istifadəçi kimliyi və şifrəsini daxil etmək tələb olunmur. Bu yanaşma verilənlər bazası administratorları arasında son dərəcə populyardır, çünki hesab idarəçiliyinin yükünü şəbəkə idarəçiliyinə ötürür və son istifadəçiyə bir giriş açma asanlığı təmin edir.

Roles

Bir az sayda istifadəçiyə sahib bir mühitdə olsanız, ehtimal ki, istifadəçi hesabı yaratmaq və onlara birbaşa icazə vermək sizin ehtiyaclarınız üçün kifayətdir. Lakin, çox sayda istifadəçiniz varsa, ehtimal ki, hesabların saxlanması və lazımi icazələrin saxlanması yükü ilə üzləşəcəksiniz. Bu yükü asanlaşdırmaq üçün relsli məlumat bazaları rolların anlayışını dəstəkləyir. Verilənlər bazası rolları Windows NT qruplarına oxşar şəkildə işləyir. İstifadəçi hesabları rollara təyin edilmiş və icazələrin sonra fərdi istifadəçi hesablarından çox deyil, rolu təyin edilmişdir. Məsələn, biz bir DBA rolu yarada və sonra bu rol üçün inzibati işçilərimizin istifadəçi hesablarını əlavə edə bilərik. Bunu etdikdən sonra, sadəcə rolu üçün icazəni təyin etməklə bütün mövcud (və gələcək) administratorlara xüsusi icazə verə bilərik. Bir daha, rol yaratmaq üçün prosedurlar platformadan platformaya dəyişir. Oracle DBA'lar CREATE ROLE sözdizimini istifadə edərkən MS SQL Server administratorları sp_addrole saxlanılan proseduru araşdırmalıdır.

Rəqəmlər vermək

İndi bazamızı verilənlər bazasına əlavə etdik ki, icazələrin əlavə edilməsi ilə təhlükəsizliyin gücləndirilməsinə başlama vaxtı gəldi. İlk addım istifadəçilərə müvafiq verilənlər bazası icazələrini vermək olacaq. Bunu SQL GRANT ifadəsini istifadə etməklə həyata keçirəcəyik.

Bəyanatın sintaksisi:

GRANT
[ON

]

[GRANT OPTION ilə]

İndi bu xətt-line-a nəzər salaq. Birinci xətt, GRANT , verdiyimiz xüsusi masa icazələrini təyin etməyə imkan verir. Bunlar ya masa səviyyəli icazələr (SELECT, INSERT, UPDATE və DELETE kimi) və ya verilənlər bazası icazələri (CREATE TABLE, ALTER DATABASE və GRANT kimi) ola bilər. Birdən çox icazə bir GRANT hesabatında verilə bilər, lakin masa səviyyəli icazələrin və verilənlər bazası səviyyəsində icazələrin bir ifadədə birləşdirilə bilməz.

İkinci satır, ON

, masa səviyyəli icazələrin təsirlənmiş cədvəlini təyin etmək üçün istifadə olunur. Veritabanı səviyyəsində icazələrin verilməsi halında bu xətt çəkilmir. Üçüncü xətt, icazə verilən istifadəçi və ya rolu müəyyənləşdirir.

Nəhayət, dördüncü xətt, GRANT OPTION ilə, isteğe bağlıdır. Bu xətt bəyanata daxil edildikdə, təsirlənən istifadəçinin eyni icazələrin digər istifadəçilərə verilməsi də icazə verilir. İzinlərin rolu təyin edildikdə, GRANT OPTION İLƏ ilə qeyd edilə bilməz.

Nümunələr

Bir neçə nümunəyə baxaq. Bizim ilk ssenarimizdə yaxın vaxtlarda müştərilərin qeydlərini əlavə etmək və saxlayacaq 42 məlumat girişi operatoru qrupu işə saldıq. Onlar Müştərilər cədvəlində məlumat əldə edə, bu məlumatı dəyişə və cədvəldə yeni qeydlər əlavə etməlidirlər. Onlar bir verilənlər bazasından tamamilə silmək mümkün olmur. Birincisi, hər bir operator üçün istifadəçi hesabı yaratmalı və sonra hamısını DataEntry yeni bir rol əlavə etməlidir. Bundan sonra, onlara müvafiq icazələrin verilməsi üçün aşağıdakı SQL ifadəsini istifadə etməliyik:

GRANT SEÇİN, SİSTEMİ, YENİLƏNİB
Müştərilər haqqında
DataEntry'ye

Və bunun hamısı budur! İndi veritabanı səviyyəsində icazələrin atıldığımız bir vəziyyətə baxaq. DBA rolu üzvlərinə veritabanımıza yeni tablolar əlavə etməyə icazə vermək istəyirik. Bundan başqa, biz digər istifadəçilərə eyni şəkildə icazə verə bilmək istəyərik. Burada SQL ifadəsi:

GRANT CREATE TABLE
DBA'ya
İSTİFADƏ

DBA'larımızın bu icazəni digər istifadəçilərə verə biləcəyini təmin etmək üçün GRANT OPTION xətti ilə daxil etdik.

İzinlərin çıxarılması

Təqdim edildikdən sonra, bir daha sonra onları ləğv etmək çox vaxt tələb olunur. Xoşbəxtlikdən, SQL əvvəllər verilən icazələrin aradan qaldırılması üçün REVOKE əmri ilə bizə təmin edir. İşdə sözdizimi:

REVOKE [QEYDİYYAT VERİLMƏSİ]
ON


FROM

Bu komutun sintaksisinin GRANT komutuna oxşar olduğunu görəcəksiniz. Yalnız fərq fərqlidir ki, GRANT OPTION ilə REVOKE komanda xəttində deyil, komutun sonunda deyil. Bir misal olaraq, Müştərilərin məlumat bazasından qeydləri aradan qaldırmaq üçün Məryəmə daha əvvəl verilmiş icazəni ləğv etmək istəyirik. Aşağıdakı əmri istifadə edəcəyik:

REVOKE DELETE
Müştərilər haqqında
Məryəmdən

Və bunun hamısı budur! Microsoft SQL Server tərəfindən dəstəklənən bir əlavə mexanizm var - sözügedən DENY əmri. Bu komanda bir istifadəçiyə başqa cari və ya gələcək rol üzvlüyünə sahib ola biləcək bir icazə vermək üçün istifadə edilə bilər. İşdə sözdizimi:

DENY
ON


Nümunələr

Əvvəlki nümunəyə dönsək, Məryəm də Müştərilərin cədvəlinə daxil olan Menecerlər rolunun üzvü olduğunu təsəvvür edək. Əvvəlki REVOKE bəyanatı masaya girişdən imtina etmək üçün kifayət deyil. Bu, istifadəçi hesabını hədəf alan bir GRANT hesabatı ilə ona verilən icazəni aradan qaldırmaqla, lakin onun İdarəçilər rolunda üzvlüyü ilə əldə edilmiş icazələri təsir etməyəcəkdir. Lakin, bir DENY bəyanatından istifadə edərsə, izni onun mirasını blok edəcək. İşdə əmr:

DENY DELETE
Müştərilər haqqında
Məryəmə

DENY əmri əsasən verilənlər bazasına giriş nəzarətində "mənfi icazə" yaradır. Daha sonra Müştərilər cədvəlində satırları silmək üçün Məryəmə icazə vermək istəsəniz, sadəcə GRANT əmrini istifadə edə bilmərik. Bu əmr dərhal mövcud DENY tərəfindən ləğv ediləcəkdir. Bunun əvəzinə, biz əvvəlcə mənfi icazə girişini aradan qaldırmaq üçün REVOKE əmrini istifadə edəcəyik:

REVOKE DELETE
Müştərilər haqqında
Məryəmdən

Bu komandanın müsbət bir icazə çıxarmaq üçün istifadə etdiyi tam olaraq eyni olduğunu görəcəksiniz. DENY və GRANT əmrlərinin eyni şəkildə işlədiyini unutmayın * mdash; ikisi də verilənlər bazasına giriş nəzarəti mexanizmində icazələrin (müsbət və ya mənfi) yaradır. REVOKE əmri, müəyyən istifadəçi üçün bütün müsbət və mənfi icazələri aradan qaldırır. Bu əmr verildikdən sonra, Məryəm icazə verən bir rolun üzvü olduqda, sətirləri sətirdən silə bilər. Alternativ olaraq, DELETE icazəsini birbaşa hesabına təmin etmək üçün bir GRANT əmri verilə bilər.

Bu məqalənin gedişində, Standart Sorgulama Dili tərəfindən dəstəklənən giriş nəzarət mexanizmləri haqqında yaxşı bir şey öyrəndiniz. Bu giriş sizi yaxşı bir başlanğıc nöqtəsi ilə təmin etməlidir, amma sisteminiz tərəfindən dəstəklənən təhlükəsizlik tədbirlərini öyrənmək üçün DBMS sənədlərinizə istinad etməyə təşviq edirəm. Bir çox verilənlər bazasının xüsusi sütunlara icazə verilməsi kimi daha inkişaf etmiş giriş nəzarət mexanizmlərini dəstəklədiklərini görəcəksiniz.