Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
dip / диплом1!!! / priklad1.docx
Скачиваний:
76
Добавлен:
19.02.2016
Размер:
3.82 Mб
Скачать

Вихідний код програмного модуля категоризації інцидентів інформаційної безпеки

Справочник «КласифікаторІнцидентів»:

Форма елементу:

Процедура ПередЗаписью(Отказ)

Если Не ЗначениеЗаполнено(Наименование) Тогда

Отказ = Истина;

Сообщить("Заповніть назву Класифікатора інцидентів");

КонецЕсли;

КонецПроцедуры

Процедура НаименованиеПриИзменении(Элемент)

Наименование = СокрЛП(Наименование);

КонецПроцедуры

Справочник «КлючовіСлова»:

Форма елементу:

Процедура ПередЗаписью(Отказ)

Если Не ЗначениеЗаполнено(Наименование) Тогда

Отказ = Истина;

Сообщить("Заповніть назву ключового слова");

КонецЕсли;

КонецПроцедуры

Процедура НаименованиеПриИзменении(Элемент)

Наименование = СокрЛП(Наименование);

КонецПроцедуры

Справочник «НастройкиПідключенняДоПошти»:

Форма елементу:

Процедура ДействияФормыПроверитьПодключение(Кнопка)

АутентификацияPOP3 = ?(АутентификацияPOP3 = "Обычная" ИЛИ АутентификацияPOP3 = "CramMD5" ИЛИ АутентификацияPOP3 = "APOP", АутентификацияPOP3, "Обычная");

Почта = Новый ИнтернетПочта;

Профиль = Новый ИнтернетПочтовыйПрофиль;

Профиль.АдресСервераPOP3 = СокрЛП(АдресСервераPOP3);

Профиль.АутентификацияPOP3 = СпособPOP3Аутентификации[АутентификацияPOP3];

Профиль.ПортPOP3 = ПортPOP3;

Профиль.Пользователь = СокрЛП(Пользователь);

Профиль.Пароль = Пароль;

Профиль.ВремяОжидания = ВремяОжидания;

Попытка

Почта.Подключиться(Профиль);

Сообщить("Успешно подключено!");

Почта.Отключиться();

Исключение

Сообщить("Не удалось подключиться к почте! Ошибка: " + ОписаниеОшибки());

КонецПопытки;

КонецПроцедуры

