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

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

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

REVOKE (об'єктні привілеї) відзиває об'єктні привілеї на конкретний об'єкт від користувачів і ролей.

Об'єктні привілеї, що відзивають, повинні бути раніше призначені всім зазначеним у команді користувачам і ролям.

Синтаксис. REVOKE команда (об'єктні привілеї) ::=

де, об'єктний_привілей – об'єктний привілей, що відзиває. Ви можете використовувати кожне з наступних значень: ALTER, DELETE,

EXECUTE, INDEX, INSERT, REFERENCES, SELECT, UPDATE.

ALL PRIVILEGES відзиває всі привілеї на об'єкт, які були призначені користувачеві або ролі.

ON – ідентифікує об'єкт, для якого відзиваються привілеї. Якщо ви не кваліфікуєте ОБ'ЄКТ СХЕМОЮ, то ORACLE вважає, що об'єкт перебуває у вашій схемі. Допускаються наступні типи об'єктів: таблиця, подання, послідовність, процедура, функція або пакет, знімок, синонім для таблиці, подання, знімка, функції, процедури, пакета або послідовності.

FROM – ідентифікує користувачів або ролі, від яких відзиваються привілеї на об'єкт.

PUBLIC – відзиває привілеї на об'єкт від всіх користувачів. CASCADE Constraints видаляє будь-які обмеження посилальної

цілісності, які цільовий користувач визначав, користуючись привілеєм REFERENCES, що ви зараз відзиваєте. Ви повинні специфікувати цю опцію, коли вказуєте привілей REFERENCES або опцію ALL

PRIVILEGES.

Ви можете використовувати цю форму речення REVOKE для відкликання об'єктних привілеїв від користувачів, ролей і “групи”

PUBLIC:

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

Відкликання множинних ідентичних грантів. Декілька користувачів можуть призначити той самий об'єктний привілей тому самому користувачеві, ролі або “групі” PUBLIC. Для того, щоб такий привілей був вилучений з домена привілеїв цього користувача, його повинні відкликати всі, хто призначав цей привілей. Якщо хоча б один із тих, що призначали, не відкликав цей об'єктний привілей, цільовий користувач може, як і раніше, користуватися ним.

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

якщо ви відзиваєте об'єктний привілей, що цільовий користувач призначив іншим користувачам або ролям (завдяки можливості GRANT OPTION), то ORACLE також відзиває цей привілей від всіх таких користувачів і ролей;

якщо ви відзиваєте об'єктний привілей від користувача, у схемі якого є процедури, функції або пакети, що опираються у своїх реченнях SQL на цей привілей, то ці процедури, функції або пакети більше не можна буде виконувати;

якщо ви відзиваєте від користувача об'єктний привілей на деякий об'єкт, а в схемі цього користувача є подання по даному об'єкту, то ORACLE робить цей подання недійсним;

якщо ви відзиваєте привілей REFERENCES від користувача, що встиг використати цей привілей для визначення обмежень посилальної цілісності, то ви повинні вказати опцію CASCADE CONSTRAINTS. ORACLE при цьому не тільки відкличе привілей, але й видалить обмеження.

Приклад 1

Ви могли призначити привілеї DELETE, INSERT і UPDATE за таблицею BONUS користувачеві PEDRO за допомогою наступного речення:

GRANT ALL ON bonus TO pedro

Щоб тепер відкликати привілей DELETE від PEDRO, видайте наступну пропозицію:

REVOKE DELETE

ON bonus FROM pedro

Щоб відкликати привілеї, що залишилися, за таблицею BONUS, які ви призначали PEDRO, видайте речення:

REVOKE ALL ON bonus FROM pedro

Приклад 2

Ви могли призначити привілеї SELECT і UPDATE за поданням REPORTS всім користувачам шляхом призначення цих привілеїв ролі

PUBLIC:

GRANT SELECT, UPDATE ON reports

TO public

Наступне речення відзиває привілей UPDATE за поданням REPORTS від всіх користувачів:

REVOKE UPDATE ON reports FROM public

Користувачі більше не можуть оновлювати подання REPORTS, хоча як і раніше можуть опитувати його. Однак якщо ви також призначали привілей UPDATE за поданням REPORTS будь-яким конкретним користувачам (безпосередньо або через ролі), то такі користувачі збережуть цей привілей.

Приклад 3

Ви могли призначити користувачеві BLAKE привілей SELECT за послідовністю ESEQ у схемі ELLY за допомогою наступного речення:

GRANT SELECT ON elly.eseq TO blake

Щоб тепер відкликати привілей SELECT від BLAKE, видайте наступне речення:

REVOKE SELECT ON elly.eseq FROM blake

Однак якщо користувач ELLY також призначив користувачеві BLAKE привілей SELECT за своєю послідовністю ESEQ, то BLAKE як і раніше зможе користуватися цим привілеєм.

Приклад 4

Ви могли дати користувачеві BLAKE привілеї REFERENCES і UPDATE за таблицею EMP у схемі SCOTT за допомогою наступного речення:

GRANT REFERENCES, UPDATE ON scott.emp

TO blake

BLAKE міг скористатися привілеєм REFERENCES для того, щоб визначити обмеження за своєю власною таблицею DEPENDENT, що посилається на таблицю EMP у схемі SCOTT:

CREATE TABLE dependent (dependno NUMBER, dependname VARCHAR2(10), employee NUMBER

CONSTRAINT in_emp REFERENCES

scott.emp(ename) )

Тепер ви відзиваєте привілей REFERENCES по scott.emp від користувача BLAKE, видавши наступне пропозицію, що містить опцію

CASCADE CONSTRAINTS: REVOKE REFERENCES

ON scott.emp FROM blake

CASCADE CONSTRAINTS

Це відкликання привілею REFERENCES змушує ORACLE видалити обмеження IN_EMP, тому що користувачеві BLAKE був потрібний цей привілей для визначення даного обмеження.

Однак якщо користувач BLAKE одержав привілей REFERENCES за таблицею SCOTT.EMP ще від якого-небудь користувача, крім вас, то ORACLE не видаляє це обмеження, тому що BLAKE, як і раніше, зберігає необхідний привілей від імені гранта іншого користувача.

2. Робота зі словником даних (теоретичні відомості)

2.1. Словник даних

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

Інформація в словнику даних призначена для підтвердження існування об'єктів, забезпечення доступу до них і опису фактичного фізичного розташування в пам'яті.

Першими таблицями, що створюються в будь-якій базі даних, є системні таблиці, або словник даних Oracle. Системні таблиці зберігають інформацію про структуру бази даних і об'єктів усередині неї, і Oracle звертається до них, коли має потребу в інформації про базу даних або коли виконує оператор DDL (Data Definition Language – мова визначення даних) або оператор DML (Data Manipulation Language – мова маніпулювання даними). Ці таблиці ніколи безпосередньо не оновлюються, однак відновлення в них відбувається у фоновому режимі щораз, коли виконується оператор DDL. Головні таблиці словника даних містять нормалізовану інформацію, яка є досить важкою для сприйняття людиною, так що в Oracle передбачений набір подань, що видають інформацію головних системних таблиць у більш зрозумілому вигляді. Oracle запитує інформацію з таблиць словника даних для синтаксичного розбору будь-якого оператора SQL. Інформація кеширується в області словника даних поділюваного пула в SGA.

Фундаментальне розходження між RDBMS і іншими БД і файловими системами полягає в способі доступу до даних. RDBMS дозволяє звертатися до фізичних даних у більш абстрактній, логічній формі, забезпечуючи легкість і гнучкість при розробці коду додатка. Програми, що використовують RDBMS, звертаються до даних через "машину" бази даних без безпосередньої залежності від фактичного джерела даних, ізолюючи додаток від деталей "нижчележачих"

фізичних структур даних. RDBMS сама піклується про те, де поле зберігається в базі даних. Така незалежність даних можлива завдяки словнику даних RDBMS, що зберігає метадані (дані про дані) для всіх об'єктів, розташованих у базі даних. RDBMS не тільки забезпечує розміщення даних, але також визначає оптимальний шлях доступу для зберігання або вибірки даних. Oracle використовує складні алгоритми, які дозволяють вибирати інформацію з найбільшою продуктивністю, виходячи з критерію якнайшвидшого одержання перших рядків результату або критерію мінімального часу виконання запиту в цілому.

Словник даних – не тільки центральне сховище в кожній базі даних ORACLE. Це також і важливий інструмент для всіх користувачів від кінцевих користувачів до розроблювачів додатків і адміністраторів бази даних. Навіть початківці-користувачі можуть мати вигоду з розуміння й використання словника даних.

Словник даних є однією з найважливіших частин бази даних ORACLE. Словник даних надає інформацію про асоційовану з ним базу даних. Наприклад, словник даних може надавати наступну інформацію:

імена користувачів ORACLE;

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

синонімів, послідовностей, процедур, функцій, пакетів, тригерів і т. д.); інформацію про обмеження цілісності; значення, що замовчуються, для стовпців;

скільки простору було розподілено й у цей час використовується об'єктами в базі даних;

інформацію аудита, наприклад, хто звертався до різних об'єктів і оновлював їх;

іншу загальну інформацію про базу даних.

Словник даних структурований через таблиці й подання, як і будь-які інші дані в базі даних. Для звертання до словника даних використовується SQL. Оскільки словник даних можна тільки читати, користувачі можуть видавати лише запити (речення SELECT) за таблицями і поданням словника даних.

2.2. Структура словника даних

До складу словника даних бази даних входять:

Базові таблиці. Основу словника даних становить сукупність базових таблиць, що зберігають інформацію про базу даних. Ці таблиці читаються й пишуться ТІЛЬКИ самим ORACLE; вони рідко використовуються безпосередньо користувачем ORACLE будь-якого типу, тому що вони нормалізовані, і більша частина даних у них закодована.

Доступні користувачеві подання. Словник даних містить доступні користувачеві подання, які підсумовують і відображають у зручному поданні формат-інформацію з базових таблиць словника. Ці подання декодують інформацію базових таблиць, представляючи її в корисному вигляді (такому, як імена користувачів або таблиць) і використовують з'єднання й фрази WHERE, щоб спростити інформацію. Більшість користувачів мають доступ до цих подань замість базових таблиць словника.

Усі базові таблиці й подання словника даних належать користувачеві ORACLE з обліковим ім'ям SYS. Тому жоден користувач ORACLE не повинен змінювати ніяких об'єктів, які містяться в схемі SYS, а адміністратор безпеки повинен чітко контролювати використання цього центрального облікового імені.

Дані в базових таблицях словника даних необхідні для функціонування ORACLE. Тому тільки ORACLE повинен записувати або змінювати інформацію словника даних.

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

Ви можете додавати в словник даних нові таблиці або подання. Якщо ви додаєте нові об'єкти в словник даних, їхнім власником повинен бути SYSTEM або який-небудь третій користувач ORACLE. Коли включений режим аудита, ця таблиця може необмежено рости. Хоча користувачі не повинні видаляти цю таблицю, адміністратор безпеки може видаляти з неї дані, тому що рядки цієї таблиці служать лише для інформації й не є необхідними для роботи ORACLE.

Подання словника даних виступають як довідники для всіх користувачів бази даних. Доступ до цих подань здійснюється через SQL. Деякі подання доступні всім користувачам, тоді як деякі інші призначені лише для адміністраторів.

Словник даних завжди доступний при відкритій базі даних. Він розміщається в табличному просторі SYSTEM, що завжди перебуває в стані он-лайн.

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

Префікс

Призначення

 

 

USER

подання користувача (що є в схемі користувача)

ALL

розширений подання користувача (до чого є доступ)

DBA

подання адміністратора (до чого всі користувачі мають

 

доступ)

Стовпці в кожному поданні в наборі ідентичні, з наступними виключеннями:

у поданнях із префіксом USER звичайно немає стовпця з ім'ям OWNER (власник); у поданнях USER під власником мається на увазі користувач, що видав запит;

деякі подання DBA мають додаткові стовпці, які містять інформацію, корисну для АБД.

Подання із префіксом USER:

відбивають власне оточення користувача в базі даних, включаючи інформацію про об'єкти, створених цим користувачем, грантах, наданих їм, і т. д.;

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

виключенням, що стовпець OWNER мається на увазі (поточний користувач);

повертають підмножину інформації, що надається поданнями ALL можуть мати скорочені загальні синоніми для зручності

Подання з префіксом ALL відбивають загальне подання про базу даних з боку користувача. Ці подання повертають інформацію про

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

Подання з префіксом DBA показують загальне подання про базу даних, так що вони призначені тільки для адміністраторів бази даних. Точніше, опитувати подання словника з префіксом DBA може будьякий користувач, що має системний привілей SELECT ANY TABLE.

Майже вся інформація про структуру бази даних і її об'єктів розміщена в системних таблицях Oracle, що належать користувачеві з ім'ям SYS. Oracle звертається до цих таблиць при будь-яких запитах для одержання необхідної для їхнього виконання інформації.

Будь-який користувач має можливість одержати з цих таблиць (точніше створених за цими таблицями подань) деяку інформацію про приналежним йому об'єктах. Для цього він повинен знати ім'я й структуру того подання, в якому зберігаються потрібні йому відомості.

Імена й короткий опис подань наведені в документі "Короткий довідник по Oracle", а їхню структуру можна одержати за допомогою команди SQL*Plus - DESCribe (допускається скорочення імені команди до чотирьох символів). Вона дозволяє одержати короткий опис будьякої користувальницької таблиці, наприклад:

SQL> desc Вып_каф

 

 

Имя

Отсут.?

Ввод

-------------------------------

-----------

---------

КАФЕДРА

NOT NULL

NUMBER(3)

ФАКУЛЬТ

NOT NULL

CHAR(5)

СПЕЦИАЛ

NOT NULL

VARCHAR2(6)

СТАТУС

NOT NULL

CHAR(9)

КУРС

NOT NULL

NUMBER(1)

ВАРИАНТ

NOT NULL

CHAR(3)

НАЧАЛО

NOT NULL

DATE

КОНЕЦ

NOT NULL

DATE

ФОРМА

NOT NULL

VARCHAR2(8)

НАЧ_ДИПЛ

 

DATE

НОМ_ПЛАН

NOT NULL

NUMBER(4)

ПОЛЬЗОВ

 

NUMBER(4)

ИЗМЕН

 

DATE

Інформація з системного подання виводиться, як і з будь-якої таблиці, за допомогою оператора SELECT. Наприклад, за запитом:

SELECT CONSTRAINT_TYPE,STATUS,CONSTRAINT_NAME, SEARCH_CONDITION

FROM USER_CONSTRAINTS

WHERE TABLE_NAME = 'ВЫП_КАФ';

буде виведена інформація, частина з якої наведена нижче:

C STATUS CONSTRAINT_NAME

SEARCH_CONDITION

-------------- ------------------------------

-------------------------------------

---

 

 

C ENABLED SYS_C008549

КАФЕДРА IS NOT NULL

C ENABLED SYS_C008550

ФАКУЛЬТ IS NOT NULL

C ENABLED SYS_C008551

СПЕЦИАЛ IS NOT NULL

C ENABLED SYS_C008552

СТАТУС IS NOT NULL

C ENABLED SYS_C008553

КУРС IS NOT NULL

C ENABLED SYS_C008554

ВАРИАНТ IS NOT NULL

C ENABLED SYS_C008555

НАЧАЛО IS NOT NULL

C ENABLED SYS_C008556

КОНЕЦ IS NOT NULL

C ENABLED SYS_C008557

ФОРМА IS NOT NULL

C ENABLED Должен быть 1-6 !

Курс IN (1,2,3,4,5,6)

C ENABLED Начало Вып_каф > конца !

Начало <= Конец

C ENABLED Вечерняя, дневная,заочная !

Форма IN ('вечерняя',

 

'дневная', 'заочная')

C ENABLED Не между началом и концом !

Нач_дипл

 

BETWEEN Начало AND

 

Конец

P ENABLED Номер плана введен неверно !

U ENABLED Уникальность строк Вып_каф ?

R ENABLED Такой кафедры нет !

R ENABLED Код факультета в Вып_каф?

R ENABLED Этих Специал-Статус нет!

21 строк выбрано.

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