Защита информации в базах данных
Два подхода Два подхода к вопросу обеспечения безопасности данных: избирательный подход обязательный подход. В обоих подходах «объектом данных», для которых должна быть создана система безопасности, может быть как вся база данных целиком, так и любой объект внутри базы данных.
Избирательный подход В случае избирательного управления некоторый пользователь обладает различными правами (привилегиями или полномочиями) при работе с данными объектами.
Обязательный подход В случае обязательного управления, наоборот, каждому объекту данных присваивается некоторый классификационный уровень, а каждый пользователь обладает некоторым уровнем допуска.
реализация избирательного принципа Для реализации избирательного принципа предусмотрены следующие методы. В базу данных вводится новый тип объектов БД это пользователи. Каждому пользователю в БД присваивается уникальный идентификатор. Для дополнительной защиты каждый пользователь кроме уникального идентификатора снабжается уникальным паролем Пользователи могут быть объединены в специальные группы пользователей Один пользователь может входить в несколько групп. В стандарте вводится понятие группы PUBLIC, для которой должен быть определен минимальный стандартный набор прав.
Привелегии Привилегии или полномочия пользователей или групп это набор действий (операций), которые они могут выполнять над объектами БД.
Роли Роль это поименованный набор полномочий. Существует ряд стандартных ролей, которые определены в момент установки сервера баз данных. Имеется возможность создавать новые роли, группируя в них произвольные полномочия. Введение ролей не связано с конкретными пользователями, поэтому роли могут быть определены и сконфигурированы до того, как определены пользователи системы. Пользователю может быть назначена одна или несколько ролей.
Объекты БД, которые подлежат защите Объектами БД, которые подлежат защите, являются все объекты, хранимые в БД: таблицы, представления, хранимые процедуры, триггеры. Для каждого типа объектов есть свои действия, поэтому для каждого типа объектов могут быть определены разные права доступа.
Необходимо поддерживать два фундаментальных принципа: проверку полномочий и проверку подлинности (аутентификацию).
Проверка полномочий основана на том, что каждому пользователю или процессу информационной системы соответствует набор действий, которые он может выполнять по отношению к определенным объектам. Проверка подлинности означает достоверное подтверждение того, что пользователь или процесс, пытающийся выполнить санкционированное действие, действительно тот, за кого себя выдает.
СУБД в своих системных каталогах хранит как описание самих пользователей, так и описание их привилегий по отношению ко всем объектам.
схема предоставления полномочий Каждый объект в БД имеет владельца - пользователя, который создал данный объект. Владелец объекта обладает всеми правами- полномочиями на данный объект, в том числе он имеет право предоставлять другим пользователям полномочия по работе с данным объектом или забирать у пользователей ранее предоставленные полномочия.
Cоздание пользователя CREATE USER IDENTIFIED BY | EXTERNALLY DEFAULT TABLESPACE TEMPORARY TABLESPACE QUOTA { K | M ON tablespace } | UNLIMITED
SQL В стандарте SQL определены два оператора: GRANT и REVOKE соответственно предоставления и отмены привилегий.
Оператор предоставления привилегий GRANT { | ALL PRIVILEGES } ОN ТО { | PUBLIC } [WITH GRANT OPTION ]
Параметры Параметр ALL PRIVILEGES указывает, что разрешены все действия из допустимых для объектов данного типа. задает имя конкретного объекта: таблицы, представления, хранимой процедуры, триггера. или PUBLIC определяет, кому предоставляются данные привилегии. Параметр WITH GRANT OPTION является необязательным и определяет режим, при котором передаются не только права на указанные действия» но и право передавать эти права другим пользователям.
Пример User1 создал объект Таb, он является владельцем этого объекта и может передать права на работу с эти объектом другим пользователям. Пользователь user2 является оператором, который должен вводить данные в Таb(например, таблицу новых заказов) Пользователь user3 например, менеджером отдела, который должен регулярно про- сматривать введенные данные.
Действия для таблиц Для объекта типа таблица полным допустимым перечнем действий является набор из четырех операций: SELECT, INSERT. DELETE, UPDATE. При этом операция обновление может быть ограничена несколькими столбцами.
Оператор GRANT для таблицы GRANT { [SELECT] [,INSERT][,DELETE] [,UPDATE ( ] } ON ТО { | PUBLIC } [WITH GRANT OPTION ]
Раздача прав GRANT INSERT ON Tab TO user2 GRANT SELECT ON Tab TO user3
Например, менеджер может изменить цену товара в нашей таблице GRANT SELECT, UPDATE (COST) ON Tab TO user3
Отмена привелегий Для отмены ранее назначенных привилегий в стандарте SQL определен оператор REVOKE.
Параметры Параметры CASCADE или RESTRICT определяют, каким образом должна производиться отмена привилегий. Параметр CASCADE отменяет привилегии не только пользователя, который непосредственно упоминался в операторе GRANT при предоставлении ему привилегий, но и всем пользователям, которым этот пользователь присвоил привилегии, воспользовавшись парамегром WITH GRANT OPTION Параметр RESTRICT ограничивает отмену привилегий только пользователю, непосредственно упомянутому в операторе REVOKE.
Пример Отнимаем права на вставку данных REVOKE INSERT ON Tab TO user2, user4 CASCADE
Роли Создание роли CREATE ROLE Добавление привилегий в роль GRANT TO Выдача роли пользователю GRANT TO
Удаление роли DROP ROLE Удаление привилегий из роли REVOKE FROM Удаление роли у пользователя REVOKE FROM
PL/SQL PL/SQL позволяет вам вставлять, удалять, обновлять и извлекать данные ORACLE управлять потоком предложений для обработки этих данных. объявлять константы и переменные определять подпрограммы (процедуры и функции) перехватывать ошибки времени выполнения. Таким образом, PL/SQL комбинирует мощь манипулирования данными SQL с мощью обработки данных процедурных языков.
БЛОК PL/SQL блок PL/SQL имеет три части: декларативную часть, исполняемую часть часть обработки исключений. (ИСКЛЮЧЕНИЕМ в PL/SQL называется условие, вызывающее предупреждение или ошибку.) Исполняемая часть обязательна; две остальные части блока могут отсутствовать.
DECLARE Объявления BEGIN Выполняемые предложения EXCEPTION Обработчики исключений END;
программа обработки заказа на теннисные ракетки (из примера) DECLARE num_in_stock number(5); BEGIN SELECT quantity INTO qty_on_hand FROM inventory WHERE product = 'TENNIS RACKET' ; -- проверить количество IF qty_on_hand > 0 THEN UPDATE inventory SET quantity = quantity - 1 WHERE product = 'TENNIS RACKET'; INSERT INTO purcase_record VALUES ( 'Tennis racket purchased.', SYSDATE); ELSE INSERT INTO purcase_record VALUES ('Out of tennis rackets.', SYSDATE); END IF; COMMIT; END;
Объявления переменных Объявляемая переменная может иметь любой тип данных, присущий SQL, такой как NUMBER, CHAR и DATE Присваивания переменным Вы можете присваивать переменным значения двумя способами. Первый способ использует оператор присваивания := tax := price * tax_rate;
Присваивание значений Второй способ присвоить значение переменной - это извлечь в нее значение из базы данных посредством фразы INTO предложения SELECT SELECT sal * 0.10 INTO bonus FROM emp WHERE empno = emp_id;
Управляющие структуры Условное управление IF-THEN-ELSE IF acct_balance >= debit_amt THEN UPDATE accounts SET bal = bal - debit_amt WHERE account_id = acct; ELSE INSERT INTO temp VALUES (acct, acct_balance, 'Insufficient funds'); -- вставить счет, текущий баланс и сообщение END IF;
Итеративное управление LOOP -- поместите сюда последовательность предложений END LOOP;