8. Артықшылықтар


Тұтынушылар артықшылықтары деректер базасының администраторымен беріледі де, деректер мен сұлба объектілерімен жасалатын әрекеттердің қайсысы рұқсат екенін анықтайды. Артықшылықтарды бақылау кезінде, кейде авторизация идентификаторы (Autorization ID) деп те аталатын деректер базасының тұтынушы аты қолданылады. Кейбір ДҚБЖ "тұтынушы" мен "есеп жазбасы" арасын ажыратпайды.

ДҚ тұтынушысының барлық объектілері оның сұлбасына кіреді. Практика жүзінде бір тұтынушы әдетте бір сұлбамен ассоцияланады, алайда стандарт бір тұтынушыға өзара байланысқан объектілері бар бірнеше сұлба келеді.

Идентификация процедурасының табысты аяқталуымен тұтынушы сеансы ашылып, деректер базасымен байланыс орнатылады.

Екі түрлі артықшылықтар кездеседі:

  • жүйелік артықшылықтар (system privileges), деректер базасына жалпы жетуді бақылайды;
  • объекттік артықшылықтар (object privileges), деректер базасының белгілі объектілеріне жетуді бақылайды.

Артықшылықтармен жұмыс істеуде қолданылатын синтаксис практика жүзінде стандарттан әлдекайда кең, алайда нақты ДҚ архитектурасына байланысты.

Артықшылармен жұмыс істеуде келесі ережелер анықталған:

  • Объект құрған тұтынушынікі болып саналады (егер синтаксиспен объекттің сәйкес құзыры бар басқа тұтынушымен құрылғаны көрсетілмесе);
  • Объект иесі, стандартқа сәйкес, өзінің объектінің артықшылықтарын өзгертуге мүмкіндігі бар (Oracle секілді коммерциялық ДҚБЖ-ларда, құзырлар деңгейлері әлдеқайда күрделі иерархияны құрады);
  • Объектілік артықшылық әрқашан нақты объектпен, ал жүйелік – жалпы объектілермен сәйкестендіріледі.

SQL тілі келесі артықшылықтарды қолдайды:

  • ALTER - ALTER TABLE операторын орындауға мүмкіндік береді;
  • SELECT – сұрату операторын орындауға мүмкіндік береді;
  • INSERT – кестеге жолдарды қосу операторын орындауға мүмкіндік береді;
  • UPDATE – кейбір алаңдар немесе толық кестеде мәндерді өзгертуге мүмкіндік береді;
  • DELETE – кестеден жолдарды алып тастауға мүмкіндік береді;
  • REFERENCES – сыртқы кілттің аталық кілті ретінде кестенің кез келген алаңын немесе кейбірін қолдануға мүмкіндік береді;
  • INDEX – индекстерді құруға мүмкіндік береді (SQL-92 стандартына кірмейді);
  • DROP – деректер базасының сұлбасынан кестені жоюға мүмкіндік береді.

Артықшылықтарды беру мен алып тастау

Артықшылықтарды беру GRANT SQL-операторымен орындалады, және SQL-92 стандартында төмендегідей сипатталады:

ON { [TABLE] table_name

| DOMAIN domain_name

| COLLATION collation_name

| CHARACTER SET set_name

| TRANSLATION translation_name }

TO { user_name .,: } | PUBLIC

[ WITH GRANT OPTION ]

мұндағы privilege төмендегідей анықталады

{ ALL PRIVELEGES }

| SELECT

| DELETE

| INSERT [(field .,:)]

| UPDATE [(field .,:)]

| REFERENCES [(field .,:)]

| USAGE

GRANT сөзінен кейін барлық берілетін артықшылықтар тізімін беруге болады.

ON сөзі артықшылық берілетін объектіні анықтайды.

TO артықшылық қойылатын тұтынушылар үшін.

Осылайша, GRANT SELECT ON tbl1 TO PUBLIC операторы; tbl1 кесте үшін барлық бар тұтынушыларға ғана емес, деректер базасына кейіннен қосылатын тұтынушыларға SELECT операторының орындалуына рұқсат береді.

GRANT UPDATE ON tbl1 TO user1 операторы; user1 тұтынушыға UPDATE артықшылығын барлық кестеге береді, ал GRANT UPDATE (f1,f2) ON tbl1 TO user1 операторы UPDATE артықшылығын тек f1 мен f2 алағдарын өзгерту үшін береді.

