
С. Н. Смирнов, И. С. Задворьев Учебное пособие 2-е издание исправленное и дополненное Москва 2002 УДК 681.3.06 32.973.2 57 Смирнов С. И. С. ...
-- [ Страница 4 ] --процедуры PROCEDURE или функции или доступ к элемен ту спецификации произвольного пакета.
GRANT PROCEDURE Передача привилегий с использо ванием предложения GRANT на объекты: процедура, функция или пакет. Отзыв привилегий с исполь зованием предложения REVOKE на объекты: процедура, функция или пакет.
GRANT SEQUENCE Передача привилегий с использо ванием предложения GRANT на последовательность. Отзыв приви легий с использованием предло жения REVOKE на последова тельность.
SELECT SEQUENCE Выполнение выборки элементов произвольной последовательности использованием CURRVAL или NEXTVAL В Oracle предусмотрено использование обобщенных имен групп событий для фиксации более широких множеств событий, чем те, что приведены в таблицах 25 и 26. Отметим, что поддержка обобщенных имен групп событий в будущих версиях Oracle не гарантируется.
Таблица 27. Таблица обобщенных имен групп событий Oracle Имя группы Фиксируемые действия CONNECT CREATE SESSION RESOURCE CREATE TABLE CREATE VIEW CREATE PROCEDURE CREATE SEQUENCE CREATE SYNONYM ALTER SYSTEM CREATE DATABASE LINK CREATE TABLESPACE DBA Все привилегии, задаваемые предложением SYSTEM GRANT, a также CREATE USER CREATE ROLE AUDIT SYSTEM CREATE PUBLIC DATABASE LINK CREATE PUBLIC SYNONYM доступа в Oracle ALL Все привилегии, перечисленные в таблице 25 (но не в таблице 26).
ALL PRIVILEGES Все системные привилегии.
Аудит с к объекту Для регистрации событий, связанных с доступом к кон кретному объекту Oracle, пользователь должен иметь приви легию AUDIT ANY. Модификация перечня фиксируемых со бытий, связанных с доступом объекту, может быть выпол нена и в период, когда служба аудита не активизирована. При этом, естественно, записи о регистрируемых событиях начнут появляться только после активизации службы.
Оператор определения перечня регистрируемых событий, связанных с доступом к объекту Oracle, использует следую щий синтаксис:
AUDIT [ }... ] ON [BY { SESSION | ACCESS }] [WHENEVER [NOT] SUCCESSFUL] Параметр шля может прини мать значения, приведенные в таблице 28 и зависящие от типа объекта.
Конструкция BY SESSION указывает на то, что в таблицу аудита заносится единственная запись о регистрируемом дей ствии для каждого сеанса пользователя. Значение использует ся по умолчанию.
Конструкция BY ACCESS указывает на то, что для каж дого выполнения действия в аудита заносится запись о фиксируемом действии. Заметим, что в случае, если в предложении определена фиксация выполне ния предложений подъязыка определения данных, то незави от указанного значения параметра | принудительно выполняются действия, определяе мые конструкцией BY ACCESS.
Конструкция WHENEVER SUCCESSFUL указывает на в таблицу аудита заносится запись о фиксируемом действии только в случае успешного выполнения операции.
Конструкция WHENEVER NOT SUCCESSFUL указывает на то, что в таблицу заносится запись о фиксируемом действии только в случае неуспешного выполнения операции.
Если конструкция WHENEVER... не указана, то ауди торская запись вносится независимо от успешности выполне ния операции. Действие команды аудита к объекту начинается немедленно после ее выполнения, то есть в теку щей сессии.
Таблица 28. Таблица значений параметра применимого к объектам Oracle Имя действия объекты Oracle SELECT Таблица, представление, снимок, по следовательность.
Таблица, представление, снимок.
UPDATE Таблица, представление, снимок.
DELETE Таблица, представление, снимок.
EXECUTE Процедура, функция, пакет.
GRANT Таблица, представление, снимок, по следовательность, процедура, пакет, функция.
AUDIT Таблица, представление, снимок, по следовательность, процедура, функция, пакет.
ALTER Таблица, снимок, последовательность.
RENAME Таблица, представление, снимок, про цедура, функция, пакет.
Средства в Oracle Рассмотрим пример аудита неуспешных попыток записи в таблицу владельцем которой является пользователь SYSTEM. Заметим, что в листингах представлен метод, который не допускает выполнения такой операции. В листинге представлен метод, в котором запрещение опе рации обеспечивается системными средствами, а попытка запрещенную операцию регистрируется средства ми системного аудита.
CONNECT Connected.
SQL> AUDIT INSERT ON TAB 2 WHENEVER NOT SUCCESSFUL;
Audit succeeded.
SQL> CONNECT U1/U1PSW@EDUC SQL> INSERT INTO INTO * ERROR at line table or view does not SQL> CONNECT Connected.
INSERT ON Noaudit succeeded.
SELECT USERNAME, ACTION, 2 TIMESTAMP FROM ACTION TIMESTAMP 103 12-04- SELECT USERNAME, 2 FROM SES_ACTIONS. F Протокол регистрации неуспешных по пыток вставки строк в таблицу Прекращение Прекращение регистрации системных событий быть выполнено в любое время пользователем, имеющим привилегию AUDIT SYSTEM.
Оператор прекращения регистрации определенных сис темных событий Oracle использует следующий синтаксис:
\ [BY пользователь [WHENEVER [NOT] SUCCESSFUL] Список значений, которые может принимать параметр приведен в таблицах 25 и 26. Список не является исчерпывающим, полный можно получить из документа Oracle Server SQL Reference.
Список значений, которые может принимать параметр приведен в разделе, посвященном предоставлению системных привилегий.
Конструкция BY указывает на то, что пре кращается регистрация только действий конкретного пользо вателя, определенных данным предложением. Если она не указана, прекращается регистрация действий всех пользова телей.
Конструкция WHENEVER SUCCESSFUL указывает на то, что в таблицу аудита заносится запись о фиксируемом действии только в случае успешного выполнения операции.
в Oracle Конструкция WHENEVER NOT SUCCESSFUL указывает на то, что в таблицу аудита заносится запись о фиксируемом действии только в случае неуспешного выполнения операции.
Если конструкция WHENEVER... не указана, то ауди торская запись вносится независимо от выполне ния операции.
Отметим, что команда отмены системного аудита избира тельна, то есть отменяет соответствующую команду начала регистрации событий. Поясним замечание примером. Пусть сначала выполнено предложение начала аудита по выборке пользователем а потом выполнено предложение по то тальному аудиту по выборке. Если администратор отменяет тотальный аудит по выборке, то действия пользователя U перестают фиксироваться, а регистрация действий пользова теля продолжается.
Прекращение регистрации событий, связанных с досту пом к объекту Oracle, может быть выполнено пользователем, имеющим привилегию AUDIT ANY.
Оператор прекращения регистрации определенных собы тий, связанных с доступом к объекту Oracle, использует сле дующий синтаксис:
ON [WHENEVER [NOT] SUCCESSFUL] Параметр имя может прини мать значения, приведенные в таблице 28 и зависящие от типа объекта.
Конструкция WHENEVER SUCCESSFUL указывает на то, в таблице аудита прекращается регистрация только успешно завершенных действий с объектами.
Конструкция WHENEVER NOT SUCCESSFUL указывает на то, что прекращается фиксация действий, приведших к возникновению ошибки.
Раздел Если конструкция WHENEVER не указана, то пре кращается запись обо всех определенных в команде операци ях, независимо от успешности выполнения операции.
Действие команды аудита доступа к объекту начинается немедленно после ее выполнения.
данных аудита Для обработки данных, накопленных в ходе аудита, обычно используются представления USER_AUDIT_TRAIL, USER_AUDIT_SESSION, а также Наиболее полную информацию об аудите содержит пред ставление USER_AUDIT_TRAIL. В таблице 29 перечислены имена атрибутов и их содержательные описания.
Таблица 29. Имена атрибутов и их содержательное описание для представления Имя атрибута Тип данных Описание VARCHAR2(255) Имя пользова теля, под кото рым он зареги стрировался в операционной системе.
VARCHAR2(30) Имя пользова теля, под он зареги стрировался в СУБД.
V ARCH AR2( 128) Идентификатор экземпляра ба зы с доступа в Oracle которым рабо тает поль зователь.
TERMINAL VARCHAR2(255) Идентификатор клиентского.
терминала пользователя.
TIMESTAMP DATE Дата и время создания реги страционной записи.
OWNER Владелец объ екта, с ко взаимо действует пользователь (для аудита объектов Oracle).
OBJ_NAME VARCHAR2(128) Имя объекта, с которым взаи модействует пользователь (для аудита объектов Oracle).
ACTION NUMBER Числовой код регистрируемо го действия пользователя.
ACTION_NAME Название реги стрируемого действия поль зователя.
NEW OWNER Владелец пере именованного объекта.
Новое имя реименованно го объекта.
Привилегии доступа к объ екту, которые были предо ставлены или отозваны.
VARCHAR2(40) Системные привилегии, которые были или отозваны.
VARCHAR2(1) Индикатор предоставле ния привиле гий с парамет ром WITH e ADMIN OPTION (при нимает значе ния Y и N) GRANTEE VARCHAR2(30) Имя пользова теля, у которо го изменены привилегии ко мандами GRANT или REVOKE.
AUDIT_OPTION VARCHAR2(40) Параметры ко манды AUDIT.
Средства доступа в Oracle SES_ACTIONS Строка симво лов, описы вающая ус пешное или неуспешное выполнение команды.
DATE Дата и время завершения сессии пользо вателем.
NUMBER Число опера ций логическо го чтения, вы полненных за сессию.
LOGOFF_PREAD NUMBER Число опера ций физиче ского чтения, выполненных за сессию.
LOGOFF NUMBER Число опера ций записи, выпол ненных за сес сию.
LOGOFF DLOCK VARCHAR2(40) Число тупико вых ситуаций, зафиксирован ных в сессии.
NUMBER Числовой идентификатор сессий.
NUMBER Числовой идентификатор регистра ционной запи си.
STATEMENTID NUMBER Числовой идентификатор каждой вы полняемой ко манды.
NUMBER Код возврата для каждой выполняемой команды.
VARCHAR2(40) Системные привилегии, используемые для исполнения регистриру емой команды.
OBJECT_LABEL RAW MLSLABEL Метка объекта (только для Trusted Oracle Server).
SESSION_LABEL RAW MLSLABEL Метка сессии (только для Trusted Oracle Server.) Представление USER_AUDIT_OBJECT предназначено для доступа к информации о регистрируемых событиях, свя занных с конкретными объектами.
Представление USER_AUDIT_SESSION предназначено для доступа к информации о регистрируемых сессиях.
Средства разграничения в Oracle Представление предназна чено для доступа к информации о предоставлении и отзыве привилегий, выполнении команд AUDIT, NOAUDJT и ALTER SYSTEM пользователем.
Для всех перечисленных выше представлений в словаре данных присутствуют также соответствующие представления с префиксом DBA_. В этих представлениях аккумулируется соответствующая сущности представления информация по всем пользователям системы.
Профили как повышения защищенности системы В качестве дополнительного средства повышения защи щенности системы можно рассматривать поддержку в систе ме Oracle профилей пользователя.
Профиль пользователя Ч это поименованный набор ог раничений на ресурсы системы. Ограничивая такие критиче ские ресурсы как процессорное время, число операций ввода вывода за сеанс и п., администратор может лишить потен циального злоумышленника возможности ухудшать характе ристики системы путем ее загрузки бессмысленной работой.
Ограничивая время пребывания клиента в неактивном со стоянии, администратор может защитить систему от наруши теля, получившего доступ к терминалу, оставленному закон ным пользователем на долгое время.
Для создания профиля, который позднее может быть на значен тому или иному пользователю, необходимо обладать системной привилегией PROFILE. Профиль не яв ляется объектом какой-либо схемы.
Оператор создания профиля Oracle использует следую щий синтаксис:
CREATE PROFILE Параметр может принимать значения, приведенные в таблице 30. Список не является ис черпывающим, полный список может быть взят из документа Oracle Server SQL Reference.
Таблица 30. Значения параметра для команды создания профиля пользователя Имя параметра Описание SESSION PER USER Максимальное число одновре менных сессий для данного пользователя.
CPU PER SESSION Максимальное суммарное время процессора (в сотых до лях секунды), выделяемое для одной сессии данному пользо вателю.
CPU PER CALL Максимальное время процес сора на операцию (в сотых до лях секунды), выделяемое данному пользователю.
CONNECT TIME Максимальное суммарное время на период сессии (в ми нутах), выделяемое данному пользователю.
IDLE TIME Максимальное время непре рывного неактивного состоя ния пользователя в минутах (время исполнения длитель ных операторов не считается Средства доступа в Oracle Максимальное суммарное число блоков данных, ных за период сессии, выде ляемое данному пользовате лю.
LOGICAL_READS_PER Максимальное суммарное CALL число блоков данных, считанных за время вы полнения одного предложения SQL, выделяемое данному пользователю.
Параметр может при нимать одно из трех значений:
Ч целое_число Ч UNLIMITED Ч DEFAULT.
Как правило, изначально в системе существует один про филь DEFAULT, у которого отсутствуют ограничения на ис пользуемые ресурсы. Обычно этот профиль назначается всем пользователям по умолчанию. Для введения ограничений на ресурсы его требуется изменить или создать новые профили и назначить их пользователям. Для включения системы ограни чения использования ресурсов необходимо выполнить коман ду ALTER SYSTEM SET = TRUE или изменить значение соответствующего параметра в файле па раметров базы данных.
В примере, представленном в листинге 175, создается профиль с ограничением на время соединения.
CONNECT ALTER SYSTEM SET = System altered.
SQL> CREATE PROFILE pfl LIMIT 1;
Profile created.
SQL> ALTER USER PROFILE User altered.
CONNECT Connected.
-- ожидаем SQL> SELECT. * FROM SELECT * FROM dual * ERROR at line 1:
exceeded maximum connect time, you are being logged off Листинг 175, Пример создания и назначения пользо вателю ограничения на используемые ресурсы сведения Для большой корпоративной системы разграни чения доступа может оказаться затрудненным. Причиной мо жет оказаться большое число объектов, пользователей, ролей, привилегий (системных и доступа к объектам). В этом случае проблема состоит не в том, что невозможно предоставить все необходимые привилегии, а в том, что в результате операций взаимно назначаемых привилегий, ролей и т. д. пользователь может получить несанкционированный доступ к данным. Для преодоления проблемы рекомендуется использовать специ альные программные продукты третьих фирм, которые по зволяют по словарю данных сформировать подробные отчеты по актуальным привилегиям. Также существуют специальные утилиты анализа таблиц аудита.
Средства доступа в Oracle Дополнительно отметим, что, наряду со стандартными мерами по недопущению компрометации паролей для ком пьютерных систем, в Oracle рекомендуется избегать сохране ния паролей в открытом виде, например, в командных и управляющих файлах и загрузки данных (параметры USERID, USER и т. п.).
Кроме того, в базе данных Oracle существует объект DATABASE LINK, при создании которого указываются все необходимые сведения для подключения к удаленной базе данных, Эти сведения сохраняются в словаре данных и поль зователь, обладающий необходимыми привилегиями, может их узнать.
Также необходимо отметить, что при установке различ ных дополнительных картриджей, программ и утилит созда ется большое число с известными паролями (например, картридж WebDB при установке создает пользо вателя WEBDB с паролем WEBDB и т. д.). Если администра тор по какой-то причине не изменил назначаемые по умолча нию пароли этих пользователей, то возникает серьезная угро за безопасности системы, так как обычно эти пользователи обладают многими системными привилегиями.
Создание приложений на языке Java Стандартным интерфейсом для взаимодействия прило жений, написанных на языке с является JDBC (Java DataBase Connectivity). Спецификации интерфейса JDBC определяются организацией JavaSoft и поддерживаются всеми основными производителями СУБД.
JDBC построен на идеологии объектно-ориентированного подхода и естественно в язык Java. Возможна интеграция вызовов JDBC как в программы, написанные на Java, так и в интерпретируемые Java-машинами браузеров. Наличие поддерживающих обращение к базе данных через интерфейс JDBC, позволяет создавать уни версальные приложения, не требующие специали зированного программного обеспечения на клиентских рабо чих станциях.
приложений и к базам данных Широкое распространение Всемирной паутины (WWW) и систем обработки данных, построенных на Web технологиях, привело к тому, что все производители СУБД на языке Java промышленного уровня одновременно являются производи телями "сопутствующих" средств разработки приложений и их интеграции с серверами баз данных. Современная модель информационных технологий обычно включает тонкого кли ента на основе браузера, сервер баз данных и набор компо нент промежуточного уровня, использующие технологии распределенной обработке данных.
Клиентские приложения обычно проектируются так, что бы обеспечить доступ данным независимо от их расположе ния и формата и обеспечить анализ и преобразования данных в осмысленную информацию, которая может быть доставлена потребителю в форме, определяемой его интерфейсом.
Традиционный подход к построению систем обработки данных состоит в том, что клиент присоединяется к некото рому серверу. При этом программное обеспечение клиента или коммуникационного интерфейса обычно поставляет фир ма-производитель обеспечения сервера баз данных. Web-технология опирается на новую модель, когда клиент менее функционален и более широко использует службы (сервисы) сервера баз данных или сервера приложе ний.
Тонкий клиент, характерный для Web-технологий, явля ется только средством просмотра информации, подготовлен ной и отправленной в среду доставки соответствующими сер верами.
Задачей, характерной для Web-технологий, является деление процессов, выполняемых на клиенте и сервере. Раз деление процессов является способом эффективной органи зации распределенной обработки данных. Оптимальный уро вень производительности достигается на любой конфигура ции аппаратных средств за счет адекватного разделения ре сурсов.
Каким же образом это обеспечивается? По определению тонкий клиент обладает минимальным набором программных и аппаратных ресурсов, обеспечивающих только поддержку сетевого транспорта и интерпретацию данных, получаемых от Web-приложений. По сути, тонкий клиент должен поддержи вать HTTP протокол, интерпретатор языка HTML и вирту альную Java-машину. может быть реализован не толь ко на традиционном персональном компьютере, но и на кар манном компьютере или даже на сотовом телефоне.
. Расширение функциональности тонкого клиента возмож но с помощью использования на языке Java.
Ч это прикладная хранимая в универсальном ко де и загружаемая тонким клиентом для последующей интер претации. Интерпретация кода осуществляется виртуальной Java-машиной, встроенной в программное обеспечение тон кого клиента.
Одной из наиболее простых и распространенных Web технологий является CGI (Common Gateway Interface). Эта технология обеспечивает тонкому клиенту возможность фор мировать запросы на доступ к требуемой информации через Web-сервер. После получения запроса посредством CGI, ис полняемый модуль возвращает ответ в форме HTML-текста.
Создание приложений на Java Объектно-ориентированным интерфейсом прикладного программирования (API), обеспечивающим взаимодействие с Oracle приложений, написанных на языке Java, является JDBC. Интерфейс JDBC определяет классы объектов Java, характерных для выполнения операций с базами данных: со единение, подготовка и выполнение SQL-операций, доступ к результатам, доступ к метаданным и т. п.
Набор классов, реализующий интерфейс JDBC для Oracle, стандартно размещается в файле или>
Для операционных систем Windows значение переменной>
Для создания приложений, использующих интерфейс JDBC, важно уяснить назначение и методы классов Connect, Statement и ResultSet. Прежде чем обращаться к соответст вующим методам, необходимо загрузить драйвер JDBC.
Простейшее приложение на Java Класс Connect обеспечивает инициализацию взаимодействия пользователя с сервером Oracle, включая ау тентификацию и авторизацию, установку параметров сессии (режим выполнения транзакций и т. п.).
Сессия открывается вызовом метода пара метрами которого являются универсальный локатор ресурса сервера баз данных, имя пользователя и пароль.
Метод обеспечивает получение метадан ных из словаря базы данных. Метаданные возвращаются в форме специального объекта типа Рассмотрим пример приложения на Java, которое инициализирует сессию взаимодействия с сервером Oracle.
Считаем, что информация, необходимая для установления связи с сервером, каталогизирована, а имя пользователя и пароль определены соответствующими переменны ми.
// Пример программы установления соединения с Oracle // import.
public>
Javac После успешной компиляции в текущем каталоге должен появиться файл с именем Выполнение осуще ствляется командой:
Java TestCon При отсутствии сбоев в работе приложения на терминал выводятся сообщения, представленные в листинге Java TestCon ConnectString :
ora Oracle Version : Enterprise Edition Re lease - Production With the Objects op tion PL/SQL Release - Production 177. Протокол штатного при ложения Когда установить соединение с сервером невозможно, выводятся сообщения об ошибках. Если, например, экземпляр сервера не запущен, то на терминал выводятся сообщения, представленные в листинге Java Хотели как null SQLCODE:
Connection Листинг Протокол регистрации ошибки при ус тановлении соединения приложений на Java Если, в приложении указано неправильные имя пользова теля или пароль, то на терминал выводятся сообщения, пред ставленные в листинге TestCon Хотели как SQLState: SQLCODE: invalid logon denied 179. Протокол регистрации ошибки при ус тановлении соединения апплет Отличие от представленных программ состоит в том, что всегда является расширением специального класса, описание которого хранится в библиотеке java.applet, и апплет запускается из некоторой HTML-страницы. Рас смотрим пример апплета, который обеспечивает инициализа цию сессии взаимодействия пользователя с сервером Oracle, включая аутентификацию пользователя и вывод информации о параметрах сессии, то есть полный аналог функций прило жения, представленного в листинге 176. Текст примера ап плета приведен в листинге Отличие состоит в описании основного класса (являюще гося расширением класса Applet) и использовании класса paint для вывода данных.
// Апплет Апплет выполняет // соединение с Oracle import j import import public>
Javac Для запуска обеспечивающего инициализацию сессии взаимодействия пользователя с сервером Oracle, необ ходимо подготовить соответствующую HTML-страницу. Ва риант текста страницы, из которой выполняется запуск ап плета, приведен в листинге Предполагается, что байт-код апплета получен в результате, приведенной выше команды и располагается в том же каталоге, что и текст страницы (параметр code тэга applet). Размер окна для выво да данных в примере определен 400 на 200 пикселов.
апплета соединения с Oracle