Процедура АутентификацияPOP3НачалоВыбора(Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

Спис = Новый СписокЗначений;

Спис.Добавить("Обычная");

Спис.Добавить("CramMD5");

Спис.Добавить("APOP");

Элемент.Значение = Спис.ВыбратьЭлемент("Аутентификация POP");

КонецПроцедуры

Справочник «Заявники»:

Форма елементу:

Процедура ПередЗаписью(Отказ)

Если Не ЗначениеЗаполнено(Наименование) Тогда

Отказ = Истина;

Сообщить("Заповніть Ім'я завника");

КонецЕсли;

Если Не ЗначениеЗаполнено(ТипЗаявника) Тогда

Отказ = Истина;

Сообщить("Заповніть Тип заявника");

КонецЕсли;

КонецПроцедуры

Документ «РеєстраціяІнциденту»:

Модуль об’єкту:

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

Если Не Отказ Тогда

НаборЗаписей = РегистрыНакопления.Інциденти.СоздатьНаборЗаписей();

НаборЗаписей.Отбор.Регистратор.ВидСравнения = ВидСравнения.Равно;

НаборЗаписей.Отбор.Регистратор.Значение = Ссылка;

НаборЗаписей.Отбор.Регистратор.Использование = Истина;

НаборЗаписей.Прочитать();

НаборЗаписей.Очистить();

Движение = НаборЗаписей.Добавить();

Движение.Период = Дата;

Движение.Регистратор = Ссылка;

Движение.Активность = Истина;

Движение.ІдентифікаторІнцидента = ІдентифікаторІнцидента;

Движение.Заявник = Заявник;

Движение.ОписІнцидента = ОписІнцидента;

Движение.Статус = Статус;

Движение.Кількість = 1;

НаборЗаписей.Записать();

КонецЕсли;

КонецПроцедуры

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Если Не ЗначениеЗаполнено(Статус) Тогда

Отказ = Истина;

Сообщить("Заповніть Статус інцидента");

КонецЕсли;

Если Не ЗначениеЗаполнено(Заявник) Тогда

Отказ = Истина;

Сообщить("Заповніть Заявника інцидента");

КонецЕсли;

Если Не ЗначениеЗаполнено(ЕлетроннаПошта) Тогда

Отказ = Истина;

Сообщить("Заповніть Електронну пошту заявника інцидента");

КонецЕсли;

Если Не ЗначениеЗаполнено(ІдентифікаторІнцидента) Тогда

Отказ = Истина;

Сообщить("Заповніть Ідентифікатор інцидента");

КонецЕсли;

Если Не ЗначениеЗаполнено(ОписІнцидента) Тогда

Отказ = Истина;

Сообщить("Заповніть Опис інцидента");

КонецЕсли;

КонецПроцедуры

Обработка «СозданиеАвтоматическихЗаявок»:

Форма елементу:

Процедура КнопкаВыполнитьНажатие(Кнопка)

Если Не ЗначениеЗаполнено(ПапкаЗаявок) Тогда

Возврат;

КонецЕсли;

Если Не ЗначениеЗаполнено(ШаблонИменФайла) Тогда

ШаблонИменФайла = "IncudentForNauSert";

КонецЕсли;

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

КлючовіСлова.Ссылка,

КлючовіСлова.Наименование

ИЗ

Справочник.КлючовіСлова КАК КлючовіСлова";

Тз = Запрос.Выполнить().Выгрузить();

Инд = 0;

Инд2 = 0;

Пока Инд < Количество Цикл

ОбработкаПрерыванияПользователя();

Состояние(Инд);

ТабДокумент = Новый ТабличныйДокумент;

Дата = ТабДокумент.Область("R1C1");

Заявник = ТабДокумент.Область("R2C2");

ЕлетроннаПошта = ТабДокумент.Область("R3C3");

ОписІнцидента = ТабДокумент.Область("R4C4");

Дата.Текст = Формат(ТекущаяДата(), "ДФ='yyyy_MM_dd HH_mm_ss'");

Заявник.Текст = СокрЛП("ТестовыйЗаявник");

ЕлетроннаПошта.Текст = СокрЛП("test@ukr.net");

ОписІнцидента.Текст = СокрЛП("Инцедент:" + Тз[Инд2].Наименование);

ИмяФайла = "" + ПапкаЗаявок + "\" + ШаблонИменФайла + " " + Инд + " " + Заявник.Текст + " від " + Дата.Текст + ".mxl";

ТабДокумент.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.MXL);

Инд = Инд + 1;

Инд2 = Инд2 + 1;

Если Инд2 > (Тз.Количество() - 1) Тогда

Инд2 = 0;

КонецЕсли;

КонецЦикла;

КонецПроцедуры

Процедура ПапкаЗаявокНачалоВыбора(Элемент, СтандартнаяОбработка)

Режим = РежимДиалогаВыбораФайла.ВыборКаталога;

ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);

Если ДиалогОткрытияФайла.Выбрать() Тогда

ПапкаЗаявок = ДиалогОткрытияФайла.Каталог;

КонецЕсли;

КонецПроцедуры

Процедура ПапкаЗаявокОчистка(Элемент, СтандартнаяОбработка)

ПапкаЗаявок = "";

КонецПроцедуры

Обработка «ЗагрузкаАвтоматомЗаявокИзПапки»:

Форма елементу:

Процедура КнопкаВыполнитьНажатие(Кнопка)

Если Не ЗначениеЗаполнено(ПапкаЗаявок) Тогда

Возврат;

КонецЕсли;

НайденныеФайлы = НайтиФайлы(ПапкаЗаявок, "*.mxl");

Инд = 0;

Пока Инд < НайденныеФайлы.Количество() Цикл

Файл = НайденныеФайлы[Инд];

ОбработкаПрерыванияПользователя();

Сообщить(Файл.ПолноеИмя);

ТабДокумент = Новый ТабличныйДокумент;

ТабДокумент.Прочитать(Файл.ПолноеИмя);

Дата = СокрЛП(ТабДокумент.Область("R1C1").Текст);

Дата = СтрЗаменить(Дата,"_", "");

Дата = СтрЗаменить(Дата," ", "");

Заявник = СокрЛП(ТабДокумент.Область("R2C2").Текст);

ЕлетроннаПошта = СокрЛП(ТабДокумент.Область("R3C3").Текст);

ОписІнцидента = СокрЛП(ТабДокумент.Область("R4C4").Текст);

Попытка

Дата = Дата(Дата);

Исключение

Дата = "";

КонецПопытки;

Если Не ЗначениеЗаполнено(Дата) Или

Не ЗначениеЗаполнено(Заявник) Или

Не ЗначениеЗаполнено(ЕлетроннаПошта) Или

Не ЗначениеЗаполнено(ОписІнцидента) Тогда

Сообщить("В файле " + Файл.ПолноеИмя + " что-то не то!");

Инд = Инд + 1;

Продолжить;

КонецЕсли;

НовыйДок = Документы.РеєстраціяІнцидентів.СоздатьДокумент();

НовыйДок.Дата = Дата;

НовыйДок.ЕлетроннаПошта = ЕлетроннаПошта;

НовыйДок.Заявник = НайтиЗаявителя(Заявник, ЕлетроннаПошта);

НовыйДок.Коментарій = "Загружено " + ТекущаяДата();

НовыйДок.ОписІнцидента = ОписІнцидента;

НовыйДок.ІдентифікаторІнцидента = ПоискКласификатора(ОписІнцидента);

НовыйДок.Статус = Перечисления.СтатусиІнцедентів.НеОпрацьовано;

НовыйДок.Записать();

Попытка

НовыйДок.Записать(РежимЗаписиДокумента.Проведение);

Исключение

КонецПопытки;

УдалитьФайлы(Файл.ПолноеИмя);

Инд = Инд + 1;

КонецЦикла;

КонецПроцедуры

Функция НайтиЗаявителя(Заявник, ЕлетроннаПошта)

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

Заявники.Ссылка

ИЗ

Справочник.Заявники КАК Заявники

ГДЕ

Заявники.Наименование = &Наименование";

Запрос.УстановитьПараметр("Наименование", СокрЛП(Заявник));

Выборка = Запрос.Выполнить().Выбрать();

Если Выборка.Следующий() Тогда

Заявитель = Выборка.Ссылка;

Иначе

НовыйСпр = Справочники.Заявники.СоздатьЭлемент();

НовыйСпр.Наименование = СокрЛП(Заявник);

НовыйСпр.ЕлетроннаПошта = СокрЛП(ЕлетроннаПошта);

НовыйСпр.ТипЗаявника = Перечисления.ТипиЗаявників.ФізЛице;

НовыйСпр.Записать();

Заявитель = НовыйСпр.Ссылка;

КонецЕсли;

Возврат Заявитель;

КонецФункции

Функция ПоискКласификатора(ОписІнцидента)

Результат = Справочники.КласифікаторІнцидентів.НеОтсортовані;

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

КласифікаторІнцидентівКлючовіСлова.Ссылка КАК Ссылка,

КласифікаторІнцидентівКлючовіСлова.КлючовеСлово КАК КлючовеСлово,

КласифікаторІнцидентівКлючовіСлова.Ссылка.Код КАК Код

ИЗ

Справочник.КласифікаторІнцидентів.КлючовіСлова КАК КласифікаторІнцидентівКлючовіСлова

ГДЕ

КласифікаторІнцидентівКлючовіСлова.Ссылка.ПометкаУдаления = ЛОЖЬ

УПОРЯДОЧИТЬ ПО

Код,

КлючовеСлово";

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл

Если Найти(ОписІнцидента, Выборка.КлючовеСлово) > 0 Тогда

Результат = Выборка.Ссылка;

Прервать;

КонецЕсли;

КонецЦикла;

Возврат Результат;

КонецФункции

Процедура ПапкаЗаявокНачалоВыбора(Элемент, СтандартнаяОбработка)

Режим = РежимДиалогаВыбораФайла.ВыборКаталога;

ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);

Если ДиалогОткрытияФайла.Выбрать() Тогда

ПапкаЗаявок = ДиалогОткрытияФайла.Каталог;

КонецЕсли;

КонецПроцедуры

Процедура ПапкаЗаявокОчистка(Элемент, СтандартнаяОбработка)

ПапкаЗаявок = "";

КонецПроцедуры

Обработка «ЗагрузитиЗапитиЗПошти»:

Форма елементу:

Процедура КнопкаВыполнитьНажатие(Кнопка)

