ЛАБОРАТОРНАЯ РАБОТА № 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!