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

Установка привилегий доступа определенного пользователя, виды привилегий и ключевые слова в операторе. Лишение пользователя права назначать привилегии. Структура данных и алгоритм, описание работы программы, имя пользователя, пароль и создание прав.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 12.08.2011
Размер файла 207,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Курсовая работа

по дисциплине «Базы данных»

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

Содержание

Введение

1.Установка привилегий доступа

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

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

Заключение

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

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

Введение

Организовать защиту данных можно на двух уровнях: на уровне приложения и на уровне базы данных.

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

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

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

1.Установка привилегий доступа

Привилегия доступа - возможность определенного пользователя выполнять определенный вид действий над определенными таблицами базы данных. Привилегии доступа могут устанавливаться как системным администратором (пользователем с именем SYSDBA), так и пользователем, которому системный администратор предоставил такое право.

Установка привилегий производится оператором GRANT. Его формат:

grant{

{all [privileges] | select | delete | insert

| update [(столбец [.столбец ...])]}

on [table] {имя таблицы}

to {список_пользователей}

};

< список пользователей > = [user] имя пользователя[, [user]

Имя пользователя...] [with grant option]

По умолчанию доступ к таблицам и хранимым процедурам имеет только тот пользователь, который их создал. Кроме того, системный администратор имеет доступ ко всем компонентам БД.

Ниже перечислены виды привилегий и ключевые слова в операторе GRANT, соответствующие этим привилегиям.

Ключевое слово

Вид привилегии доступа

ALL

Выполнение операторов SELECT, DELETE, INSERT, UPDATE. EXECUTE

SELECT

Выполнение оператора SELECT

DELETE

Выполнение оператора DELETE

INSERT

Выполнение оператора INSERT

UPDATE

Выполнение оператора UPDATE

Для предоставления пользователю привилегии доступа к таблице в операторе GRANT необходимо указать как минимум следующие параметры:

· ключевое слово, обозначающее вид привилегии доступа;

· имя таблицы;

· имя пользователя.

Например, предоставить пользователю PASHA привилегию на выполнение поиска данных в таблице VARY:

GRANT SELECT ON VARY TO PASHA

Чтобы в одном операторе GRANT предоставить пользователю не одну, а несколько привилегий, следует привести список этих привилегий:

GRANT SELECT, INSERT ON VARY TO PASHA

Словом ALL обозначается предоставление пользователю всех привилегий, то есть права считывания, добавления, изменения и удаления:

GRANT ALL ON VARY TO PASHA

Если необходимо предоставить одну или несколько привилегий ряду пользователей, можно выполнить оператор GRANT для каждого пользователя, или указать список пользователей в одном операторе GRANT:

GRANT SELECT, INSERT, UPDATE ON RASHOD TO PASHA, DIMA

В случае, если определенный вид привилегий по доступу к таблице должен быть назначен всем пользователям, в операторе GRANT указывают ключевое слово PUBLIC вместо списка имен пользователей:

GRANT SELECT, INSERT, UPDATE ON RASHOD TO PUBLIC

Привилегия на изменения определенных (не всех) столбцов таблицы также может быть указана в операторе GRANT для отдельных пользователей. В этом случае имена столбцов перечисляются в скобках после ключевого слова UPDATE:

GRANT UPDATE (DAT_RASH, TOVAR, KOLVO) ON RASHOD TO DIMA

Если в операторе GRANT при предоставлении пользователю привилегии доступа к таблице указать необязательный параметр WITH GRANT OPTION, данный пользователь получит право назначать ту же привилегию другим пользователям. Например, после выполнения оператора

GRANT DELETE ON RASHOD TO PASHA WITH GRANT OPTION

пользователь PASHA получит право предоставлять привилегию удаления из таблицы RASHOD другим пользователям.

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

Revoke [grant option for]{

{all [privileges] | select | delete | insert

| update [(столбец [.столбец ...])]}

on [table] {имя таблицы}

from { список пользователей}

};

Здесь все параметры идентичны по содержанию параметрам оператора GRANT, за исключением параметра GRANT OPTION FOR, который удаляет право выдачи привилегий у пользователей из списка пользователей. Привилегию может ликвидировать только тот, кто ее выдал.

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

Например:

GRANT ALL ON RASHOD TO DIMA

REVOKE INSERT ON RASHOD FROM DIMA

После выполнения REVOKE пользователь DIMA будет обладать правами изменения (UPDATE), удаления (DELETE) и выборки данных (SELECT) из таблицы RASHOD.

Лишение пользователя права назначать привилегии другим пользователям ведет к утрате данной привилегии всеми пользователями, которым он успел ее назначить.

Привилегии, установленные для всех пользователей (PUBLIC),

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

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

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

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

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

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

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

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

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

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

procedure TForm3.BitBtn1Click(Sender: TObject);

var

i,j:integer;

f:boolean;

begin

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;

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

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

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

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

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

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, Buttons;

type

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;

var

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;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.BitBtn2Click(Sender: TObject);

var

i:integer;

flag:boolean;

begin

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:='';

end;

procedure TForm1.BitBtn3Click(Sender: TObject);

var

i:integer;

id:integer;

begin

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('Нет выделенных элементов');

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

var

i:integer;

begin

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('Создайте хотя бы одну таблицу!');

end;

end.

unit Unit2;

interface

uses

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

Dialogs, StdCtrls, Buttons;

type

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;

var

Form2: TForm2;

implementation

uses Unit3, Unit1;

{$R *.dfm}

procedure TForm2.BitBtn2Click(Sender: TObject);

var

i:integer;

flag:boolean;

begin