WITH GRANT OPTION сөзі артықшылық алып жатқан тұтынушыға алынған артықшылықтарды беру мүмкіндігін беретін қосымша GRANT OPTION артықшылығын береді.

Артықшылықты қайтару REVOKE SQL-операторымен орындалады да, SQL-92 стандартында келесідей сипатталады:

REVOKE [ GRANT OPTION FOR ]

{ ALL PRIVILEGES } | privilege

ON { [TABLE] table_name

| DOMAIN domain_name

| COLLATION collation_name

| CHARACTER SET set_name

| TRANSLATION translation_name }

FROM { PUBLIC | user_name .,: }

[ CASCADE | RESTRICT ]

REVOKE сөзінен соң үтір арқылы барлық қайтарылатын артықшылықтардың тізімін келтіруге болады.

ON сөзі артықшылық қайтарылатын объектіні анықтайды.

FROM сөзі артықшылық қайтарылатын тұтынушы немесе тұтынушыларды көрсетеді.

GRANT OPTION FOR сөзі артықшылықтардың өзін емес, тек басқа тұтынушыларға беру хұқығын қайтарады.

Егер бір артықшылық WITH GRANT OPTION опциясымен бірге бір қолданушыдан келесі қолданушыға бірнеше рет реттілігімен берілетін болса, онда тәуелді артықшылықтың тізбегі құрылады. CASCADE және RESTRICT сөздері артықшылықтарда осы тізбек түйіндерінің біреуін жойған жағдайда қалай пайда болатынын анықтайды.

Егер тәуелді артықшылықтарды жойған кездегі объект үшін ешқандай артықшылық қалмаса, онда бұл объект құрастырылмаған болады. Мысалы, артықшылық жоғалтқандағы құрылған кестеге сұраныс берген кезде ұғым пайда болады. Бұл жағдай 8.1-суретте көрсетілген.

8.1-сурет. Құрастырылмаған объектінің пайда болуы

Егер артықшылықты жойған кезде құрастырылмаған объект пайда болса, онда RESTRICT сөзі REVOKE операторының орындалуына жол бермейді және ешқандай артықшылықтар жойылмайды.

Егер CASCADE сөзі көрсетілсе және артықшылықты жойған кезде құрастырылмаған объект пайда болса, онда барлық құрастырылмаған объектілер(ұғымдар) жойылады. Ал құрастырылмаған шектеулер кестелерде ALTER TABLE оператордың орындалуымен автоматты түрде өзгертіледі, ALTER DOMAIN оператордың орындалуымен домендерде автоматты түрде өзгертіледі.

Рольдері

Роль дегеніміз артықшылықтардың деректі жиынтығы. Артықшылықтарды біріктіру ролі едәуір артықшылықтарды енгізу мен алып тастау процесін жеңілдетеді. Егер ДББЖ(СУБД) рольдерді басқаруды қолдаса, онда SQL-де GRANT, REVOKE операторларда қолданушының атының орнына рольдің атын көрсетуге болады.

Oracle деректер базасындағы көпдеңгейлі бақылаудың кіруі

Қазіргі заманғы коммерциялық ДББЖ-де бақылау саласы жөнінен Oracle ең мықты деректер базасы болып табылады. Барлық артықшылықтар жүйелік және объектілік болып бөлінеді.

GRANT операторының синтаксисі қолданушыға жіберуді немесе рольдерге және жүйелік өкілеттігінің рольдеріне беруді орындайтын келесі схема ретінде берілуі мүмкін:

қолданушыға беру немесе рольдерге және жүйелік өкілеттігінің рольдеріне беру

Қолданушыға немесе Oracle ДБ – ның қарапайым объектілерінің артықшылық рольдеріне беру келесі схеманың мысалында көрсетілген:

Қолданушыға немесе Oracle ДБ – ның қарапайым объектілерінің артықшылық рольдеріне беру

system_priv – беретін жүйелік өкілеттік.

role - беретін роль.

TO – жүйелік немесе объектілік өкілеттікті қолданушыға немесе рольдерге беруді анықтайды.

PUBLIC - оператор жүйелік немесе объектілік өкілеттіктерді анықтай отырып, барлық қолданушыға беретінін көрсетеді.

WITH ADMIN OPTION – жүйелік немесе объектілік өкілеттіктерді, рольді алған қолданушыға бұларды кейінгі басқа қолданушыға немесе рольдерге беруге рұқсат береді. Мұндай рұқсат рольдерді өзгертуге немесе алып тастауға мүмкіндік береді. (Берілген опция синтаксистік түрде SQL-92 стандартынан айырмашылығы бар.)

object_priv – келесі мағыналардың біреуі айқындалатын артықшылықтарды анықтайды:

  • ALTER
  • DELETE
  • EXECUTE (тек рәсімдер, функциялар және пакеттер үшін)
  • INDEX (тек кестелер үшін)
  • INSERT
  • REFERENCES (тек кестелер үшін)
  • SELECT
  • UPDATE.

column - артықшылықтарды кең тарататын кестелердің бағаналарын немесе ұғымды анықтайды.

ON – артықшылық бере отырып, объектіні (кесте, түр, сақталған рәсім, суреттер) анықтайды.

Мысалы:

GRANT SELECT, UPDATE ON tbl1 TO PUBLIC

GRANT REFERENCES (f1), UPDATE (f1, f2, f3)

ON user1.tbl1 TO user2

Oracle деректер базасына кіру бақылау жүйесін сипаттайтын GRANT операторымен берілген жүйелік өкілеттіктің тізімін қарастырамыз.

Жүйелік өкілеттікке келесі тізімдер жатады:

ALTER ANY CLUSTER – өкілеттікті алған қолданушыға кез келген схемада кез келген кластерді өзгертуге болады;

ALTER ANY INDEX – кез келген схемада кез келген индексті өзгертуге болады;

ALTER ANY PROCEDURE - кез келген сақталған функцияларды, рәсімді, пакетті кез келген схемада өзгертуге болады;

ALTER ANY ROLE - деректер базасында кез келген рольдерді өзгертуге болады;

ALTER ANY SEQUENCE - деректер базасында кез келген реттілікті өзгертуге болады;

ALTER ANY SNAPSHOT – деректер базасында кез келген фотосуреттерді өзгертуге болады;

ALTER ANY TABLE - схемада кез келген кестені немесе түрді өзгертуге болады;

ALTER ANY TRIGGER –деректер базасындағы кез келген триггерді кез келген схемада рұқсат беруге, тиым салуға немесе құрастыруға ерік береді; деректер базасындағы кез келген рольді өзгерту;

ALTER DATABASE- деректер базасын өзгертуге болады;

ALTER PROFILE – бағытты өзгертуге болады;

ALTER RESOURCE COST – қолданушының жұмыс сеансы ресурстар бағасын орнатуға болады;

ALTER ROLLBACK SEGMENT – шегіну сегменттерін өзгертуге болады;

ALTER SESSION - ALTER SESSION операторының орындалуына жол береді;

ALTER SYSTEM - ALTER SYSTEM операторының орындалуына жол береді;

ALTER TABLESPACE – кестелік кеңістіктің өзгертуіне жол береді;

ALTER USER – кез келген қолданушы үшін(пароль, кестелік кеңістіктің кіру саны, жүктелген бағыт т.с.с ) параметрлерді өзгертуіне жол береді;

ANALYZE ANY - кесте, кластер немесе индексті кез келген схемада талдауға болады AUDIT ANY – кез келген объектінің аудитін әр түрлі схемада орындауға болады;

AUDIT SYSTEM - SQL-оператор AUDIT орындалуына жол береді;

BACKUP ANY TABLE - схемадан басқа қолданушының объектілер экспортын орындауға мүмкіндік береді;

BECOME USER – басқа қолданушы ретінде болуға рұқсат етеді(деректер базасындағы импорт болғанда қажет етеді);

COMMENT ANY TABLE – кез келген кесте, түр немесе бағана үшін түсініктемелердің осы өкілеттіктерді алған қолданушыға әр түрлі схемада рұқсат етеді;

CREATE ANY CLUSTER ;

CREATE ANY INDEX ;

CREATE ANY LIBRARY ;

CREATE ANY PROCEDURE ;

CREATE ANY SEQUENCE ;

CREATE ANY SNAPSHOT ;

CREATE ANY SYNONYM ;

CREATE ANY TABLE ;

CREATE ANY TRIGGER ;

CREATE ANY VIEW ;

CREATE CLUSTER - өзінің схемасында кластер құруға рұқсат етеді(жүйелік өкілеттік, ANY сөзі қолданылмайтын, қолданушының меншікті схемасына кең таралады);

CREATE DATABASE LINK - өзінің схемасында деректер базасының линкін құруға болады;

CREATE PROCEDURE ;

CREATE PROFILE ;

CREATE PUBLIC DATABASE LINK – деректер базасының ортақ кіретін линктерін құруға болады;

