Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lab_03_Oracle (Grant Revoke) (1) / Theory_Grant_Revoke_Dict (3_Oracle)

.pdf
Скачиваний:
6
Добавлен:
11.02.2015
Размер:
584.8 Кб
Скачать

1. Керування доступом (теоретичні відомості)

1.1. Основні команди керування доступом до БД

Права доступу до об'єкта бази даних (базової таблиці, подання, індекса) має тільки власник (творець) об'єкта. Власник об'єкта може надавати права доступу до об'єкта іншим користувачам за допомогою речення GRANT, що має формат:

GRANT список_привілеїв ON об'єкт TO список_користувачів;

У списку привілеїв може бути зазначене ALL PRIVILEGES або значення з ряду: SELECT, DELETE, INSERT і UPDATE [(стовпці)], що дозволяють відповідно зчитувати (виконувати будь-які операції, в яких використовується SELECT), видаляти, додавати або змінювати рядки зазначеної таблиці (зміну можна обмежити конкретними стовпцями).

Наприклад:

GRANT ALL PRIVILEGES ON location TO stud01,stud02,stud03; GRANT SELECT,UPDATE(salary,commission) ON employee TO

stud11;

Надані привілеї (всі або деякі з них) можуть згодом бути скасовані. Скасування здійснюється за допомогою речення REVOKE, формат якого:

REVOKE список_привілеїв ON об'єкт FROM список_користувачів;

Наприклад:

REVOKE ALL PRIVILEGES ON employee, location FROM stud11;

REVOKE UPDATE ON location FROM stud01, stud03;

1.2. Системні й об'єктні привілеї

Системні привілеї

Системні привілеї можна призначити за допомогою команди GRANT. У табл. 1.1 приведений список системних привілеїв та операцій, що авторизуються цими привілеями.

 

Таблиця 1.1

Системні привілеї

 

 

Системний привілей

Дозволяє

 

 

1

2

 

 

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

 

 

BECOME USER

Ставати іншим користувачем. Використовується

 

утилітою Import під час завантаження даних у

 

схему іншого користувача

 

 

BACKUP ANY TABLE

Виконувати резервне копіювання будь-якої таблиці

 

в будь-якій схемі за допомогою утиліти Export

 

 

COMMENT ANY TABLE

Створювати коментар по будь-якій таблиці,

 

поданню або стовпцю в будь-якій схемі

 

 

CREATE ANY CLUSTER

Створювати кластер у будь-якій схемі

 

 

CREATE ANY INDEX

Створювати будь-який індекс у будь-якій схемі

 

 

CREATE ANY PROCEDURE

Створювати збережені процедури, функції й

 

 

Системний привілей

Дозволяє

 

 

1

2

 

 

 

пакети в будь-якій схемі

 

 

CREATE ANY SEQUENCE

Створювати послідовність у будь-якій схемі

 

 

CREATE ANY SNAPSHOT

Створювати знімок у будь-якій схемі. Вимагає

 

також привілею CREATE ANY TABLE

 

 

CREATE ANY SYNONYM

Створювати синонім у будь-якій схемі

 

 

CREATE ANY TABLE

Створювати таблицю в будь-якій схемі. Власник

 

схеми, що містить таблицю, повинен мати квоту у

 

відповідному табличному просторі

 

 

CREATE ANY TRIGGER

Створювати в будь-якій схемі тригер,

 

асоційований з будь-якою таблицею в будь-якій

 

схемі

 

 

CREATE ANY VIEW

Створювати подання в будь-якій схемі

 

 

CREATE CLUSTER

Створювати кластери у своїй схемі

 

 

CREATE DATABASE LINK

Створювати особисті зв'язки баз даних у своїй

 

схемі

 

 

CREATE INDEX

Створювати індекс у своїй схемі по будь-якій

 

таблиці в цій же схемі

 

 

CREATE PROCEDURE

Створювати збережені процедури, функції й

 

пакети у своїй схемі

 

 

CREATE PROFILE

Створювати профілі

 

 