Если Не ЗначениеЗаполнено(ПапкаЗаявок) Тогда

Возврат;

КонецЕсли;

Если Не ЗначениеЗаполнено(НастройкаПідключенняДоПочти) Тогда

Возврат;

КонецЕсли;

Почта = Новый ИнтернетПочта;

Профиль = Новый ИнтернетПочтовыйПрофиль;

ЗаполнитьЗначенияСвойств(Профиль, НастройкаПідключенняДоПочти);

Профиль.АутентификацияPOP3 = СпособPOP3Аутентификации[НастройкаПідключенняДоПочти.АутентификацияPOP3];

Попытка

Почта.Подключиться(Профиль);

МассивПисем = Почта.Выбрать(Ложь);

МассивПисемДляУдаления = Новый Массив;

Для Каждого Письмо из МассивПисем Цикл

Если Лев(Письмо.Тема,11) <> "Інцидент ІБ" Тогда

Продолжить;

КонецЕсли;

Сообщить("Получено письмо с идентификатором: " + Письмо.Идентификатор[0]);

Для Каждого Вложение из Письмо.Вложения Цикл

Если Найти(Вложение.ИмяФайла, ".mxl") > 0 Тогда

Вложение.Данные.Записать(ПапкаЗаявок + "\" + Вложение.ИмяФайла);

КонецЕсли;

КонецЦикла;

МассивПисемДляУдаления.Добавить(Письмо.Идентификатор[0]);

КонецЦикла;

Почта.УдалитьСообщения(МассивПисемДляУдаления);

Почта.Отключиться();

Исключение

Сообщить("Ошибка - " + ОписаниеОшибки());

КонецПопытки;

КонецПроцедуры

Процедура ПапкаЗаявокНачалоВыбора(Элемент, СтандартнаяОбработка)

Режим = РежимДиалогаВыбораФайла.ВыборКаталога;

ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);

Если ДиалогОткрытияФайла.Выбрать() Тогда

ПапкаЗаявок = ДиалогОткрытияФайла.Каталог;

КонецЕсли;

КонецПроцедуры

Процедура ПапкаЗаявокОчистка(Элемент, СтандартнаяОбработка)

ПапкаЗаявок = "";

КонецПроцедуры"

Запит в Отчёте «Звіт»:

"ВЫБРАТЬ

ІнцидентиОбороты.ІдентифікаторІнцидента КАК ІдентифікаторІнцидента,

ІнцидентиОбороты.ОписІнцидента КАК ОписІнцидента,

ІнцидентиОбороты.Заявник КАК Заявник,

ІнцидентиОбороты.Статус КАК Статус,

СУММА(ІнцидентиОбороты.КількістьОборот) КАК Кількість

{ВЫБРАТЬ

ІдентифікаторІнцидента.*,

ОписІнцидента,

Заявник.*,

Статус.*,

Кількість}

ИЗ

РегистрНакопления.Інциденти.Обороты(&НачалоПериода, &КонецПериода, , ) КАК

ІнцидентиОбороты

{ГДЕ

ІнцидентиОбороты.ІдентифікаторІнцидента.*,

ІнцидентиОбороты.ОписІнцидента,

ІнцидентиОбороты.Заявник.*,

ІнцидентиОбороты.Статус.*,

ІнцидентиОбороты.КількістьОборот КАК Кількість}

СГРУППИРОВАТЬ ПО

ІнцидентиОбороты.Статус,

ІнцидентиОбороты.Заявник,

ІнцидентиОбороты.ІдентифікаторІнцидента,

ІнцидентиОбороты.ОписІнцидента"

1Події ІБ можуть бути результатом випадкових або навмисних спроб компрометації захисних заходів ІБ, але в більшості випадків подія ІБ сама по собі не означає, що спроба в дійсності була успішною і, отже, якимсь чином вплинула на конфіденційність, цілісність і (або) доступність , тобто не всі події ІБ будуть віднесені до категорії інцидентів ІБ.

2Необхідно мати певну шкалу серйозності інцидентів з відповідною класифікацією. Ця шкала може складатися, наприклад, з двох положень: «значні» і «незначні». Вибір градацій шкали повинен грунтуватися на фактичних або передбачуваних негативних впливах на бізнес-операції організації.

Соседние файлы в папке диплом1!!!