CREATE PUBLIC SYNONYM ;

CREATE ROLE – рольдерді құруға болады;

CREATE ROLLBACK SEGMENT ;

CREATE LIBRARY ;

CREATE SEQUENCE;

CREATE SESSION – деректер базасымен байланысуын қамтамасыз етеді;

CREATE SNAPSHOT;

CREATE SYNONYM;

CREATE TABLE;

CREATE TABLESPACE ;

CREATE TRIGGER;

CREATE USER ;

CREATE VIEW ;

DELETE ANY TABLE ;

DROP ANY CLUSTER ;

DROP ANY INDEX – кез келген индексті жоюға болады;

DROP ANY LIBRARY ;

DROP ANY PROCEDURE ;

DROP ANY ROLE ;

DROP ANY SEQUENCE ;

DROP ANY SNAPSHOT ;

DROP ANY SYNONYM ;

DROP ANY TABLE ;

DROP ANY TRIGGER ;

DROP ANY VIEW ;

DROP LIBRARY ;

DROP PROFILE ;

DROP PUBLIC DATABASE LINK ;

DROP PUBLIC SYNONYM ;

DROP ROLLBACK SEGMENT ;

DROP TABLESPACE ;

DROP USER ;

EXECUTE ANY PROCEDURE – рәсімдерді және функцияларды орындауға рұқсат етеді, және де әр түрлі схемада пакеттердің ортақ кіру өзгертулерге сілтемелерді орындайды;

FORCE ANY TRANSACTION – фиксация жасауға немесе локалдық деректер базасында әр түрлі күдікті таралған транзакцияның шегінуін және де таралған транзакцияның жаңылуын(сбой) орындайды;

FORCE TRANSACTION - фиксация жасауға немесе локалдық деректер базасында меншікті күдікті таралған транзакцияның шегінуін орындайды;

GRANT ANY PRIVILEGE ;

GRANT ANY ROLE ;

INSERT ANY TABLE ;

LOCK ANY TABLE ;

MANAGE TABLESPACE –кестелік кеңістіктің автономиялы режимнен оперативті режимге ауысуын немесе керісінше ауысуын қамтамасыз етеді және де кестелік кеңістіктің көшірмесін орындайды;

RESTRICTED SESSION ;

SELECT ANY SEQUENCE ;

SELECT ANY TABLE ;

UNLIMITED TABLESPACE – кез келген кестелік кеңістіктің шектеусіз қолдануын қамтамасыз етеді. Бұл өкілеттікті беру кестелік кеңістіктің кіру санына қолданушы үшін ертерек орнатылған кез келген шектеулерді қайта жабады;

UPDATE ANY TABLE – әр түрлі схемада кестелердегі және түрдегі жолдарды өзгертуге болады.

Oracle деректер базасын құрғанда кейбір рольдер автоматты түрде орындалады. Oracle деректер базасында автоматты түрде құрылатын рольдер және жүйелік өкілеттіктердің берген тізімдері мен рольдерін келесі кестеден көруге болады. Бұл рольдер берілген өкілеттіктердің иерархиясын орнатады.

Роль

Берілген жүйелік өкілеттіктер мен рольдер

CONNECT

ALTER SESSION

CREATE CLUSTER

CREATE DATABASE LINK

CREATE SEQUENCE

CREATE SESSION

CREATE SYNONYM

CREATE TABLE

CREATE VIEW

RESOURCE

CREATE CLUSTER

CREATE PROCEDURE

CREATE SEQUENCE

CREATE TABLE

CREATE TRIGGER

DBA

Барлық жүйелік өкілеттіктер WITH ADMIN OPTION

EXP_FULL_DATABASE (роль)

IMP_FULL_DATABASE (роль)

EXP_FULL_DATABASE

SELECT ANY TABLE

BACKUP ANY TABLE

INSERT, UPDATE, DELETE

ON sys.incexp, sys.incvid, sys.incfil

Деректер базасының администраторы берілген артықшылықтарды алдын ала көру үшін деректер сөзкөмегінің келесі жүйелік түсініктерді пайдалануға болады:

Жүйелік түсінік

Сипатталуы

ALL_COL_PRIVS

Басқа қолданушыға немесе PUBLIC-ке кестенің бағаналары үшін берілген артықшылықтар тізімін құрайды;

Бағаналардан тұрады:

GRANTOR (артықшылықты кім береді)

GRANTEE (кімге артықшылықты береді)

TABLE_SCHEMA ( объектінің схемасы)