CREATE PUBLIC DATABASE

Створювати загальні зв'язки баз даних

LINK

 

 

 

CREATE PUBLIC SYNONYM

Створювати загальні синоніми

 

 

CREATE ROLE

Створювати ролі

 

 

CREATE ROLLBACK

Створювати сегменти відкоту

SEGMENT

 

 

 

CREATE SESSION

З'єднуватися з базою даних

 

 

CREATE SEQUENCE

Створювати послідовності у своїй схемі

 

 

CREATE SNAPSHOT

Створювати знімки у своїй схемі. Вимагає також

 

привілею CREATE TABLE

 

 

CREATE SYNONYM

Створювати синоніми у своїй схемі

 

 

CREATE TABLE

Створювати таблиці у своїй схемі. Потрібна також

 

UNLIMITED TABLESPACE або квота на табличний

 

простір

 

 

CREATE TABLESPACE

Створювати табличні простори

 

 

CREATE TRIGGER

Створювати тригери у своїй схемі

 

 

CREATE USER

Створювати користувачів, призначати квоту на

 

БУДЬ-ЯКИЙ табличний простір, установлювати що

 

умовчує й тимчасове табличні простори,

 

призначати профіль як частина CREATE USER

 

 

Системний привілей

Дозволяє

 

 

1

2

 

 

CREATE VIEW

Створювати подання у своїй схемі

 

 

DELETE ANY TABLE

Видаляти рядки з будь-якої таблиці, подання або

 

знімка в будь-якій схемі

 

 

DROP ANY CLUSTER

Видаляти будь-який кластер у будь-якій схемі

 

 

DROP ANY INDEX

Видаляти будь-який індекс у будь-якій схемі

 

 

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 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

Переводити табличний простір в он-лайн і оф-

 

лайн, виконувати резервне копіювання табличного

 

 

Системний привілей

Дозволяє

 

 

1

2

 

 

 

простору

 

 

READUP

Опитувати дані, що мають клас доступу вище, ніж

 

мітка сесії. Цей привілей доступний тільки в

 

Trusted ORACLE

 

 

RESTRICTED SESSION

З'єднуватися з базою даних, запущеної в режимі

 

STARTUP RESTRICT

 

 

SELECT ANY SEQUENCE

Звертатися до будь-якої послідовності в будь-якій

 

схемі

 

 

SELECT ANY TABLE

Опитувати будь-яку таблицю, подання або знімок у

 

будь-якій схемі

 

 

UNLIMITED TABLESPACE

Використовувати необмежену пам'ять у БУДЬ-

 

ЯКОМУ табличному просторі. Цей привілей

 

перекриває будь-які квоти. Якщо ви відзиваєте цей

 

привілей від користувача, то його об'єкти

 

залишаються, але подальший розподіл пам'яті в

 

табличних просторах буде дозволено тільки при

 

наявності квоти на конкретний табличний простір.

 

Цей привілей не можна призначати ролям

 

 

UPDATE ANY TABLE

Обновляти рядка в будь-якій таблиці, поданняі або

 

знімку в будь-якій схемі

 

 

TRUNCATE ANY

Усікати будь-яку таблицю або кластер у будь-якій

 

схемі

 

 

WRITEDOWN

Створювати, змінювати (alter) і видаляти об'єкти

 

схем, а також вставляти, обновляти й видаляти

 

рядки, що мають клас доступу нижче, ніж у мітки

 

сесії. Цей привілей доступний тільки в Trusted

 

ORACLE

 

 

WRITEUP

Створювати, змінювати (alter) і видаляти об'єкти

 

схем, а також вставляти, обновляти й видаляти

 

рядки, що мають клас доступу вище, ніж у мітки

 

сесії. Цей привілей доступний тільки в Trusted

 

ORACLE

 

 

1.3. Ролі, визначені в ORACLE

Деякі ролі створюються автоматично самим ORACLE. Коли ви створюєте базу даних, ORACLE створює ці ролі й призначає їм певні системні привілеї. Табл. 1.2 перераховує всі визначені ролі і їхні системні привілеї.

 

