Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.
Жалоба
Напишите нам, и мы в срочном порядке примем меры.
Описание книги "Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ"
Описание и краткое содержание "Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ" читать бесплатно онлайн.
Рассмотрены вопросы, необходимые разработчику для создания клиент-серверных приложений с использованием СУБД Firebird, явившейся развитием СУБД Borland Interbase 6. Содержится обзор концепций и моделей архитектуры клиент/сервер, а также практические рекомендации по работе с клиентскими библиотеками Firebird. Детально описаны особенности типов данных SQL, язык манипулирования данными (Data Manipulation Language, DML), а также синтаксис и операторы языка определения данных ( Data Definition Language, DDL). Большое внимание уделено описанию транзакций и приведены советы по их использованию при разработке приложений. Описано программирование на стороне клиента и сервера написание триггеров и хранимых процедур, создание и использование событий базы данных, обработка ошибок в коде на сервере и многое другое. Материал сопровождается многочисленными примерами, советами и практическими рекомендациями.
Для разработчиков баз данных
* привилегии, предоставленные для PUBLIC, могут быть отменены только FROM PUBLIC.
Использование REVOKE
Упрощенный синтаксис для REVOKE внешне отличается от синтаксиса GRANT. Предложение ТО <получатель> заменяется на FROM <получатель?.
REVOKE <привилегии>
ON <объект>
FROM <получатель> ;
Следующий оператор отменяет привилегию SELECT К таблице DEPARTMENT у пользователя KILROY, если он получил ее при выполнении GRANT SELECT:
REVOKE SELECT ON DEPARTMENT FROM KILROY;
Следующий оператор отменяет привилегию UPDATE К таблице CUSTOMER для процедуры
COUNT_BEANS:
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
ON CUSTOMER
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
Синтаксис отмены привилегии EXECUTE к хранимой процедуре:
REVOKE EXECUTE
ON PROCEDURE <имя-процедуры>
FROM <получатель> [, <получатель> [, ...]]
| [TRIGGER <имя-триггера> [, <имя-триггера> [,...]]
[PROCEDURE <имя-процедуры> [, <имя-процедуры> [, ...]]
[VIEW <имя-просмотра> [, VIEW <имя-просмотра> [, ...]];
Следующий оператор удаляет привилегию EXECUTE у пользователя HPOTTER к процедуре COUNT_CHICKENS:
REVOKE EXECUTE ON PROCEDURE COUNT_CHICKENS FROM HPOTTER;
Отмена привилегий у нескольких пользователей
Теперь мы рассмотрим как получатели привилегий, указанные в предложении FROM оператора REVOKE, могут быть объединены для отмены привилегий.
Список пользователей
Используйте разделенный запятыми список пользователей для отмены привилегий у множества пользователей в одном операторе. Следующий оператор удаляет привилегии INSERT и UPDATE к таблице DEPARTMENTS у троих пользователей за один раз:
REVOKE INSERT, UPDATE
ON DEPARTMENTS
FROM MAGPIE, BRUNHILDE, KILROY;
Роль
Отмена привилегий, предоставленных роли, отменяет эти привилегии у всех пользователей, имеющих эту роль в качестве привилегий:
REVOKE UPDATE
ON DEPARTMENT
FROM CARTEBLANCHE;
Теперь пользователи, которым была назначена роль CARTEBLANCHE, больше не имеют привилегии UPDATE к таблице DEPARTMENT, но у них остаются другие привилегии (SELECT, INSERT, DELETE, REFERENCES, EXECUTE), которые они могли наследовать от
CARTEBLANCHE.
Вы можете использовать один оператор для отмены одних и тех же привилегий у одной или более ролей:
REVOKE DELETE, INSERT
ON DEPARTMENT
FROM CARTEBLANCHE, MAITRE_D;
Роль пользователя
Отмена назначенных роли пользователей отменяет у этих пользователей все полномочия, которые они получили с этой ролью. Используйте REVOKE для удаления роли, которую вы назначали пользователям. Следующий оператор отменяет роль
CARTEBLANCHE у пользователя KILROY:
REVOKE CARTEBLANCHE FROM KILROY;
KILROY больше не имеет привилегий доступа, полученных как результат его членства в этой роли. Однако это не оказывает влияния на других пользователей, которые получили эти привилегии через членство в данной роли.
Объекты
Для отмены привилегий у одной или более процедур, триггеров или просмотров включите соответствующее ключевое слово (PROCEDURE, TRIGGER, VIEW) перед именем объекта.
Вы можете отменить одну и ту же привилегию у различных типов объектов, задав разделенный запятыми список объектов каждого типа. В этом случае просто начните каждый список с ключевого слова типа объекта.
Следующий оператор удаляет привилегии INSERT и UPDATE К таблице CUSTOMER для двух процедур и триггера:
REVOKE INSERT, UPDATE
ON CUSTOMER
FROM PROCEDURE COUNT_CHICKENS, ABANDON_OLD
TRIGGER AI_SALES ;
Пользователь PUBLIC
Для отмены привилегий, которые все пользователи получили как пользователь PUBLIC, просто трактуйте PUBLIC, как и любого другого пользователя. Например, следующий оператор отменяет полномочия INSERT и DELETE К таблице DEPARTMENT у всех пользователей:
REVOKE SELECT, INSERT, UPDATE
ON DEPARTMENT
FROM PUBLIC;
После выполнения этого оператора привилегии INSERT и DELETE К таблице DEPARTMENT сохраняются у владельца этой таблицы и у пользователя SYSDBA, равно как и у имевших эти привилегии хранимых процедур, просмотров и триггеров. Отмена привилегий у PUBLIC также не убирает привилегии у пользователей, которые имеют их как собственные права.
Отмена права предоставлять привилегии
Для отмены права у пользователя предоставлять конкретную привилегию, но сохранить у него эту привилегию, используйте REVOKE GRANT OPTION:
REVOKE GRANT OPTION
FOR <привилегия> [, <привилегия> [,...]]
ON <таблица> | <объект>
FROM <пользователь> ;
Например, следующий оператор отменяет право предоставлять привилегию SELECT к таблице DEPARTMENT у пользователя HPOTTER и сохраняет у него привилегию SELECT:
REVOKE GRANT OPTION
FOR SELECT
ON DEPARTMENT
FROM HPOTTER;
Выполнение этого оператора приведет к каскадным отменам у всех других пользователей, которые получили право предоставлять эту привилегию от HPOTTER.
Скрипты безопасности
Если вы до сих пор задержались на этой главе, нет сомнений, что вы пришли к заключению, что реализация привилегий SQL требует набора большого объема текста. Что ж, вы правы. В действительности мы не используем интерактивные методы для выполнения этой работы. Мы пишем скрипты - или, иначе, мы пишем хранимые процедуры, которые пишут для нас скрипты.
Как правило, если мы имеем хорошо работающую схему привилегий, мы можем генерировать множество скриптов, которые формируют роли и общие полномочия. Обычно вручную написанный скрипт предназначен для полномочий EXECUTE, поскольку для этого довольно сложно создать нужную формулу.
С появлением в Firebird 1.5 оператора EXECUTE PROCEDURE, который позволяет нам обойти невозможность в Firebird выполнения операторов DDL в PSQL, мы можем выполнить групповую загрузку полномочий прямо в базу данных из хранимой процедуры. Пример подобной процедуры представлен в листинге 35.2 далее в этой главе.
Существует множество инструментов с графическим интерфейсом для тех, кто их любит. У большинства есть средства, автоматически формирующие скрипты безопасности; некоторые создают и устанавливают полномочия только для вас.
Создание скрипта
Автор предпочитает генерировать скрипт безопасности. Он может быть протестирован и аннотирован, он является документом, нужным для контроля качества, и дающим основу для распространения у пользователей. Пример подобного скрипта представлен в листинге 35.1.
Для скрипта мы можем использовать внешний файл, в который помещен скрипт - инструкции и примеры см. в главе 16, примеры также содержатся в главе 30. Однако процедура PERMSCRIPT, описанная здесь, разработана для выполнения в isql и для передачи ее выхода в текстовый файл.
Листинг 35.1. Процедура для генерации скрипта полномочий
/* (с) Helen Borrie 2004, free for use and inodxfication
under the Initial Developer's Public License */
SET TERM ^
CREATE PROCEDURE PERMSCRIPT(
CMD VARCHAR (6) ,/* введите 'G' or 'R' */
PRIV CHAR (10) , /* привилегия или 'ALL' или 'ANY' */
USR VARCHAR(31), /* имя пользователя */
ROLENAME VARCHAR(31), /* роль, существующая или нет */
GRANTOPT SMALLINT,
/* 1 для 'WITH GRANT[ADMIN] OPTION' */
CREATE ROLE SMALLINT) /* 1 для создания новой роли ROLENAME */
RETURNS (PERM VARCHAR(80)) /* теоретический оператор полномочия */
AS
DECLARE VARIABLE RELNAME VARCHAR (31); /* для имени таблицы или просмотра */
DECLARE VARIABLE STRING VARCHAR(80) = ''; /* используется в процедуре */
DECLARE VARIABLE STUB VARCHAR(60) = ''; /* используется в процедуре */
DECLARE VARIABLE VUSR VARCHAR(31) ; /* имя пользователя для 'TO' или 'FROM' */
DECLARE VARIABLE COMMENTS CHAR(20) = '/* */';
BEGIN
/* Необходимо для некоторых редакторов пользовательского интерфейса */
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!
Похожие книги на "Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ"
Книги похожие на "Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ" читать онлайн или скачать бесплатно полные версии.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Отзывы о "Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ"
Отзывы читателей о книге "Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ", комментарии и мнения людей о произведении.