TABLE_NAME

COLUMN_NAME

PRIVILEGE

ALL_COL_PRIVS_MADE

Артықшылық беретін немесе қолданушылар ие бола алатын бағаналар артықшылық тізімін құрайды.

Бағаналардан тұрады:

GRANTEE

OWNER

GRANTOR

TABLE_NAME

COLUMN_NAME

PRIVILEGE

ALL_TAB_PRIVS

PUBLIC –ке немесе басқа қолданушыға берілген кесте үшін артықшылықтар тізімін құрайды.

Бағаналардан тұрады:

GRANTOR

GRANTEE

TABLE_NAMEPRIVILEGE

DBA_PROFILES

Деректер базасындағы барлық бағытының сипаттамасын және олардың шектеулерін анықтайтын бағытын құрайды.

Бағаналардан тұрады:

PROFILE

RESOURCE_NAME

LIMIT

DBA_ROLES

Деректер базасындағы барлық рольдердің аталатын тізімін құрайды.

Бағаналардан тұрады:

ROLE

PASSWORD_REQUIRED

DBA_ROLE_PRIVS

Басқа қолданушыға немесе рольдерге беретін рольдердің тізімін құрайды.

Бағаналардан тұрады:

GRANTEE (кім өкілеттікті алады)

GRANTED_ROLE (берілетін роль)

DBA_SYS_PRIVS

Қолданушыға және рольдерге берген жүйелік өкілеттік тізімдерін құрайды.

Бағаналардан тұрады:

GRANTEE (кім өкілеттікті алады)

PRIVILEGE (жүйелік өкілеттіктің атауы)

ADMIN_OPTION

DBA_TAB_PRIVS

Деректер базасының объектілер үшін барлық берілген өкілеттіктердің тізімін құрайды.

Бағаналардан тұрады:

GRANTEE

OWNER

TABLE_NAME

GRANTOR PRIVILEGE

DBA_USERS

Деректер базасының барлық қолданушылар туралы ақпараттардан тұрады.

Бағаналардан тұрады:

USERNAME

USER_ID

PASSWORD

DEFAULT_TABLESPACE

PROFILE

ROLE_SYS_PRIVS

Жүйелік өкілеттіктердің рольдеріне беру туралы ақпараттан тұрады.

Бағаналардан тұрады:

ROLE

PRIVILEGE

ROLE_TAB_PRIVS

Кестелер мен бағаналарға арналған артықшылықтарды рольдерге беру жөнінде ақпараттан тұрады.

Бағаналардан тұрады:

ROLE

OWNER

TABLE_NAME

COLUMN_NAME

PRIVILEGE

SYSTEM_PRIVILEGE_MAP

Барлық жүйелік өкілеттіктің тізімін құрайды.

TABLE_PRIVILEGE_MAP

Кестелер мен бағаналарға кіру артықшылығының кодтар туралы ақпараттан тұрады.

USER_ROLE_PRIVS

Қолданушыға беретін рольдердің тізімін құрайды.

Бағаналардан тұрады:

USERNAME

GRANTED_ROLE

USER_SYS_PRIVS

Қолданушыға берілген барлық жүйелік өкілеттіктің тізімін құрайды.

Бағаналардан тұрады:

USERNAME

PRIVILEGE

USER_TAB_PRIVS

Қолданушы артықшылықтарды беру иесі және алушы немесе тұлға болып табылатын объектілер үшін артықшылықтар тізімін құрайды.

Бағаналардан тұрады:

GRANTEE (кімге артықшылық беріледі)

OWNER TABLE_NAME (объектінің аты)

GRANTOR (артықшылықты кім береді)

USER_TAB_PRIVS_MADE

Қолданушы ие болатын объектілер үшін барлық артықшылықтарды беру тізімін құрайды.

Бағаналардан тұрады:

GRANTEE

GRANTOR

TABLE_NAME

PRIVILEGE

USER_TAB_PRIVS_RECD

Қолданушы артықшылықты алушы болып табылатын объектілер үшін барлық артықшылықтарды беру тізімін құрайды.

Бағаналардан тұрады:

OWNER (объектіні иеленуші)

TABLE_NAME (объектінің аты)

GRANTOR (артықшылықты беретін қолданушының аты)

PRIVILEGE

Бұл жүйелік түсініктер Oracle деректер базасының администраторына жүктеуді, қайта беруді, жүйелік және объектілік артықшылықтардың өзара тәуелділікті толығымен бақылауға мүмкіндік береді.