Добавил:
north memphis Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МБКС_лаб_3.pdf
Скачиваний:
0
Добавлен:
26.01.2026
Размер:
861.01 Кб
Скачать

ТЕОРЕТИЧЕСКОЕ ВВЕДЕНИЕ

Целью лабораторной работы является разработка двух приложений для управления правами доступа: администратора и пользователя. Программы должны обеспечивать управление матрицей доступа и фильтрацию данных на основе установленных прав. Вышепоставленные цели должны быть выполненыприпомощиалгоритмареализованногоналюбомдоступномязыке программирования.

Формулировка определений и их свойств

Права доступа — это набор разрешений, которые определяют, какие действия может выполнять пользователь или группа пользователей с конкретными ресурсами (например, файлами, программами или данными). Основные виды прав включают чтение (просмотр), запись (редактирование). Управление правами доступа необходимо для защиты информации от несанкционированного использования и обеспечения безопасности системы

В данной лабораторной работе рассматривается дискреционная матрица доступа в основе которой лежит выдача прав доступа к определенным файлам определенным пользователям.

Рисунок 1. Пример матрицы доступа

4

Описание программы

В качестве языка программирования был выбран язык «Java» поскольку имеются навыки создания приложений с пользовательским интерфейсом именно на этом языке программирования.

Рассмотрим приложение администратора:

Класс Main.java

Данный класс отвечает за старт программы.

Класс Interface.java

Данный класс отвечает за отрисовку пользовательского интерфейса, расположение кнопок, обработчик нажатий кнопок.

Класс Backend.java

Данный класс отвечает за выполнение действий по нажатию кнопок – обработчик, а также содержит в себе дополнительные методы, необходимые для работы программы.

Поля:

Matrix matrix – объект класса Matrix.java. Матрица доступа.

FileNames allFileNames – объект класса FileNames.java.

Содержит имена всех объектов. Методы:

addButtonHandler – отвечает за обработку введенных в окно, созданного методом add, данных. Добавляет их в поля matrix, allFileNames. Записывает в файл обновленные значения.

removeButtonHandler – отвечает за обработку введенных в

окно, созданного методом remove, данных. Правильным образом удаляет объекты/субъекты из matrix, allFileNames. Записывает в файл обновленные значения

changeButtonHandler – отвечает за обработку введенных в

окно, созданного методом changeAccess, данных. Правильным образом меняетправадоступасубъектак объекту.Поумолчанию кновымобъектамни

5

у кого нет доступа. Правильным образом добавляет информацию в поле matrix. Записывает в файл обновленные значения.

saveButtonHandler – метод, отвечающий за правильное считывание изменений из интерактивной матрицы доступа для того, чтобы правильным образом сохранить изменения в поле matrix, а также в файл.

changeNameButtonHandler – метод, отвечающий за правильное изменение имени объектов/субъектов в полях matrix, allFileNames так, чтобы сохранились все права доступа. Записывает обновленную информацию

вфайл.

add – создает второе окно ввода нового объекта/субъекта в зависимости от выбор пользователя.

remove – создает второе окно ввода имени объекта/субъекта, который подлежит удалению.

changeAccess – создает второе окно ввода для изменения прав доступа для пары субъект-объект, которые вводятся пользователем.

showMatrix – создает второе окно для показа текущей матрицы доступа, где также присутствует интерактивная возможность изменения прав доступа субъектов к объектам. После «интерактивных» изменений необходимо нажать кнопку «save».

consoleEnter – метод, отвечающий за обработку содержимого командной строки внутри программы. Правильным образом считывает команду и ее аргументы, а затем передает их в класс CommandLine.java.

exportMatrix – метод, отвечающий за сохранение текущей матрицы доступа в отдельный файл на ПЗУ пользователя.

importMatrix – метод, отвечающий за импортирование матрицы доступа из файла по пути, введенному пользователем.

changeName – метод, отвечающий за изменение имени для уже существующих объектов/субъектов.

6

removeDuplicates – вспомогательный метод, отвечающий за удаление дублей в массивах типа int

removeArrayListDuplicates – вспомогательный метод,

отвечающий за удаление дублей в массивах типа ArrayList

parseMatrix – вспомогательный метод, отвечающий за считывание матрицы доступа из файла. При первом запуске программы или при импортировании матрицы извне.

Класс FileWorker.java

Данный класс отвечает за вспомогательные чтение и запись из файлов согласно структуре файлов программы. Считывание и запись файлов матриц доступа.

Методы:

writeInFile – метод отвечающий за запись обновленной информации в существующий файл, содержащий матрицу доступа

parseSubjects – вспомогательный метод, отвечающий за считывание субъектов из файла матрицы доступа.

parseObjects – вспомогательный метод, отвечающий за считывание объектов из файла матрицы доступа.

exportMatrix – метод, отвечающий за сохранение текущего состоянияматрицывотдельныйфайл,содержащийвименивременнуюметку,

атакже доступный для импортирования обратно в программу.

importMatrix – метод, отвечающий за считывание матрицы доступа из файла.

Класс CommandLine.java

Данный класс отвечает за выполнение консольных команд. Поля:

String userInput – строка, содержащая правильный пользовательский ввод.

7

FileNames allFileNames – объект класса FileNames.

