Оператором с помощью которого можно отменить привилегии пользователя или приложения является
Упрощенный синтаксис для REVOKE внешне отличается от синтаксиса GRANT. Предложение ТО <получатель> заменяется на FROM <получатель?.
Следующий оператор отменяет привилегию SELECT К таблице DEPARTMENT у пользователя KILROY, если он получил ее при выполнении GRANT SELECT:
REVOKE SELECT ON DEPARTMENT FROM KILROY;
Следующий оператор отменяет привилегию UPDATE К таблице CUSTOMER для процедуры
REVOKE UPDATE ON CUSTOMER FROM PROCEDURE COUNT_BEANS;
Следующий оператор удаляет привилегию EXECUTE, которая была предоставлена процедуре COUNT_BEANS К процедуре ABANDON_OLD:
REVOKE EXECUTE ON PROCEDURE ABANDON_OLD FROM PROCEDURE COUNT_BEANS;
Удаление множества привилегий
Для удаления нескольких, но не всех привилегий, предоставленных пользователю или процедуре, перечислите удаляемые привилегии, отделив их друг от друга запятыми. К примеру, следующий оператор удаляет привилегии INSERT и UPDATE к таблице DEPARTMENT у пользователя SERENA:
REVOKE INSERT, UPDATE ON DEPARTMENT FROM SERENA;
Следующий оператор удаляет две привилегии к таблице CUSTOMER у хранимой процедуры COUNT_BEANS:
REVOKE INSERT, DELETE
FROM PROCEDURE COUNT_BEANS;
Любая комбинация ранее назначенных привилегий SELECT, INSERT, UPDATE, DELETE или REFERENCES может быть отменена назначившим эти привилегии, неважно, были ли они назначены индивидуально, в списке или с использованием ALL.
Как и в случае GRANT, отмена привилегий REVOKE ALL объединяет привилегии SELECT, INSERT, UPDATE, DELETE и REFERENCES в одном выражении. Данный оператор отменит любое из этих назначенных полномочий.
Например, следующий оператор отменит все привилегии доступа к таблице
DEPARTMENTS у пользователя MAGPIE:
REVOKE ALL ON DEPARTMENTS FROM MAGPIE;
Если пользователь не имеет всех привилегий, включенных в ALL, оператор не вызовет исключения. Оператор REVOKE ALL может быть особенно полезным, если вы не знаете, какие привилегии имеет пользователь. Нет необходимости решать проблему устранения всех полномочий, доступных пользователю, потому что у REVOKE ALL есть ограничения на то, что он способен отменить.
Чего не отменяет REVOKE ALL
REVOKE ALL не отменяет:
* привилегии, наследуемые вместе с ролью;
* привилегии, полученные как PUBLIC;
Отмена привилегии EXECUTE
Синтаксис отмены привилегии EXECUTE к хранимой процедуре:
ON PROCEDURE <имя-процедуры>
FROM <получатель> [, <получатель> [, . ]]
| [TRIGGER <имя-триггера> [, <имя-триггера> [. ]]
[PROCEDURE <имя-процедуры> [, <имя-процедуры> [, . ]]
[VIEW <имя-просмотра> [, VIEW <имя-просмотра> [, . ]];
Следующий оператор удаляет привилегию EXECUTE у пользователя HPOTTER к процедуре COUNT_CHICKENS:
REVOKE EXECUTE ON PROCEDURE COUNT_CHICKENS FROM HPOTTER;
Использование
Использование Во-первых, мы сперва должны подключить библиотеку cssexpr.js (о ней речь чуть ниже) и только потом вызывать нашу функцию constExpression.<script type="text/javascript" src="cssexpr.js"></script>После этого можно использовать constExpression в любом задаваемом блоке стилей (<style>), или любом
14.7.1. Использование ftw()
Использование tar
Использование tar Утилита tar — одна из самых популярных программ, используемых для резервного копирования в системах Linux и UNIX. Она объединяет несколько файлов в один файл архива, что упрощает передачу информации по сети и сохранение ее на резервном носителе. Название
Использование ip
Использование ip Программа ip предназначена для управления таблицами маршрутизации, в частности, правилами, определенными в них. Выполнение данной программы зависит от значений некоторых подопций опции IP: Advanced Router. Программа ip вызывается следующим образом:ip команда [list |
Использование tc
Использование tc Утилита tc использует средства ядра, которые активизируются посредством опций меню QoS and/or Fair Queueing. Данная программа управляет исходящим трафиком, в частности, не позволяет одному типу трафика монополизировать пропускную способность линии связи. В
Использование VPN
Использование VPN VPN позволяет расширить локальную сеть за счет взаимодействия с внешними компьютерами. Очевидно, что если локальная сеть подключена к Internet, внешние пользователи могут обращаться к ней без VPN. Однако VPN имеет ряд преимуществ перед обычными типами сетевого
3.3.3. Использование RPM
3.3.3. Использование RPM Программа RPM не имеет графического интерфейса, поэтому запускать ее нужно в консоли или в терминале (команда меню Приложения?Системные?Терминал). Формат вызова программы rpm следующий:rpm [-опции] [пакеты]Напомню, что установка программ - это привилегия
Использование
Использование Метапрограммирование и метафункции Прежде чем перейти к изложению дальнейшего материала, полезно ввести понятия метапрограммирования и метафункции. Если внимательнее посмотреть на то, что происходит, когда компилятор встречает пример, подобный
Использование
Использование По сути дела, Xalan Java и Xalan C++ — это библиотеки, позволяющие использовать XSLT-преобразования в собственных проектах. Xalan Java поддерживает набор интерфейсов TrAX (от англ. transformation API for XML — программный интерфейс преобразований для XML), определяющий стандартные
Использование
Использование Легкий вариант, Instant Saxon представляет собой утилиту командной строки saxon.exe, с помощью которой можно применять преобразования к XML-документам:saxon.exe -о result.xml source.xml stylesheet.xslПолная версия Saxon (включающая также исходный код) тоже может использоваться как утилита
Использование
Использование Главной областью применения Oracle XSLT Processor является его использование совместно с технологиями XSQL и XSU для обеспечения Web-доступа к реляционным данным. Кроме этого, Oracle XSLT Processor легко интегрируется в другие приложения и также может выполняться из командной
Использование
Использование Как и любой другой XSLT-процессор, написанный на Java, xt можно без труда использовать в Java-проектах. Помимо этого, xt можно использовать в качестве сервлета и из командной строки.Сервлет-версия xt реализована в классе com.jclark.xsl.sax.XSLservlet и может выполняться на
Использование
Использование Прежде всего, как C-библиотеку, libxslt можно подключать к собственным модулям посредством документированного API, а также при помощи разработанных врапперов использовать в Perl и Python-программах. Поскольку по степени совместимости и разработанности libxslt явно
29.4.3. Использование SSI
29.4.3. Использование SSI Использование сценариев cgi, открывающих Web–страницы с целью отображения небольшого количества сведений, не всегда является оправданным. Например, была отображена дата, но также был создан сценарий cgi, который тоже отображает дату. Не лучше ли было бы
Если какому-то пользователю базы данных были предоставлены какие-то привилегии, то они полностью или частично могут быть отменены. Отменить назначенные ранее привилегии может или пользователь SYSDBA, или владелец базы данных, или пользователь, предоставивший эти привилегии. Отменить можно как сами привилегии, так и право на наследование привилегий.
Для отмены привилегий предусмотрен оператор REVOKE. Формат оператора
REVOKE ON FROM
В примере 13.5 пользователю USER INS были предоставлены две привилегии. Отменить обе привилегии можно двумя способами.
Пример 13.16. Отменить обе привилегии у пользователя USERJNS
REVOKE Select, Insert ON Town TO USER_ INS;
REVOKE All ON Town TO USER_ INS;
Универсальный параметр All отменяет все назначенные привилегии для работы с таблицей независимо от того, имел или нет пользователь абсолютно все привилегии для работы с таблицей.
Пример 13.17. Отменить привилегию Insert у пользователя USERJNS
REVOKE Insert ON Town TO USER_ INS;
В примере 13.15 пользователь USERCHEFF получил от пользователя SYSDBA право на наследование привилегий. Предположим, что пользователь USER CHEFF (старший) передал право наследования привилегий трем другим пользователям (младшим), а те, каждый в свою очередь, передали право наследования привилегий 20 пользователям базы данных (младшим). Таким образом, 64 пользователя, включая пользователя USER CHEFF', имеют право наследования привилегий.
Пример 13.18. Отменить право наследования привилегий у пользователя USER CHEFF.
REVOKE GRANT OPTION FOR All ON Town TO USER CHEFF;
В результате выполнения оператора REVOKE все 64 пользователя потеряют право наследования привилегий, но сами будут пользоваться полученными привилегиями.
Отмена права наследования привилегий у старшего пользователя автоматически отменяет эту привилегию у всех младших пользователей.
В примере 13.18 было отменено право на наследование всех привилегий у 64 пользователей. Оператор REVOKE позволяет изъять право на наследование какой-то одной или нескольких привилегий.
Пример 13.19. Отменить право наследования двух привилегий у пользователя USER CHEFF.
REVOKE GRANT OPTION FOR Update, Delete ON Town TO
После выполнения оператора REVOKE 64 пользователя потеряют право наследования двух привилегий Update и Delete, но будут продолжать сами пользоваться этими привилегиями.
Привилегия на использование хранимой процедуры отменяется отдельно. В примере 13.19 пользователю USER CHEFF было предоставлено право использования хранимой процедуры Ostatok.
Пример 13.20. Изъять привилегию использования хранимой процедуры у пользователя USER CHEFF.
REVOKE Execute ON PROCEDURE Ostatok FROM USER CHEFF;
Мы уже узнали о том, как создать пользователя в MySQL, используя MySQL | создать заявление пользователя . Но использование инструкции «Создать пользователя» только создает нового пользователя, но не предоставляет никаких привилегий учетной записи пользователя. Поэтому для предоставления привилегий учетной записи пользователя используется инструкция GRANT.
Синтаксис:
Используемые параметры :
- privileges_name : это права доступа или привилегии, предоставленные пользователю.
- объект: это имя объекта базы данных, для которого предоставляются разрешения. В случае предоставления привилегий для таблицы это будет имя таблицы.
- пользователь: это имя пользователя, которому будут предоставлены привилегии.
Привилегии :
Привилегии, которые могут быть предоставлены пользователям, перечислены ниже вместе с описанием:
Давайте теперь узнаем о различных способах предоставления привилегий пользователям:
В приведенном выше примере символ «*» используется для предоставления разрешения выбора всем пользователям таблицы «пользователи».
Предоставление привилегии «Выполнить» : привилегия «Выполнение» дает возможность выполнить функцию или процедуру.
Синтаксис:
Различные способы предоставления EXECUTE привилегий:
- Предоставление привилегий EXECUTE для функции в MySQL. : Если есть функция с именем «CalculateSalary» и вы хотите предоставить EXECUTE доступ пользователю с именем Amit, то должен быть выполнен следующий оператор GRANT.
- Предоставление привилегий EXECUTE всем пользователям для функции в MySQL. : Если есть функция с именем «CalculateSalary» и вы хотите предоставить EXECUTE доступ всем пользователям, то должен быть выполнен следующий оператор GRANT.
- Предоставление привилегии EXECUTE Пользователям для процедуры в MySQL. : Если есть процедура с именем «DBMSProcedure» и вы хотите предоставить EXECUTE доступ пользователю с именем Amit, то должен быть выполнен следующий оператор GRANT.
- Предоставление привилегий EXECUTE всем пользователям для процедуры в MySQL. : Если существует процедура «DBMSProcedure», и вы хотите предоставить EXECUTE доступ всем пользователям, то должен быть выполнен следующий оператор GRANT.
Проверка привилегий, предоставленных пользователю : чтобы увидеть привилегии, предоставленные пользователю в таблице, используется оператор SHOW GRANTS. Чтобы проверить привилегии, предоставленные пользователю с именем «Amit» и хосту как «localhost», будет выполнена следующая инструкция SHOW GRANTS:
Выход :
Отзыв привилегий из таблицы
Оператор Revoke используется для отзыва некоторых или всех привилегий, которые были предоставлены пользователю в прошлом.
Синтаксис:
Используемые параметры :
- объект: это имя объекта базы данных, от которого отозваны разрешения. В случае отзыва привилегий из таблицы это будет имя таблицы.
- пользователь: это имя пользователя, от которого отменяются привилегии.
привилегии
Привилегии могут иметь следующие значения:
Различные способы отзыва привилегий у пользователя:
- Отзыв привилегии SELECT для пользователя в таблице : чтобы отозвать привилегию для таблицы с именем «users», где User Name is Amit, должен быть выполнен следующий оператор отзыва.
- Отзыв больше чем Привилегии для Пользователя в Таблице : Чтобы отозвать несколько Привилегий для пользователя с именем «Amit» в таблице «пользователи», должен быть выполнен следующий оператор отзыва.
Отзыв всех привилегий для пользователя в таблице : чтобы отозвать все привилегии для пользователя с именем «Amit» в таблице «пользователи», необходимо выполнить следующую инструкцию отзыва.
Я участвую в бакалавриате, и у меня нет особых проблем при предоставлении прав собственности пользователю A на хранимую процедуру, принадлежащую пользователю B в базе данных Oracle 10g mode = xe.
Пожалуйста, помогите мне написать команды sql для предоставления прав собственности на хранимую процедуру xyz другому пользователю A.
Я не уверен, что понимаю, что вы подразумеваете под "правами собственности".
Если пользователь B владеет хранимой процедурой, пользователь B может предоставить пользователю разрешение на выполнение хранимой процедуры
Затем пользователь A вызовет процедуру, используя полное имя, т.е.
В качестве альтернативы, пользователь A может создать синоним, чтобы избежать использования полного имени процедуры.
Вы не можете делать то, что, я думаю, вы просите.
Единственными привилегиями, которые вы можете предоставить для процедур, являются EXECUTE и DEBUG.
Как упоминал Джастин, способ предоставить права выполнения A для процедуры, принадлежащей B:
В вашей учетной записи DBA дайте USERB право создать процедуру с помощью гранта grant create any procedure to USERB
Процедура будет выглядеть
Я знаю, что это очень старый вопрос, но я надеюсь, что смогу немного его починить.
Пакеты и хранимые процедуры в Oracle выполняются по умолчанию, используя права пакета/процедуры OWNER, а не текущего пользователя.
Итак, если вы вызываете пакет, который создает пользователя, например, его владельца пакета, а не вызывающего пользователя, которому требуется создать пользовательскую привилегию. Абонент просто должен иметь разрешение на выполнение в пакете.
Если вы предпочитаете, чтобы пакет был запущен с использованием разрешений вызывающего пользователя, тогда при создании пакета вам необходимо указать AUTHID CURRENT_USER
Реализация инструкции GRANT в системе Oracle поддерживает огромное количество вариантов и изменений. Синтаксис ее следующий.
[WITH OPTION] [IDENTIFIED BY пароль] [WIТН ADMIN OPTION];
Вы можете присваивать несколько привилегий в одной инструкции, но эти привилегии должны относиться к одному типу (объектные, системные или ролевые).
Например, вы можете предоставить пользователю три объектные привилегии в одной таблице при помощи одной инструкции GRANT, затем при помощи отдельной инструкции назначить две системные привилегии какой-нибудь роли, а в третьей инструкции присвоить пользователю несколько ролей, но нельзя сделать все это в одной инструкции GRANT.
Ниже приводятся параметры инструкции GRANT платформы Oracle.
объект_имя_привилегия
Привилегии для доступа к указанному объекту схемы (например, таблице или представлению) присваиваются указанному получателю (имя_получателя) или роли. Вы можете объединять в одной инструкции несколько объектных привилегий, объектов схемы или получателей. Однако вы не можете объединять в одной инструкции присвоение системных привилегий или ролей с присвоением объектных привилегий. Существуют следующие объектные привилегии.
ALL [PRIVILEGES]
Присваиваются все доступные привилегии доступа к объекту схемы. Можно применять к таблицам.
ALTER
Предоставляется право изменять существующую таблицу при помощи инструкции ALTER TABLE. Можно применять к таблицам и последовательностям.
DEBUG
Предоставляется право обращаться к таблице при помощи отладчика. Этот доступ применим к любым триггерам таблицы и любой информации о коде SQL, напрямую обращавшемся к таблице. Можно применять к таблицам, представлениям, процедурам, функциям, пакетам, объектам Java и типам.
EXECUTE
Предоставляется право запускать хранимую процедуру, пользовательскую функцию или пакет. Можно применять к процедурам, функциям, пакетам, объектам Java, библиотекам, типам, индексным типам и пользовательским операторам.
INDEX
Предоставляется право создавать индексы по таблице.
(ON COMMIT REFRESH QUERY REWRITE>
Предоставляется привилегия создавать материализованные представления, обновляющиеся после транзакции (refresh-on-commit), или создавать материализованное представление для переписывания запросов к указанной таблице. Применяется только к материализованным представлениям.
Предоставляется привилегия читать и записывать файлы в директорию, указанную с помощью полного пути к директории операционной системы. Поскольку система Oracle имеет возможность сохранять файлы за пределами базы данных, серверный процесс Oracle должен быть запущен пользователем, имеющим привилегии доступа к указанным директориям. Вы можете включить в Oracle при помощи этого механизма систему обеспечения безопасности на уровне отдельных пользователей. Обратите внимание, что предложение WRITE можно использовать только с внешней таблицей, например файлом журнала или файлом ошибок.
REFERENCES
Предоставляется право определять ограничения, обеспечивающие ссылочную целостность. Можно использовать в таблицах.
(SELECT | INSERT | UPDATE DELETE>
Предоставляется право выполнять соответствующие команды SQL применительно к указанному объекту схемы. Можно использовать в таблицах, представлениях, последовательностях (только SELECT) и материализованных представлениях (только SELECT). Отметьте, что вы должны предоставить привилегию SELECT тому пользователю или роли, которому требуется привилегия DELETE. Вы можете назначать привилегии на уровне столбцов, включив в инструкцию, после имени объекта, заключенный в скобки список столбцов. Это возможно только при предоставлении объектных привилегий INSERT, REFERENCES или UPDATE в таблице или представлении.
UNDER
Предоставляется право создавать представления-потомки указанного представления. Используется только с представлениями и типами.
системная_привилегия
Указанная системная привилегия Oracle назначается одному или нескольким пользователям или ролям. Например, вы можете предоставлять такие привилегии, как CREATE TRIGGER или ALTER USER. В обоих случаях предоставление системной привилегии наделяет пользователя или роль правом выполнять команду с соответствующим именем. Полный список системных привилегий приводится в 3.2 ниже в этом разделе.
роль
Роль назначается пользователю или другой роли. Помимо пользовательских ролей существует несколько готовых системных ролей, поставляемых с Oracle.
CONNECT, RESOURCE и DBA
Предлагаются для обратной совместимости с предыдущими версиями Oracle.
Не используйте эти роли в текущей и более новых версиях Oracle, поскольку в будущем их поддержка может быть прекращена.
DELETEJOA TALOGJROLE, EXECUTEJJA TALOGJROLE и SELECT_СА TALOGJ.OLE
Пользователи, которым присвоена эта роль, могут удалять, выполнять и отбирать данные из словарных представлений и пакетов.
EXP_FULL_DATABASE и IMP_FULL_DATABASE
Пользователи, которым присвоена эта роль, могут запускать утилиты импорта и экспорта.
AQJJSERJROLE и AQ_ADMINISTRATORJROLE
Пользователи, которым присвоена эта роль, могут использовать или администрировать такую функциональность Oracle, как Advanced Queuing.
SNMPAGENT
Присваивается только Oracle Enterprise Manager и Intelligent Agent.
RECOVERY_CATA LOGO WNER
Предоставляется привилегия создавать пользователей, владеющих собственным каталогом восстановления.
HS_ADMIN_ROLE
Предоставляется привилегия обращаться к областям словарей данных, которые используются для поддержки гетерогенных служб Oracle.
ON имя_схемы
Пользователю или роли предоставляется привилегия доступа к объекту схемы. К объектам базы данных относятся: таблицы, представления, последовательности, хранимые процедуры, пользовательские функции, пакеты, материализованные представления, пользовательские типы, библиотеки, индексные типы, пользовательские операторы или синонимы всех этих объектов. Если имя схемы не будет указано, будет подразумеваться схема текущего пользователя. Платформа Oracle также поддерживает два ключевых слова для особых случаев.
DIRECTORY
Предоставляются права доступа к объекту-директории, который представляет собой объект Oracle, соответствующий директории в файловой системе.
JAVA
Предоставляются привилегии доступа к Java-объектам схемы SOURCE и RESOURCE.
Указывается пользователь или роль, получающая данную привилегию. Ключевое слово PUBLIC также можно использовать при отмене привилегии, назначенной для роли PUBLIC. Можно через запятую перечислить нескольких получателей привилегии.
WITH GRANT OPTION
Позволяет получателю привилегии назначать эти привилегии другим пользователям или роли PUBLIC, но никаким другим ролям.
WITH HIERARCHY OPTION
Позволяет получателю привилегии в объекте-родителе получить эти привилегии во всех объектах-потомках. Это касается и всех потомков, которые будут созданы в будущем. Вы можете использовать эту опцию только при назначении объектной привилегии SELECT.
IDENTIFIED BY пароль [WITH ADMIN OPTION]
Устанавливается или изменяется пароль, который получатель привилегии должен использовать, чтобы ему была предоставлена роль.
WITH ADMIN OPTION
Позволяет получателю осуществлять управление ролью, которую вы ему назначаете. Во-первых, это предложение позволяет получателю назначать и отзывать роль пользователям и неглобальным ролям. Оно также позволяет получателю удалить роль или изменить авторизацию, необходимую для доступа к ней.
Назначение привилегий пользователям вступает в силу немедленно. Назначение ролей вступает в силу немедленно, если роль задействована. В противном случае назначение вступает в силу после включения роли. Обратите внимание, что роли можно назначать пользователям и другим ролям (в том числе PUBLIC). Пример:
GRANT sales_reader ТО salesjnanager;
Чтобы предоставлять привилегии доступа к представлению, вы должны иметь в базовых таблицах представления данные привилегии, с указанием предложения WITH GRANT OPTION.
Если вы захотите предоставить привилегии всем пользователям, просто назначьте эти привилегии роли PUBLIC.
GRANT SELECT ON work_schedule TO public;
Тем не менее существуют определенные ограничения в предоставлении системных привилегий и ролей.
- Привилегия или роль не должна встречаться в инструкции GRANT больше одного раза.
- Роль нельзя назначить самой себе.
- Роли не могут назначаться рекурсивно, то есть нельзя назначить роль sales_reader роли sales_manager, а потом присвоить роль sales_manager роли sales_reader.
Вы можете присваивать несколько однотипных привилегий в одной инструкции GRANT. Однако эти привилегии должны относиться к объектам одного типа.
GRANT UPDATE (emp_id, job_id), REFERENCES (emp_id)
В качестве отступления, предоставление любых объектных привилегий доступа к таблице позволяет пользователю (или роли) блокировать таблицу любым режимом блокировки, используя инструкцию Oracle LOCK TABLE.
Почти все поддерживаемые Oracle функциональности и команды могут назначаться в виде привилегий в инструкции GRANT (как это показывает 3.2). Привилегии можно назначать не только применительно к объектам базы данных (таким, как таблицы и представления) и системным командам (таким, как CREATE ANY TABLE), но также и к объектам схем (таким, как DIRECTORY, JAVA SOURCE и RESOURCE).
Параметр ANY, показанный в 3.2, предоставляет права выполнения данной инструкции применительно к объектам указанного типа, принадлежащим любому пользователю в схеме. Без опции ANY пользователь сможет применять инструкции только к объектам в своей собственной схеме. Более полный список системных привилегий Oracle приведен в 3.2.
Все привилегии, показанные в 3.2 и содержащие ключевое слово ANY, имеют особое значение. В частности, ключевое слово ANY дает пользователям право выполнять указанную операцию в любой схеме. Если вы хотите включить сюда все пользовательские схемы, но исключить схему SYS, установите инициализационный параметр 07 DICTIONARY ACCESSIBILITY ъ заданное для него по умолчанию значение FALSE.
Дополнительная информация по теме
Некоторые советы и методы использования инструкции INSERT в базах данных на платформе Oracle
Правила и методы использования инструкции FETCH в базах данных на платформе Oracle
Способы и методы использования инструкции DELETE в базах данных на платформе Oracle
Некоторые советы и методы использования инструкции GRANT в базах данных на платформе DB2
По умолчанию аккаунт не имеет никаких прав в БД Oracle. Невозможно даже создать подключения без назначенных прав. И даже после получения прав на подключения, аккаунт не может сделать ничего полезного (или опасного) без получения соответсвующих прав. Права назначаются с помощью команды GRANT и убираются с помощью команды REVOKE. Дополнительные директивы команды используются для разрешения аккаунта делится правами которые у него есть с другими пользователями. По умолчанию только аккаунта администратора (SYS и SYSTEM) владеют правами назначения прав. Пользователь который назначает права другому пользователю называется grantor когда получатель прав – grantee. Права разбиты на две группы: системные права, которые грубо говоря позволяют пользователю совершать действия влияющие на словарь данных, и права над объектами, которые позволяют пользователю совершать действия влияющие на данные.
Системные права
Всего доступно около двух сотен системных прав. Большинство из них влияет на действия затрагивающие словать данных (такие как создание таблиц или пользователей). Остальные влияют на экземпляр или БД (создание табличны пространств, изменение параметров БД и создание сессий). Наиболее часто используемые права это
- CREATESESSION – права на подключения. Без этих прав вы даже не сможете подключиться к БД
- RESTRICTEDSESSION – Если БД запущена с директивой STARTUPRESTRICT или применялась команда ALTERSYSTEMENABLERESTRICTEDSESSION, то только пользователи с этими правами смогут подключаться к БД
- ALTERDATABASE – разрешает выполнять команды влияющие на физические структуры
- ALTERSYSTEM – разрешает изменять параметры экземпляра и структуры памяти
- CREATETABLESPACE – вместе с ALTERTABLESPACE и DROPTABLESPACE позволяют пользователю управлять табличными пространтсвами
- CREATETABLE – позволяет gratee создавать таблицы в своей схеме; включает возможность создавать, изменять и удалять таблицы, выполнять команды DML и select и управлять индексами
- GRANTANYOBJECTPRIVILEGE – позволяет grantee управлять правами объектов которые ему не принаджлежат, но не даёт прав ему самому
- CREATEANYTABLE – grantee может создавать таблицы которые принадлежат другим аккаунтам
- DROPANYTABLE – grantee позволяется удалять таблицы которые принадлежат другим аккаунтам
- INSERTANYTABLE, UPDATEANYTABLE, DELETEANYTABLE – даёт grantee право выполнять DML команды над объектами которые ему не принадлежат
- SELECTANYTABLE – Даёт право grantee выполнять SELECT к любмы таблицам.
Синтаксис для назначения прав
GRANT privilege [,privilege…] TO username;
После создания аккаунта, обычно назначаются права часто используемые пользователями кто вовлечён в разработку приложения
grant create session, alter session,
create table, create view, create synonym, create cluster,
create database link, create sequence,
create trigger, create type, create procedure, create operator
Эти права позволяют подключаться и настраивать сессию, создавать объекты и хранить PL/SQL объекты. Объекты могут быть созданы только в схеме аккаунта; нет прав к схемам других аккаунтов. Также создание объектов ограничивается лмимитами табличных пространств.
Другим вариантом назначения прав будет назначение grantee доступа для переназначения прав другим аккаунтам. Например
grant create table to scott with admin option;
grant create table to jon;
Выполнение этих команд позволит SCOTT создавать таблицы в совей схеме, и выполнять команду GRANT. SCOTT даёт права пользователю JON создавать таблицы – но JON сможет создавать таблицы только в схеме JON. На рисунке 6-5 показаны права пользователя в Database Control; ту же информацию можно получить выполнив запрос к представлению DBA_SYS_PRIVS.
Если системные разрешения были отозваны, все действия которые вы выполнили пока у вас были права остаются в силе. Если у вас были права с ADMIN OPTION то у всех пользователей которым вы назначили права – права остаются, несмотря на то что у вас права отозвали. Не остаётся записей кто именно назначил системные привилегии, таким образом невозможно забрать права CASCADE как показано на рисунке 6-6
Revocation of a system privilege will not cascade (unlike
revocation of an object privilege).
Права ANY дают доступ ко всем объектам в БД. Таким образом
grant select any table to scott
позволить аккаунту SCOTT выполнять запрос SELECT ко всем таблицам во всех схемах БД. Такое назначение прав считается дурным тоном и ANY права назначаются только DBA.
In fact, ANY is not as dangerous now as with earlier releases. It no longer
includes tables in the SYS schema, so the data dictionary is still protected. But
ANY should still be used with extreme caution, as it removes all protection
from user tables.
Объектные права
Объектные права дают доступ к выполнению команд DML и SELECT к соответствующим объектам и выполнению PL/SQL объектов. Эти права не существуют для объектов в схеме аккаунта; если у пользователя есть системные права CREATE TABLE – это значит что он может выполнять SELECT и DML запросы к таблицам которые он создал без дополнительных прав.
The ANY privileges, that grant permissions against objects in
every user account in the database, are not object privileges—they are
Объектные права применяются к разным группам объектов
GRANT privilege ON [schema.]object TO username [WITH GRANT OPTION];
grant select on store.customers to scott;
Можно использовать ALL чтобы применить права для всех операций, или использовать конкретное указание столбца таблицы или представления.
grant select on store.orders to scott;
grant update (order_status) on store.orders to scott;
grant all on store.regions to scott;
Эти команды позволят аккаунту SCOTT выполнять запрос SELECT ко всем столбцам таблицы ORDERS в схеме STORE но обновлять данные только в одном столбце. Также у аккаунта SCOTT есть доступ ко всем операциям к таблице REGIONS. На рисунке 6-7 отображается результат назначения прав при просмотре в Database Control
Granting privileges at the column level is often said to be bad practice
because of the massive workload involved. If it is necessary to restrict peoples’
access to certain columns, creating a view that shows only those columns will
often be a better alternative.
Использование директивы WITH GRANT OPTION позволит пользователю передавать свои права другим аккаунта. Оракл хранит информацию о том кто и кому дал доступ на объектном уровне; это позволяет отзывать права учитывая эту информацию. Рассмотрим пример
Читайте также: