- •Содержание
- •1 Введение
- •1.1 Краткие сведения об объекте автоматизации
- •1.3 Задачи crm
- •1.4 Основные функции и характеристики системы
- •1.5 Обзор существующих crm систем
- •1.5.1 Компас: Маркетинг и Менеджмент.
- •1.7 1С Предприятие 7.7
- •1.7.1 Встроенный язык системы
- •1.7.2 Язык Запросов
- •1.8 Субд Oracle Enterprise Edition 9.2.0.1
- •1.9 Средство проектирования баз данных PowerDesigner 11
- •1.10.1 Doa компонент доступа к Oracle.
- •1.11 Выбор генератора отчетов
- •1.11.1 Вывод
- •2 Специальная часть
- •2.1 Архитектура автоматизированной системы
- •2.2 Выбор средства реализации уровня бд
- •2.3 Реализация уровня сервера (бд)
- •2.3.1 Основные понятия
- •2.3.2 Особенности реализации
- •2.3.3.1 Пример fgac в Oracle
- •2.3.2.2 Другие подходы реализации fgac
- •2.4 Проектирование базы данных
- •2.4.1 Концептуальная модель данных
- •2.4.2 Физическая модель данных
- •2.6.2 Технологии com и ole
- •2.6.3 Особенности использования Delphi и 1c
- •2.6.3.1 Функция, осуществляющая создание и инициализацию экземпляр 1с
- •2.6.3.2 Описание методов экземпляра 1с
- •Детали реализации импорта
- •2.6.5 Код процедуры импорта
- •2.7 Технические характеристики автоматизированной системы
- •2.7.1 Клиент
- •2.7.2 Сервер
- •2.8 Функции программы и интерфейс пользователя
- •2.8.1 Общий вид программы при запуске
- •2.8.2 Общие особенности программы
- •2.8.3 Вид основных справочников
- •2.9 Декомпозиция и анализ бизнес-процессов
- •3. Тестирование
- •3.1. Справочник “Клиент”
- •3.2. Напоминания
- •3.3. Отчеты
- •3.3.1. Понятие abc анализа
- •4.2. Построение ленточного графика этапов проектирования (График Ганта)
- •4.3. Материальные затраты
- •4.3.1. Затраты на оплату труда
- •4.3.2. Дополнительная заработная плата
- •4.3.3. Единый социальный налог
- •4.3.4. Затраты на электроэнергию
- •4.3.5. Затраты на содержание и эксплуатацию оборудования.
- •4.3.6. Амортизационные отчисления
- •4.3.7. Накладные расходы
- •4.4 Оценка эффекта от внедрения ас
- •5. Безопасность жизнедеятельности и охрана труда
- •5.1. Характеристика объекта
- •5.1.1. Характеристика оборудования
- •5.2. Характеристика опасных и вредных факторов
- •5.3. Нормализация санитарно-гигиенических условий труда
- •5.3.1. Микроклимат производственных помещений
- •5.3.2 Воздухообмен производственных помещений
- •5.3.3. Освещение производственных помещений
- •5.3.4. Шум рабочего помещения
- •5.4. Производственные излучения
- •5.5. Электробезопасность
- •5.6. Пожарная безопасность
- •Вывод: Условия пожарной безопасности в аудитории чп “Паздникова” обеспечены для предотвращения очагов пожаров.
- •5.7. Обеспечение безопасности в условиях чс
- •5.7.1. Эвакуация
- •5.8. Вывод по разделу
- •6. Заключение
- •Список используемой литературы
- •Приложение 1 “Принятые термины и обозначения”
2.3.2.2 Другие подходы реализации fgac
Подход с использованием нескольких представлений достаточно типичен, хотя и имеет преимущества независимости от СУБД. Разработчики приложений создают несколько учетных записей в базе данных, например EMPLOYEE, MANAGER, HR_REP, и устанавливают в каждой из соответствующих схем полный набор представлений, выбирающих только необходимые данные. Для рассматриваемого примера в каждой схеме создается отдельное представление ЕМР со специализированным условием выбора данных для соответствующей группы пользователей.
Для управления тем, что конечные пользователи могут просматривать, создавать, изменять и удалять, придется создавать до четырех различных представлений для таблицы ЕМР - для операторов SELECT, INSERT, UPDATE и DELETE. Это быстро приводит к запредельному увеличению количества объектов базы данных — каждый раз при добавлении новой группы пользователей придется создавать и поддерживать новый набор представлений.
Если правила защиты изменятся (например, если необходимо разрешить руководителям просматривать записи не только непосредственных подчиненных, но и подчиненных следующего уровня), придется пересоздать представление в базе данных, делая недействительными все объекты, которые на него ссылаются. Такой подход приводит не только к увеличению количества представлений в базе данных, но и требует, чтобы пользователи регистрировались от имени нескольких совместно используемых учетных
записей, что осложняет контроль работы пользователей. Кроме того, этот подход требует дублирования значительного объема кода в базе данных. При наличии хранимой процедуры, работающей с таблицей ЕМР, придется устанавливать ее в каждой из задействованных схем. Это относится и ко многим другим объектам (триггерам, функциям, пакетам и т.д.). Теперь при внесении изменений в программное обеспечение придется каждый раз изменять N схем, чтобы все пользователи выполняли один и тот же код.
Еще один подход связан с использованием, кроме представлений, триггеров базы данных. Вместо создания отдельных представлений для операторов SELECT, INSERT, UPDATE и DELETE, для построчного просмотра выполняемых пользователем изменений используется триггер, принимающий или отвергающий эти изменения. Эта реализация не только приводит к созданию большого количества дополнительных представлений, но и влечет расходы ресурсов на поддержку срабатывания триггера (иногда весьма
сложного) для каждой изменяемой строки.
Наконец, можно всю защиту реализовать в приложении, будь то клиентское приложение в случае архитектуры клиент-сервер или сервер приложений. Приложение будет учитывать, кто к нему обращается, и выполнять соответствующий запрос. Приложение, по сути, реализует собственный механизм тщательного контроля доступа. Серьезным недостатком такого подхода (и вообще любого подхода, использующего для доступа к данным специфические средства приложения) является то, что данные в базе могут использоваться только соответствующим приложением. Нельзя использовать никакие средства создания запросов, средства генерации отчетов и т.п., поскольку данные не защищены, если доступ к ним идет не через приложение. Когда защита встроена в приложение, усложняется развитие приложения и добавление новых интерфейсов, т.е. снижается полезность данных.
2.3.3.3 Реализация FGAC
Реализовать FGAC решено с помощью Oracle пакета DBMS_RLS. Этот пакет обеспечивает функциональный интерфейс для добавления, удаления, изменения, включения и отключения правил защиты. Соответствующие подпрограммы можно вызвать из любого языка программирования или среды, из которых можно подключиться к СУБД Oracle. Его самое главное достоинство простота в использовании и минимум кода. Для реализации требуется только одна функция.
create or replace function security_policy_function(p_schema in varchar2,
p_object in varchar2)
return varchar2
as
begin
if (user = p_schema) then
return '';
else
return 'owner = USER';
end if;
end;
Эта функция, реализующей правила защиты, всегда возвращает значение типа VARCHAR2. Возвращаемое значение представляет собой условие, которое будет добавлено к запросу. Фактически это условие будет добавляться к таблице или представлению, к которым применяется это правило защиты, с помощью подставляемого представления (inline view):
3anpoc: SELECT * FROM T
Будет переписан как:
SELECT * FROM (SELECT * FROM T WHERE owner = USER)
или:
SELECT * FROM (SELECT * FROM T)
Кроме того, все функции, реализующие правила защиты, должны принимать два параметра в режиме IN: имя схемы, которой принадлежит объект, и имя объекта, к которому применяется функция. Их значения можно при необходимости использовать в функции, реализующей правила защиты.
Итак, в нашем примере условие owner = USER будет динамически добавляться ко всем запросам к таблице, с которой связана эта функция, эффективно ограничивая множество строк, доступных пользователю. Пустое условие будет возвращаться только в том случае, если текущий зарегистрированный пользователь является владельцем таблицы. Вернуть пустое условие — то же самое, что вернуть условие 1=1 или True. Возврат значения Null равносилен возвращению пустого условия. В представленном выше примере вместо пустой строки можно было с тем же результатом возвращать Null.
Чтобы связать функцию с таблицей, используется рассматриваемая далее PL/SQL- процедура DBMS_RLS.ADD_POLICY. В нашем примере имеется следующая таблица, а сеанс выполняется от имени пользователя CRM:
Alter table crm.contact add column OWNER varchar2(30) default USER
Теперь привяжем написанную ранее функцию защиты к этой таблице с помощью следующего обращения к пакету DBMS_RLS:
begin
dbms_rls.add_policy
(object_schema => 'CRM',
object_name => 'contac',
policy_name => 'CRM_POLICY',
function_schema => 'CRM',
policy_function => 'security_policy_function',
statement_types => 'select, insert, update, delete',
update_check => TRUE,
enable => TRUE
);
end;