Содержит названия всех объектов матрицы. Методы:

grantCommandHandler – метод, отвечающий за выдачу прав доступа субъекту к объекту.

createCommandHandler – метод, отвечающий за создание субъекта с правами доступа к объектам. Если объектов не существует – создает новые.

removeCommandHandler – метод, отвечающий за удаление доступа субъекта к объектам.

grantAllCommandHandler – метод, отвечающий за выдачу прав доступа на все объекту субъекту.

removeAllCommandHandler – метод, отвечающий за отзыв всех прав доступа ко всем файла у субъекта

chooseCommand – метод, отвечающий за разделение пользовательского ввода на название команды и аргументы к ней. Также отвечаетзавызовметодавсоответствиисвведеннойпользователемкомандой.

Класс Employee.java

Данный класс отвечает за связь субъект – файлы, к которым у него есть доступ.

Поля:

String name – имя субъекта

FileNames fileNames – набор объектов, к которым у субъекта есть доступ.

Методы:

getName – возвращает имя пользователя

getFileNames – возвращает объект FileNames, содержащий объекты, к которым есть доступ у субъекта.

8

Класс FileNames.java

Вспомогательный класс, отвечающий за работу с массивом объектов. Поля:

ArrayList<String> fileNames – массив объектов.

Методы:

addFiles – метод, отвечающий за добавление новых объектов из массива типа String[]

size – возвращает количество объектов

set – меняет имя объекта по индексу index

removeByName – удаляет объект с именем name

removeByIndex – удаляет объект по индексу index

getAllFileNames – возвращает все объекты через массив типа String[]

clearFileNames – полностью очищает все объекты

9

Класс Matrix.java

Данный класс отвечает за работу с матрицей доступа. Матрица доступа содержит в себе массив субъектов, который, в свою очередь, содержит в себе массив объектов, к которым у субъекта есть доступ.

Поля:

ArrayList<Employee> employees – массив субъектов.

Методы:

getEmployees – возвращает массив субъектов

addEmployee – добавляет субъект

removeEmployee – удаляет субъект с именем name

addFilesToEmployee – добавляет субъекту с именем name массив объектов files

removeFilesFromEmployee – удаляет объекты, перечисленные в files, субъекту с именем name.

matrixLength – возвращает количество субъектов

getAllNames – возвращает все имена субъектов через массив типа String[]

clearEmployees – удаляет все субъекты.

10

Рассмотрим приложение работника

Класс Main.java

Данный класс отвечает за старт программы.

Класс Interface.java

Данный класс отвечает за отрисовку пользовательского интерфейса, расположение кнопок, обработчик нажатий кнопок.

Класс Backend.java

Данный класс отвечает за выполнение действий по нажатию кнопок – обработчик, а также содержит в себе дополнительные методы, необходимые для работы программы.

Поля:

Matrix matrix – объект класса Matrix.java. Матрица доступа.

FileNames allFileNames – объект класса FileNames.java.

Содержит имена всех объектов. Методы:

getUserInfo – метод, отвечающий за получение информации о том, имеет ли субъект с именем name доступ к файла files. Выводит результат в интерфейс.

importMatrix – метод, отвечающий за импортирование матрицы доступа из файла по пути, введенному пользователем.

removeDuplicates – вспомогательный метод, отвечающий за удаление дублей в массивах типа int

removeArrayListDuplicates – вспомогательный метод,

отвечающий за удаление дублей в массивах типа ArrayList

parseMatrix – вспомогательный метод, отвечающий за считывание матрицы доступа из файла. При первом запуске программы или при импортировании матрицы извне.

11

Класс FileWorker.java

Данный класс отвечает за вспомогательные чтение и запись из файлов согласно структуре файлов программы. Считывание и запись файлов матриц доступа.

Методы:

parseSubjects – вспомогательный метод, отвечающий за считывание субъектов из файла матрицы доступа.

parseObjects – вспомогательный метод, отвечающий за считывание объектов из файла матрицы доступа.

importMatrix – метод, отвечающий за считывание матрицы доступа из файла.

Класс Employee.java

Данный класс отвечает за связь субъект – файлы, к которым у него есть доступ.

Поля:

String name – имя субъекта

FileNames fileNames – набор объектов, к которым у субъекта есть доступ.

Методы:

getName – возвращает имя пользователя

getFileNames – возвращает объект FileNames, содержащий объекты, к которым есть доступ у субъекта.

12

Класс FileNames.java

Вспомогательный класс, отвечающий за работу с массивом объектов. Поля:

ArrayList<String> fileNames – массив объектов.

Методы:

addFiles – метод, отвечающий за добавление новых объектов из массива типа String[]

size – возвращает количество объектов

set – меняет имя объекта по индексу index

clearFileNames – полностью очищает все объекты

Класс Matrix.java

Данный класс отвечает за работу с матрицей доступа. Матрица доступа содержит в себе массив субъектов, который, в свою очередь, содержит в себе массив объектов, к которым у субъекта есть доступ.

Поля:

ArrayList<Employee> employees – массив субъектов.

Методы:

getEmployees – возвращает массив субъектов

addEmployee – добавляет субъект

matrixLength – возвращает количество субъектов

clearEmployees – удаляет все субъекты.

13

Соседние файлы в предмете Модели безопасности компьютерных систем