Таблиця 1.2

Ролі, визначені в 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

 

 

 

 

IMP_FULL_DATABASE

SELECT ANY TABLE

 

 

BACKUP ANY TABLE

 

 

INSERT, UPDATE, DELETE

 

 

по таблицях sys.incexp,

 

 

sys.incvid,

 

 

sys.incfil

 

 

 

 

EXP_FULL_DATABASE

BECOME USER

 

 

WRITEDOWN (в Trusted ORACLE)

 

 

 

 

Зауваження. Якщо ви призначаєте користувачеві роль RESOURCE або DBA, то ORACLE неявно призначає цьому користувачеві системний привілей UNLIMITED TABLESPACE.

Ролі CONNECT, RESOURCE і DBA надані для сумісності з попередніми версіями ORACLE. Скрипт SQL з ім'ям SQL.BSQ створює ці ролі, призначає їм привілеї і призначає роль DBA з опцією ADMIN OPTION користувачам SYS і SYSTEM. Цей скрипт доступний на вашому дистрибутивному носії, хоча його точне ім'я й місце розташування можуть варіюватися залежно від вашої операційної системи. Корпорація Oracle рекомендує, щоб ви спроектували свої

власні ролі для захисту бази даних, а не покладалися на визначені ролі. Ці ролі можуть втратити підтримку в майбутніх версіях ORACLE.

Ролі EXP_FULL_DATABASE і IMP_FULL_DATABASE надаються для зручності роботи з утилітами Import і Export. Скрипт SQL з ім'ям CATEXP.SQL створює ці ролі, призначає їм привілеї і призначає ці ролі визначеної ролі DBA. Цей скрипт доступний на вашому дистрибутивному носії, хоча його точне ім'я й місце розташування можуть варіюватися залежно від вашої операційної системи.

1.4. Об'єктні привілеї

Кожний об'єктний привілей, що вам призначається, дозволяє вам виконувати певні операції над зазначеним об'єктом. Табл. 1.3 перераховує об'єктні привілеї, які можуть призначатися за кожним типом об'єкта.

Таблиця 1.3

Об'єктні привілеї

Об'єктний

 

Процедури

 

Таблиці Подання Послідовності

Функції

Знімки

привілей

 

Пакети

 

 

 

 

ALTER

DELETE

EXECUTE

INDEX

INSERT

REFERENCES

SELECT

UPDATE

1.5. Синтаксис і приклади використання команд керування доступом

Команда CREATE ROLE створює роль.

Для створення ролі ви повинні мати системний привілей CREATE

ROLE.

Синтаксис: CREATE ROLE команда ::=

де РОЛЬ – ім'я створюваної ролі. Корпорація Oracle рекомендує, щоб РОЛЬ містила хоча б один однобайтовий символ, навіть якщо набір символів бази даних містить також мультибайтові символи;

NOT IDENTIFIED указує, що користувача, якому призначена роль, не потрібно перевіряти при включенні цієї ролі;

IDENTIFIED указує, що користувача, якому призначена роль, потрібно перевіряти при включенні цієї ролі командою SET ROLE:

BY пароль – користувач повинен повідомити ORACLE пароль при включенні ролі. Пароль може містити тільки однобайтові символи з набору символів бази даних, навіть якщо цей набір містить також мультибайтові символи;

EXTERNALLY – операційна система перевіряє користувача, що включає роль. Залежно від операційної системи від користувача може знадобитися вказівка пароля при включенні ролі.

Якщо ви опускаєте обидві опції NOT IDENTIFIED і IDENTIFIED, то за замовчуванням приймається NOT IDENTIFIED.

1.5.1. Зауваження щодо використання

РОЛЬ – це сукупність привілеїв, що може призначатися користувачам або іншим ролям. Ви можете використовувати ролі, щоб адмініструвати привілеї бази даних. Ви можете додати привілей в область привілеїв, обумовлену роллю, а потім призначити цю роль користувачеві. Після цього користувач може включити цю роль і тим самим одержати привілеї, обумовлені доменом привілеїв даної ролі. Для інформації про те, як включати ролі, зверніться до команди ALTER USER вище в цьому розділі.

