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

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

пользователей (PUBLIC),

отнимаются также у всех пользователей (PUBLIC).

.Структуры данных и алгоритмы

При реализации использовались следующие основные структуры данных:

) table_c:integer - количество таблиц в базе данных;

2) table_n:array[1..50] of string - названия таблиц;

3) user_c:integer - количество пользователей;

) user_n:array[1..10] of string - имена пользователей;

) user_p:array[1..10] of string - пароли пользователей;

) num_user:integer - номер текущего пользователя.

Основной процедурой данной программы является процедура формирования sql-кода. Рассмотрим ее реализацию:

procedure TForm3.BitBtn1Click(Sender: TObject);

i,j:integer;

f:boolean;

f:=true;

for i:=1 to table_c do

begin

for j:=1 to 5 do

begin

if (Sg.Cells[i,j]='+') and (f=false) then

begin

Form4.Memo1.Lines.Add('grand '+Sg.Cells[0,j]+' on '+Sg.Cells[i,0]+' to '+user_n[num_user]);

Form4.Memo1.Lines.Add('');

end;

if (Sg.Cells[i,j]='+') and (f=true) then

begin

Form4.Memo1.Lines.Add('grand '+Sg.Cells[0,j]+' on '+Sg.Cells[i,0]+' to '+user_n[num_user]+' identified by '+user_p[num_user]);

Form4.Memo1.Lines.Add('');

f:=false;

end;

end;

end;

inc(num_user);

if num_user>user_c then begin Hide; Form4.show; end

else begin Hide; Show; end;;

В цикле для каждой таблицы, имеющейся в базе данных, просматриваются все возможные права доступа. Для тех, которые в StringGrid выделены знаком + необходимо создать sql-команды. В случаи, если пользователь встречается первый раз (это свойство отслеживается при помощи переменной flag), то его формируется полный вариант grand: 'grand '+Sg.Cells[0,j]+' on '+Sg.Cells[i,0]+' to '+user_n[num_user]+' identified by '+user_p[num_user]. В противном случаи, используем более короткий вариант: 'grand '+Sg.Cells[0,j]+' on '+Sg.Cells[i,0]+' to '+user_n[num_user].

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

Работа написанной программы состоит из четырех шагов.

На первом шаге пользователь должен указать названия таблиц, которые существуют в базе данных (Рисунок 1):

пользователь программа доступ

Рисунок 1 - Создание таблиц

На данном шаге осуществляется контроль корректности вводимых данных, их уникальность, и обязательность присутствия хотя бы одной таблицы.

На втором шаге создаются пользователи (Рисунок 2). Пользователю необходимо указать имя пользователя и пароль, которые будут использоваться для подключения к базе данных. На данном шаге также осуществляется контроль вводимых значений. Имя пользователя должно быть уникально и корректно. Необходимо создать хотя бы одного пользователя.

Рисунок 2 - Создание пользователей

На третьем шаге задаются права созданных пользователей. Для нашего примеры предоставляемых прав указаны на Рисунке 3 (для пользователя admin) и на Рисунке 4 (для пользователя user). Процесс реализован в виде таблицы, в которой ячейка c[i,j] (i-строка, j-столбец) содержит +, если пользователь обладает правом i на таблицу j или - - в противном случаи.

Рисунок 3 - Создание прав администратора

Рисунок 4 - Создание прав пользователя

Наконец, на последнем шаге пользователь программы получает SQL-код, для создания указанных пользователей с необходимыми правами. Данный код может быть использован в СУБД (например MySQL или InterBase).

Рисунок 5 - SQL-код

Заключение

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

Список использованной литературы

1.Крёнке Д. Теория и практика построения баз данных. 8-е изд./ Д. Крёнке. - Спб.: Питер, 2003. - 800 с. - ISBN 5-94723-275-8

. П. Зегжда, Теория и практика. Обеспечение информационной безопасности. - Москва, 1996.

. Вьюкова Н.И., Галатенко В.А. Информационная безопасность систем управления базами данных 1996 - статья в электронном журнале.

. Громов В.И., Васильев Г.А "Энциклопедия компьютерной безопасности" (электронный сборник 1999 год)

Приложение А (обязательное) Листинг программы

unit Unit1;

interface

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons;

TForm1 = class(TForm)

ListBox1: TListBox;

Edit1: TEdit;

Label1: TLabel;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

Form1: TForm1;

table_c:integer;

table_n:array[1..50] of string;

user_c:integer;

user_n:array[1..10] of string;

user_p:array[1..10] of string;

num_user:integer;Unit2;

{$R *.dfm}TForm1.BitBtn2Click(Sender: TObject);

i:integer;

flag:boolean;

if Edit1.Text<>'' then

begin

flag:=true;

for i:=0 to ListBox1.Items.Count-1 do

if Edit1.Text=listbox1.Items[i] then flag:=false;

if flag=true then ListBox1.Items.Add(Edit1.Text)

else showmessage('Такая таблица уже есть');

end else showmessage('Не введено название таблицы');

Edit1.Text:='';;TForm1.BitBtn3Click(Sender: TObject);

i:integer;

id:integer;

id:=-1;

for i:=0 to ListBox1.Items.Count-1 do

if listBox1.Selected[i] then id:=i;

if id<>-1 then ListBox1.Items.Delete(id) else

showmessage('Нет выделенных элементов'); ;

procedure TForm1.BitBtn1Click(Sender: TObject);

i:integer;

if ListBox1.Items.Count>0 then

begin

table_c:=ListBox1.Items.Count;

for i:=1 to table_c do

table_n[i]:=ListBox1.Items[i-1];

Hide;

Form2.show;

end else

showmessage('Создайте хотя бы одну таблицу!');;.Unit2;

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons;

TForm2 = class(TForm)

ListBox1: TListBox;

Edit1: TEdit;

Label1: TLabel;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

Edit2: TEdit;

Label2: TLabel;

Label3: TLabel;

ListBox2: TListBox;

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;

Form2: TForm2;Unit3, Unit1;

{$R *.dfm}TForm2.BitBtn2Click(Sender: TObject);

i:integer;

flag:boolean;

if (Edit1.Text'') then

begin

flag:=true;

for i:=0 to ListBox1.Items.Count-1 do

if Edit1.Text=listbox1.Items[i] then flag:=fal