- •Архитектуры и модели программ и знаний
- •Содержание
- •Пример: проблемы с безопасностью
- •Источники проблем с
- •Более ранние
- •Решение проблем безопасности
- •Содержание
- •Общие определения
- •Общие определения 2/3
- •Общие определения
- •Содержание
- •Виды полномочий
- •Интерфейс
- •Полномочия для управления полномочиями
- •Пример: Использование полномочий безопасности
- •Пример (2)
- •Декларативные проверки полномочий
- •Содержание
- •Использование ролей
- •Подмена главного пользователя
- •Использование WindowsPrincipal
- •Подмена пользователя (impersonation)
- •Содержание
- •Безопасность доступа
- •Прогулка по стеку
- •Модификаторы стека
- •Интерфейс IStackWalk
- •Создание своих собственных полномочий для проверки кода
- •Содержание
- •Безопасность, основанная на свидетельствах
- •Свидетельства
- •Политика безопасности
- •Уровни безопасности
- •Внутренняя структура политики
- •полномочий
- •Запросы со стороны сборок
- •Общая картина
- •Содержание
- •Настройка системы безопасности
- •Резюме
- •Литература по .NET
- •Вопросы и домашнее задание к лекции 22
Содержание
Общие определенияВиды полномочийИспользование ролей
Безопасность доступа к кодуПолитики безопасностиНастройка системы безопасности
(C) Сафонов В.О. 2012
Виды полномочий
Доступ к коду: полномочия кода для доступа к защищенному ресурсу или для выполнения защищенной операции
EnvironmentPermission, FileDialogPermission,
FileIOPermission, ReflectionPermission и др.
Идентификация: анализ происхождения сборки
PublisherIdentityPermission,
SiteIdentityPermission,
StrongNameIdentityPermission,
ZoneIdentityPermission,
URLIdentityPermission
Ролевая безопасность: принадлежность пользователя к некоторой роли (“sysadmin”, “manager”, “engineer” и др.)
PrincipalPermission
Пользователь может также определить новые полномочия безопасности
(C) Сафонов В.О. 2012
Интерфейс
IPermission
Операции над полномочиями:
Copy()
Intersect()Union()
IsSubsetOf()
Проверка полномочий:
Demand()
(C) Сафонов В.О. 2012
Полномочия для управления полномочиями
SecurityPermission
AllFlags – неограниченные полномочия для управления полномочиями
UnmanagedCode – полномочия для исполнения неуправляемого кода
ControlAppDomain – полномочия для управления областью приложения
Assertion – полномочия, гарантирующие полномочия
И многие другие
(C) Сафонов В.О. 2012
Пример: Использование полномочий безопасности
Создает объект для описания полномочий и требует их наличия от вызывающего метода
using System.Security.Permissions; public class Filer()
{
public Filer(string path, bool readOnly) { FileIOPermission p = new FileIOPermission(readOnly ?
FileIOPermissionAccess.Read :
FileIOPermissionAccess.AllAccess, path);
p.Demand();
//Work with the file
//…
}
}
(C) Сафонов В.О. 2012
Пример (2) |
Полномочия, реализованные с помощью |
атрибутов |
Хранятся в метаданных сборки |
Исполняются автоматически |
using System.Security.Permissions; |
public class Filer() |
{ |
[MyPermission(SecurityAction.Demand, |
Unrestricted = True)] |
public Filer(string path, bool readOnly) { |
// open the file |
// … |
} |
} |
(C) Сафонов В.О. 2012 |
Декларативные проверки полномочий
Преимущества
Проще использовать и набиратьДоступны для рефлексии
Могут быть использованы системными инструментами для обнаружения конфликтов
Недостатки
Невозможность обработки исключений
(C) Сафонов В.О. 2012
Содержание
Общие определенияВиды полномочийИспользование ролей
Безопасность доступа к кодуПолитики безопасностиНастройка системы безопасности
(C) Сафонов В.О. 2012
Использование ролей
Разделение доступа для групп пользователей
IPrincipal.IsInRole(roleName)
Использование результата аутентификации
IIdentity.Name
IIdentity.IsAutenticated
IIdentity.AuthenticationType
PrincipalPermission
Работает с текущим главным пользователем сборки
(C)Сафонов В.О. 2012
Подмена главного пользователя
Thread.CurrentPrincipal
Полезно в случае, если используется свой собственный механизм аутентификации
Необходимо при работе по поручению какого-
либо другого пользователя
Права на подстановку главного пользователя регулируются:
SecurityPermission
(C) Сафонов В.О. 2012
