ЛАБОРАТОРНАЯ РАБОТА № 4.  КОНТРОЛЬ ДОСТУПА К РЕСУРСАМ



Цель лабораторной работы:

1. Исследование методов контроля доступа к ресурсам операционной системы:

Теоретическое введение

Контроль доступа к ресурсам

В операционной системе (ОС) ресурсы, подобные файлам, ключам системного реестра, дескрипторам именованных каналов и т.д., защищаются с помощью списка контроля доступа ACL (Access Control List) На рисунке 6.1 показана схема того, как это происходит.

 

 


С каждым ресурсом ассоциируется дескриптор безопасности (security descriptor). В этом дескрипторе содержится информация о владельце ресурса и указатели на два списка контроля доступа:

· Разграничительный список контроля доступа DACL (Discretional Access Control List).

· Системный список управления доступом SACL (System Access Control List).

Список DACL отвечает за предоставление информации о том, кому разрешается доступ к данному ресурсу и кому запрещается.

    Список SACL - за предоставление информации о правилах аудита, которые должны применяться для регистрации связанных с безопасностью событий.

    В каждом из этих списков ACL содержится свой перечень правил контроля доступа ACE (Access Control Entries).

    Каждая запись ACE включает сведения о типе доступа, идентификаторе безопасности и правах.

В списке DACL тип доступа в записи ACE может иметь вид либо разрешения (Allow), либо запрещения (Deny). К числу некоторых прав, которые могут устанавливаться для файлов, относятся права на создание, чтение, запись, удаление, модификацию, изменение полномочий и передачу прав владения.

Классы для чтения и изменения списков контроля доступа находятся в пространстве имен System.Security.AccessControl.

Процедура просмотра списка прав доступа для выбранного файла выполняется следующим образом:

1. Класс FileStream имеет метод GetAccessControl(). Данный метод возвращает объект FileSecurity. FileSecurity – класс .NET, который представляет дескриптор безопасности для файлов. Он наследуется от таких базовых классов, как ObjectSecurity, CommonObjectSecurity, NativeObjectSecurity и FileSystemSecurity. К числу других классов, представляющих дескриптор безопасности относятся - CryptoSecurity; EventWaitHandleSecurity; MutexSecurity; RegistrySecurity; SemaphoreSecurity; PipeSecurity; ActiveDirectorySecurity.Все эти объекты могут защищаться с помощью списка контроля доступа.

2. Класс FileSecurity определяет методы для считывания и изменения списков DACL и SACL.

3. Метод GetAccessRules() возвращает DACL в виде класса AuthorizationRuleCollection.

4. Для получения доступа к SACL можно использовать метод GetAuditRules().

 

Примеры программирования

 

На рисунке 4.2 приведен пример приложения для получения списка контроля доступа к ресурсам. . В таблице 4.1  приведено описание используемых в приложении элементов управления.

 

Таблица  4.1 – Элементы управления приложения для контроля доступа к ресурсам

Элемент управления Класс Описание
1 2 3
button1 Button Командная кнопка для получения списка журналов событий

 


 

 

 

 

 


Программный код приложения имеет вид:

sing System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

using System.Security.AccessControl;

using System.Security.Principal;

 

namespace Resource

{

public partial class Form1 : Form

{

   public Form1()

   {

       InitializeComponent();

   }

 

   private void button1_Click(object sender, EventArgs e)

   {

       if (openFileDialog1.ShowDialog() == DialogResult.OK)

       {

           filename = openFileDialog1.FileName;

           textBox1.Text = filename;

       }

   }

   

 

   private void button2_Click(object sender, EventArgs e)

   {

       FileStream stream = File.Open(filename, FileMode.Open);

       FileSecurity securityDescriptor = stream.GetAccessControl();

       AuthorizationRuleCollection rules = securityDescriptor.GetAccessRules(true, true, typeof(NTAccount));

       foreach (AuthorizationRule rule in rules)

       {

           FileSystemAccessRule fileRule = rule as FileSystemAccessRule;

           textBox2.Text = textBox2.Text+ "Тип доступа:          " + fileRule.AccessControlType + (char)13+(char)10;

           textBox2.Text = textBox2.Text + "Права:               " + fileRule.FileSystemRights + (char)13 + (char)10;

           textBox2.Text = textBox2.Text + "Идентификационные данные: " + fileRule.IdentityReference.Value + (char)13 + (char)10;

           textBox2.Text = textBox2.Text + "-----------------------------------------------------------" + (char)13 + (char)10;

       }

   }

   string filename;

}

}

 


Дата добавления: 2018-08-06; просмотров: 448; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!