if (Edit1.Text<>'') and (Edit2.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

begin

ListBox1.Items.Add(Edit1.Text);

ListBox2.Items.Add(Edit2.Text);

end

else showmessage('Такой пользователь уже есть');

end else showmessage('Не введено имя пользователя или пароль');

Edit1.Text:='';

Edit2.Text:='';

end;

procedure TForm2.BitBtn3Click(Sender: TObject);

var

i:integer;

id:integer;

begin

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('Нет выделенных элементов');

end;

procedure TForm2.BitBtn1Click(Sender: TObject);

var

i:integer;

begin

if ListBox1.Items.Count>0 then

begin

num_user:=1;

user_c:=ListBox1.Items.Count;

for i:=1 to user_c do

begin

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

user_p[i]:=ListBox2.Items[i-1];

end;

Hide;

Form3.show;

end else

showmessage('Создайте хотя бы одного пользователя!');

end;

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

begin

Form1.Close;

end;

end.

unit Unit3;

interface

uses

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

Dialogs, Grids, StdCtrls, Buttons;

type

TForm3 = class(TForm)

SG: TStringGrid;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

BitBtn1: TBitBtn;

procedure FormShow(Sender: TObject);

procedure SGSelectCell(Sender: TObject; ACol, ARow: Integer;

var CanSelect: Boolean);

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

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses Unit1, Unit4;

{$R *.dfm}

procedure TForm3.FormShow(Sender: TObject);

var

i,j:integer;

begin

Label2.Caption:='Пользователь - '+user_n[num_user];

Label3.Caption:='Пароль - '+user_p[num_user];

SG.Cells[0,1]:='select';

SG.Cells[0,2]:='insert';

SG.Cells[0,3]:='delete';

SG.Cells[0,4]:='update';

SG.Cells[0,5]:='all';

SG.ColCount:=table_c+1;

for i:=1 to table_c do

begin

SG.Cells[i,0]:=table_n[i];

for j:=1 to 5 do

SG.Cells[i,j]:='-';

end;

end;

procedure TForm3.SGSelectCell(Sender: TObject; ACol, ARow: Integer;

var CanSelect: Boolean);

var

i:integer;

begin

if (Sg.Cells[ACol,ARow]='-') and (ARow<>5) and (Sg.Cells[ACol,5]<>'+') then begin Sg.Cells[ACol,ARow]:='+'; exit; end;

if (Sg.Cells[ACol,ARow]='+') then begin Sg.Cells[ACol,ARow]:='-'; exit; end;

if (Sg.Cells[ACol,ARow]='-') and (ARow=5) then

begin

Sg.Cells[ACol,ARow]:='+';

for i:=1 to 4 do

SG.Cells[ACol,i]:='-';

exit;

end;

end;

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

begin

Form1.Close;

end;

procedure TForm3.BitBtn1Click(Sender: TObject);

var

i,j:integer;

f:boolean;

begin

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;

end;

end.

unit Unit4;

interface

uses

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

Dialogs, StdCtrls, Buttons;

type

TForm4 = class(TForm)

Memo1: TMemo;

BitBtn1: TBitBtn;

Label1: TLabel;

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

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

uses Unit1;

{$R *.dfm}

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

begin

Form1.close;

end;

end.

Размещено на Allbest.ru


Подобные документы

  • Написание программы входа пользователя в систему через пароль. Необходимость содержания входа в систему через ввод, проверки пароля, а также регистрации пользователя с занесением его имени и пароля в базу данных. Блокировка системы при неверном пароле.

    лабораторная работа [2,7 M], добавлен 19.10.2009

  • Создание специализированной системы управления базой данных для обработки информации из выбранной прикладной области знаний. Требования к интерфейсу пользователя. Спецификации форм. Описание работы программы. Методика испытаний. Руководство пользователя.

    курсовая работа [723,9 K], добавлен 22.02.2014

  • Проверка подлинности пользователя путём сравнения введённого им пароля с паролем в базе данных пользователей. Контроль и периодический пересмотр прав доступа пользователей к информационным ресурсам. Построение трехмерной модели человеческого лица.

    презентация [1,1 M], добавлен 25.05.2016

  • Трансляция полей формы. Метод аутентификации в Web как требование к посетителям предоставить имя пользователя и пароль. Форма для передачи данных. Использование базу данных для хранения паролей. Разработка сценарий для аутентификации посетителей.

    лекция [225,0 K], добавлен 27.04.2009

  • История развития принтера - устройства для печати изображений либо текста на бумаге, его виды и принцип работы. Основные параметры струйного и лазерного принтера. Области администрирования, создание учётных записей пользователя, их блокировка и удаление.

    дипломная работа [516,0 K], добавлен 03.11.2014

  • Создание программы для среды UNIX, проверяющей атрибут выполнения файла для текущего пользователя. Особенности прав доступа для каталогов. Командный интерпретатор shell; общий синтаксис скрипта. Установка атрибутов защиты для групп пользователей.

    курсовая работа [18,8 K], добавлен 12.05.2013

  • Создание автоматизированного рабочего места по технике безопасности и охране труда на малом предприятии. Требования к аппаратному обеспечению. Математическая модель контрольного тестирования и структура данных. Алгоритм работы пользователя системы.

    дипломная работа [806,3 K], добавлен 22.10.2013

  • Процесс установки контроллера домена. Создание пользователей в домене, запись имени, фамилии, логина пользователя. Пароль и политика безопасности по отношению к паролю. Системное и сетевое администрирование. Проектирование инфраструктуры Active Directory.

    курсовая работа [3,0 M], добавлен 24.03.2016

  • Создание тестирующих и игровых программ. Степень сложности и художественного оформления интерфейса пользователя. Создание справочной системы. Корректное отображение символов. Создание системы управления базами данных в среде Delphi и таблиц базы данных.

    методичка [1,0 M], добавлен 24.10.2012

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

    лабораторная работа [857,8 K], добавлен 13.06.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.