Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Safonov / AMPN_course_22.pptx
Скачиваний:
95
Добавлен:
16.04.2015
Размер:
256.5 Кб
Скачать

Использование WindowsPrincipal

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

AppDomain.CurrentDomain.SetPrincipalPolicy

(PrincipalPolicy.WindowsPrincipal)

Определение главного пользователя:

WindowsPrincipal MyPrincipal = (WindowsPrincipal) Thread.CurrentPrincipal

(C) Сафонов В.О. 2012

Подмена пользователя (impersonation)

С помощью системных вызовов можно получить пользовательский маркер:

например, LogonUser из advapi32.dll

Создать экземпляр WindowsIdentity:

WindowsIdentity ImpersonatedIdentity =

new WindowsIdentity(hToken)

Подменить пользователя:

WindowsImpersonationContext

MyImpersonation =

ImpersonatedIdentity.Impersonate()

По окончании работы вернуться к прежнему пользователю:

MyImpersonation.Undo()

(C) Сафонов В.О. 2012

Содержание

Общие определенияВиды полномочийИспользование ролей

Безопасность доступа к кодуПолитики безопасностинастройка системы безопасности

(C) Сафонов В.О. 2012

Безопасность доступа

к коду

Доступ к ресурсам ограничивается для некоторого фрагмента кода

ГибкостьНадежность

Полномочия проверяются на стеке вызовов (проверяется динамическая цепочка вызванных методов)

Нет возможности скрыть истинные полномочия

Принцип минимальных полномочий (привилегий)

(C) Сафонов В.О. 2012

Прогулка по стеку

Каждая сборка имеет свой набор прав

Стек растет вниз

Метод в A4 потребовал

полномочий P

P

Assembly A1

Assembly A2

Assembly A3

Assembly A4

G1

P

G2 P

G3

P

G4

P сравнивается с

правами каждой

 

сборки на стеке

 

выше A4

(C) Сафонов В.О. 2012

Модификаторы стека

Управление текущим состоянием процесса проверки и присваивания прав при прогулке по стекуПример: управляемая обертка для неуправляемых ресурсов

Текущая сборка требует соответствующих полномочий от вызывающей сборки

Гарантируется безопасность вызова неуправляемого кода

Исполняется неуправляемый код

(C)Сафонов В.О. 2012

Интерфейс IStackWalk

Demand

Проверка вызывающей сборки

Deny / PermitOnly

Добровольное ограничение прав сборки

Assert

Я доверяю всем, кто меня вызвал. В дальнейших полномочиях необходимости нет

CodeAccessPermission.RevertXxx

Удалить модификатор стека из фрейма (записи активации на стеке)

(C) Сафонов В.О. 2012

Создание своих собственных полномочий для проверки кода

CodeAccessPermission:

DBDataPermission – доступ к базе данных

IsolatedStoragePermission – доступ к изолированному храналищу данных

ResourcePermissionBase – доступ к системным ресурсам

(C) Сафонов В.О. 2012

Содержание

Общие определенияВиды полномочийИспользование ролей

Безопасность доступа к кодуПолитики безопасностиНастройка системы безопасности

(C) Сафонов В.О. 2012

Безопасность, основанная на свидетельствах

Полномочия

Объекты для авторизации

Политика

Определяет набор полномочий, предоставленных сборке

Свидетельство

Информация о сборке из различных источников (автор, компания- разработчик и т.д.) для предоставления набора полномочий сборке

Все три вида полностью расширяемы

(C) Сафонов В.О. 2012

Соседние файлы в папке Safonov