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

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

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

Коли ви створюєте сегмент відкоту в Trusted ORACLE, він позначається вашою міткою DBMS.

Приклад. Наступне речення створює сегмент відкоту в табличному просторі SYSTEM:

CREATE PUBLIC ROLLBACK SEGMENT rbs_2 TABLESPACE system

STORAGE (INITIAL 50K NEXT 50K OPTIMAL 150K MAXEXTENTS

1.7. GRANT (системні привілеї й ролі)

Для призначення системних привілеїв та ролей користувачам і ролям використовуйте команду GRANT.

Умови. Щоб призначити системний привілей, ви повинні або мати цей привілей, причому він повинен бути призначений вам з опцією WITH ADMIN OPTION, або мати системний привілей GRANT ANY

PRIVILEGE.

Щоб призначити роль, ви повинні або мати цю роль, причому вона повинна бути призначена вам з опцією WITH ADMIN OPTION, або мати системний привілей GRANT ANY ROLE.

Синтаксис. GRANT команда (системні привілеї й ролі) ::=

де системний_привілей – призначуваний системний привілей; роль – призначувана роль;

TO – ідентифікує користувачів або ролі, яким призначаються системні привілеї й ролі;

PUBLIC – призначає системні привілеї або ролі всім користувачам;

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

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

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

“групі” PUBLIC:

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

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

Призначення привілею PUBLIC – ORACLE додає привілей у домен привілеїв кожного користувача. Всі користувачі можуть негайно почати користуватися цим привілеєм.

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

Призначення ролі іншій ролі – ORACLE додає домен привілеїв ролі (“A”) у домен привілеїв іншої ролі (“B”). Ті користувачі, яким була призначена роль “B” , можуть включити її й почати користуватися привілеями з домена привілеїв ролі “A”.

Призначення ролі PUBLIC – ORACLE робить роль доступною всім користувачам. Усі користувачі можуть негайно включити цю роль і почати користуватися будь-якими привілеями з її домена.

Ніякий привілей або роль не може повторюватися в списку привілеїв і ролей, призначуваних командою GRANT. Ніякий користувач, роль або слово PUBLIC не може повторюватися у фразі TO.

Не можна призначати ролі циклічно. Наприклад, якщо ви призначили роль BANKER ролі TELLER, то ви не можете згодом призначити роль TELLER ролі BANKER. Крім того, не можна призначати роль самій собі.

ADMIN OPTION – грант (призначення) з опцією ADMIN OPTION перекриває попередній ідентичний грант без опції ADMIN OPTION. Якщо ви призначаєте користувачеві системний привілей або роль без опції ADMIN OPTION, а потім згодом призначаєте цьому користувачеві цей же привілей або роль із опцією ADMIN OPTION, то користувач буде мати опцію ADMIN OPTION за цим привілеєм чи роллю.

Навпроти, грант (призначення) без опції ADMIN OPTION не перекриває попередній ідентичний грант із опцією ADMIN OPTION. Якщо ви хочете відкликати від користувача опцію ADMIN OPTION за деяким системним привілеєм або роллю, то ви повинні спочатку повністю відкликати цей системний привілей або роль, а потім знову призначити її, але вже без опції ADMIN OPTION.

Приклад 1

Щоб призначити системний привілей CREATE SESSION користувачеві RICHARD і тим самим дозволити йому підключатися до ORACLE, видайте наступне речення:

GRANT CREATE SESSION TO richard

Приклад 2

Щоб призначити системний привілей CREATE TABLE ролі TRAVEL_AGENT, видайте наступне речення:

GRANT CREATE TABLE TO travel_agent

Домен привілеїв ролі TRAVEL_AGENT містить тепер системний привілей CREATE TABLE.

Наступне речення призначає роль TRAVEL_AGENT ролі

EXECUTIVE:

GRANT travel_agent TO executive

Тепер у домен привілеїв ролі EXECUTIVE додався системний привілей CREATE TABLE.

Щоб призначити роль EXECUTIVE з опцією ADMIN OPTION користувачеві THOMAS, видайте наступне речення:

GRANT executive TO thomas

WITH ADMIN OPTION

Тепер THOMAS може виконувати наступні операції з роллю

EXECUTIVE:

включити цю роль і одержати всі привілеї, які входять у домен її привілеїв, включаючи системний привілей CREATE TABLE;

призначати цю роль іншим користувачам і відзивати її від них; видалити цю роль.

1.8. GRANT (об'єктні привілеї)

Можна призначити привілеї для конкретного об'єкта (таблиці, подання, синоніма, пакета, процедури й т. п.) користувачам і ролям. Для того, щоб призначити системні привілеї або ролі, використовуйте команду GRANT (системні привілеї й ролі), описану в попередній секції цього розділу.

Щоб призначити привілей на об'єкт, ви повинні або мати цей об'єкт у своїй схемі, або мати цей привілей, причому вона повинна бути призначена вам з опцією GRANT OPTION.

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

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

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

ALL PRIVILEGES призначає всі привілеї на об'єкт, які були призначені вам з опцією GRANT OPTION. Користувач, якому належить схема, що містить об'єкт, автоматично має всі привілеї по цьому об'єкті з опцією GRANT .

Стовпець – специфікує стовпець таблиці або подання, по якому призначаються привілеї. Ви можете специфікувати стовпці тільки при призначенні привілею INSERT, REFERENCES або UPDATE. Якщо ви не вказуєте стовпців, то привілей призначається за всіма стовпцями таблиці або подання.

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

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

PUBLIC – призначає привілеї на об'єкт всім користувачам.

WITH GRANT OPTION– дозволяє користувачеві, що одержав об'єктний привілей (саме користувачеві або PUBLIC, але не ролі) призначати ці привілеї іншим користувачам або ролям.

Привілеї по таблицях

Наступні об'єктні привілеї авторизують операції по таблиці: ALTER дозволяє змінювати визначення таблиці командою ALTER. DELETE дозволяє видаляти рядки з таблиці командою DELETE. INDEX дозволяє створювати індекс по таблиці командою CREATE

INDEX.

INSERT дозволяє вставляти нові рядки в таблицю командою

INSERT.

REFERENCES дозволяє створювати обмеження, які посилаються на таблицю. Цей привілей не можна призначати ролі.

SELECT дозволяє опитувати таблицю командою SELECT. UPDATE дозволяє змінювати дані в таблиці командою UPDATE. Володіння кожною з цих об'єктних привілеїв дозволяє також

блокувати таблицю в будь-якому режимі блокування командою LOCK

TABLE.

Привілеї за поданнями

Наступні об'єктні привілеї авторизують операції за поданням: DELETE дозволяє видаляти рядки з подання командою DELETE. INSERT дозволяє вставляти нові рядки в подання командою

INSERT.

SELECT дозволяє опитувати подання командою SELECT. UPDATE дозволяє змінювати дані в поданняі командою UPDATE. Володіння кожною з цих об'єктних привілеїв дозволяє також

блокувати подання у будь-якому режимі блокування командою LOCK

TABLE.

Щоб призначити привілей за поданням, ви повинні мати цей привілей з опцією GRANT OPTION за всіма базовими таблицями цього подання.

Привілеї послідовностей

Наступні об'єктні привілеї авторизують операції по послідовності: ALTER дозволяє змінювати визначення послідовності командою

ALTER SEQUENCE.

SELECT дозволяє опитувати й нарощувати значення послідовності через псевдостовпці NEXTVAL і CURRVAL.

Привілеї процедур, функцій і пакетів

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

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

Привілеї знімків

Наступний об'єктний привілей авторизує операції за знімком: SELECT дозволяє опитувати знімок командою SELECT.

Привілеї синонімів

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

Приклад 1

Щоб призначити всі привілеї за таблицею BONUS користувачеві JONES з опцією GRANT OPTION, видайте наступне речення:

GRANT ALL ON bonus TO jones

WITG GRANT OPTION

JONES може тепер виконувати наступні операції:

дії, що вимагають будь-який привілей за таблицею BONUS; призначити будь-який привілей за таблицею BONUS іншому

користувачеві або ролі.

Приклад 2

Щоб призначити привілеї SELECT і UPDATE за поданням GOLF_HANDICAP всім користувачам, видайте наступне речення:

GRANT SELECT, UPDATE ON golf_handicap

TO PUBLIC

Усі користувачі можуть тепер опитувати й обновляти подання

GOLF_HANDICAP.

Приклад 3

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

GRANT SELECT ON elly.eseq TO blake

BLAKE може тепер генерувати чергове значення цієї послідовності за допомогою наступного речення:

SELECT elly.eseq.NEXTVAL FROM DUAL

Приклад 4

Щоб призначити користувачеві BLAKE привілей REFERENCES за стовпцем EMPNO і привілей UPDATE за стовпцями EMPNO, SAL і COMM таблиці EMP у схемі SCOTT, видайте наступне речення:

GRANT REFERENCES (empno), UPDATE (empno, sal, comm) ON scott.emp

TO blake

BLAKE може тепер обновляти значення стовпців EMPNO, SAL і COMM. BLAKE може також визначати обмеження посилальної цілісності, які посилаються на стовпець EMPNO. Однак, оскільки речення GRANT перераховує тільки деякі стовпці, BLAKE не може виконувати ніяких операцій над іншими (не названими) стовпцями таблиці EMP.

Наприклад, BLAKE може створити таблицю з обмеженням:

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

CONSTRAINT in_emp REFERENCES

scott.emp(empno))

Обмеження IN_EMP гарантує, що кожний рядок у таблиці DEPENDENT відповідає деякому рядку в таблиці EMP у схемі SCOTT.

1.9. ALTER ROLE

За допомогою оператора Alter Role можна змінити авторизацію, необхідну для включення ролі.

Для цього вам повинна бути призначена ця роль із опцією ADMIN OPTION, або ви повинні мати системний привілей ALTER ANY ROLE.

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

де, ключові слова й параметри в команді ALTER ROLE мають той же зміст, що й у команді CREATE ROLE.

Приклад

Наступне речення змінює пароль для ролі TELLER на LETTER:

ALTER ROLE teller IDENTIFIED BY letter

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

1.10. REVOKE (Системні привілеї й ролі)

Призначення оператора REVOKE для відзиву системних привілеїв та ролей від користувачів і ролей. Для відкликання об’єктних привілеїв від користувачів і ролей використовуйте команду REVOKE (об’єктні привілеї).

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

GRANT ANY ROLE.

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

де, системний_привілей – системний привілей, що відзиває; роль – роль, що відзивається;

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

PUBLIC – відзиває системні привілеї або ролі від всіх користувачів.

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

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

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

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

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

Відкликання ролі від іншої ролі – ORACLE видаляє домен привілеїв ролі (“A”) з домена привілеїв іншої ролі (“B”). Ті користувачі, яким була призначена роль “B” і в яких вона включена в цей момент, можуть користуватися привілеями ролі “A”, поки роль “B” залишається включеною. Однак при наступному включенні ролі “B” привілею з домена привілеїв ролі "A" будуть уже недоступні.

Відкликання ролі від PUBLIC – ORACLE робить роль недоступною всім користувачам, яким ця роль була призначена через PUBLIC. Якщо роль у цей момент включена для такого користувача, він може користуватися привілеями цієї ролі, поки вона залишається включеною. Однак цей користувач згодом не зможе включити дану роль. Зверніть увагу, що роль не відзивається від тих користувачів, які одержали її безпосередньо або через інші ролі.

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

відзивати привілеї або ролі, які не були призначені, “відзиває”; відзивати ролі, які були призначені через операційну систему; відзивати привілеї або ролі, які були призначені, “відзиває” через

ролі.

Ніякий привілей або роль не може повторюватися в списку привілеїв і ролей, що відзиваються командою REVOKE. Ніякий користувач, роль або слово PUBLIC не може повторюватися у фразі

FROM.

Приклад 1

Наступне речення відзиває системний привілей DROP ANY TABLE від користувачів BILL і MARY:

REVOKE DROP ANY TABLE FROM bill, mary

BILL і MARY більше не зможуть видаляти таблиць не у своїй схемі.

Приклад 2

Наступне речення відзиває роль CONTROLLER від користувача

HANSON:

REVOKE controller FROM hanson

HANSON більше не зможе включати CONTROLLER.

Приклад 3

Наступне речення відзиває системний привілей CREATE TABLESPACE від ролі CONTROLLER:

REVOKE CREATE TABLESPACE FROM controller

Включення ролі CONTROLLER більше не дозволяє користувачам створювати табличні простори.

Приклад 4

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

REVOKE vp FROM ceo

Роль VP більше не призначена ролі CEO.

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