Домен привілеїв ролі містить усі привілеї, призначені цій ролі, а також усі привілеї в доменах інших ролей, які були призначені даній ролі. Домен привілеїв нової ролі спочатку порожній. Ви можете додати привілеї в домен привілеїв ролі за допомогою команди GRANT.

Коли ви створюєте роль, ORACLE призначає вам цю роль із опцією ADMIN OPTION. Ця опція дозволяє вам виконувати наступні операції:

призначати цю роль іншому користувачеві або ролі; відзивати цю роль від іншого користувача або ролі;

змінювати цю роль, щоб змінити авторизацію, що потрібно для доступу до неї;

видалити цю роль.

1.5.2. Ролі ORACLE

Деякі ролі визначаються скриптами SQL, які надані на вашому дистрибутивному носії. Наступні ролі є визначеними в ORACLE:

CONNECT

RESOURCE DBA

EXP_FULL_DATABASE

IMP_FULL_DATABASE

Ролі CONNECT, RESOURCE і DBA передбачені для сумісності з попередніми версіями ORACLE. Корпорація Oracle рекомендує вам спроектувати ваші власні ролі для захисту бази даних, замість того щоб покладатися на визначені ролі. Ці ролі можуть перестати підтримуватися в майбутніх версіях ORACLE.

Ролі EXP_FULL_DATABASE і IMP_FULL_DATABASE надаються для зручності роботи з утилітами Import і Export.

ORACLE також створює інші ролі, які дають вам повноваження для адміністративного керування базою даних. На багатьох операційних системах ці ролі називаються OSOPER і OSDBA. У вашій операційній системі ці імена можуть бути іншими.

Приклад. Наступне речення створює роль TELLER:

CREATE ROLE teller IDENTIFIED BY cashflow

Користувачі, яким буде призначена роль TELLER, повинні будуть специфікувати пароль CASHFLOW, щоб включити цю роль.

1.6. CREATE ROLLBACK SEGMENT

Призначення. Створює сегмент відкоту. СЕГМЕНТ ВІДКОТУ – це об'єкт, що використовується ORACLE для зберігання даних, необхідних для скасування змін, здійснюваних транзакціями.

Умови. Ви повинні мати системний привілей CREATE ROLLBACK SEGMENT. Крім того, ви повинні мати або квоту в табличному просторі, в якому створюється сегмент відкоту, або системний привілей UNLIMITED TABLESPACE.

Синтаксис. CREATE ROLLBACK SEGMENT команда ::=

де PUBLIC – указує, що сегмент відкоту ЗАГАЛЬНИЙ і доступний будь-якій інстанції. Якщо ця опція опущена, то сегмент відкоту ОСОБИСТИЙ, і буде доступний тільки тієї інстанції, що вкаже його ім'я в параметрі ініціалізації ROLLBACK_SEGMENTS;

сегмент_відкоту – ім'я створюваного сегмента відкоту; TABLESPACE – ідентифікує табличний простір, у якому

створюється сегмент відкоту. Якщо ця опція опущена, ORACLE створює сегмент відкоту в табличному просторі SYSTEM;

STORAGE – специфікує характеристики пам'яті для сегмента відкоту.

Зауваження щодо використання

Табличний простір повинен бути в он-лайні, коли в ньому створюється сегмент відкоту.

Коли ви створюєте сегмент відкоту, він спочатку перебуває в стані офлайн. Щоб зробити його доступним для транзакцій вашої інстанції ORACLE, ви повинні перевести його в он-лайн одним із наступних способів:

командою ALTER ROLLBACK SEGMENT;

через параметр ініціалізації ROLLBACK_SEGMENTS. Табличний простір може мати кілька сегментів відкоту. У

загальному випадку, множинні сегменти відкоту поліпшують продуктивність.

Соседние файлы в папке Lab_03_Oracle (Grant Revoke) (1)