Чтение онлайн

на главную - закладки

Жанры

C# для профессионалов. Том II

Ватсон Карли

Шрифт:

Отметим, что в начале вывода

caspol.exe
разрешает полномочия на уровнях
Enterprise
,
Machine
и
User
и затем перечисляет действующие представленные права. Теперь перейдем к этому вопросу.

Уровни политики: машина, пользователь и предприятие

До сих пор безопасность рассматривалась в контексте одной машины. Часто необходимо определить политику системы безопасности для определенных пользователей или для всей организации, и именно поэтому .NET предоставляет не один, а три уровня групп кода:

□ Machine (Машина)

□ Enterprise (Предприятие)

□ User (Пользователь)

Уровни

групп кода управляются независимо и существуют параллельно:

Если существует три вида политики безопасности, как узнать, какая применяется? Действующим полномочием является пересечение полномочий трех уровней. Каждый из трех уровней имеет возможность запретить права, предоставленные другими,— это хорошая весть для администраторов, так как их настройки будут переопределять настройки пользователя.

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

caspol.exe
добавьте либо аргумент
enterprise
, либо аргумент
user
, чтобы изменить режим команды,
caspol.exe
работает по умолчанию на уровне
Machine
; таким образом эта утилита до сих пор и использовалась. Просмотрим группы кода, перечисленные на уровне
User
:

caspol.exe -user -listgroups

Так выглядит вывод команды при установке по умолчанию:

Security is ON

Execution checking is ON

Policy change prompt is ON

Level = User

Code Groups:

1. All code: FullTrust

Success

Теперь выполним ту же самую команду, но в этот раз, чтобы увидеть группы кода на уровне

Enterprise
:

caspol.exe -enterprise -listgroups

Вывод команды выглядит так:

Security is ON

Execution checking is ON

Policy change prompt is ON

Level = Enterprise

Code Groups:

1. All code: FullTrust

Success

Как можно видеть, по умолчанию оба уровня,

User
и
Enterprise
, конфигурируются с предоставлением
FullTrust
для единственной группы кода
All Code
. В результате этого настройка по умолчанию для системы безопасности .NET не налагает никаких ограничений на уровне пользователя или предприятия, и реализованная политика диктуется исключительно политикой уровня машины. Например, если требуется применить более строгое полномочие или множество полномочий к уровню пользователя или предприятия, эти ограничения будут налагаться на все полномочия и, возможно, переопределять права на уровне машины. Действующие полномочия являются пересечением, поэтому, например, если необходимо применить
FullTrust
к группе кода, это полномочие должно быть присвоено группе кода на каждом из трех уровней политики.

При выполнении

caspol.exe
администратором
по умолчанию используется уровень машины, но если выйти из системы и зарегистрироваться как пользователь, который не принадлежит группе пользователей
Administrator
,
caspol.exe
выберет по умолчанию уровень пользователя. Кроме того,
caspol.exe
не позволит изменить политику безопасности таким образом, чтобы сделать саму утилиту
caspol.exe
неработоспособной.

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

Поддержка безопасности в .NET

Чтобы система безопасности .NET работала, программистам необходимо доверить CLR обеспечение политики безопасности. Как это сделать? Когда вызывается метод, требующий специальных полномочий (например, доступ к файлу на локальном диске), CLR будет просматривать стек с целью гарантии того, что участник цепочки вызовов имеет требуемые права.

Слово 'производительность' уже, вероятно, обеспокоило вас в данный момент, и понятно, что ее повышение — это проблема, но чтобы получить преимущества управляемой среды .NET, приходится платить за безопасность. Иначе сборки, не являющиеся полностью надежны ни, могли бы делать обращения к надежным сборкам и система была бы открыта для атаки.

Для справки, наиболее применимыми в этой главе частями библиотеки .NET Framework являются:

System.Security.Permissions

System.Security.Policy

System.Security.Principal

Отметим, что система безопасности доступа к коду на основе свидетельства работает в паре с системой безопасности регистрации в Windows. Если вы захотите выполнить приложение для настольного компьютера .NET, то ему должны быть предоставлены соответствующие полномочия системы безопасности доступа к коду .NET, но регистрирующийся пользователь должен также работать под учетной записью Windows, которая имеет соответствующие права для выполнения кода. В применении к настольным приложениям это означает, что текущему пользователю должны быть предоставлены соответствующие права для доступа к соответствующим файлам сборки на диске. Для приложений Интернета учетная запись, с которой работает Информационный сервер Интернет, должна иметь доступ к файлам сборки.

Требуемые полномочия

Создадим приложение Windows Forms с кнопкой, которая при нажатии будет выполнять действие, обращающееся к диску. Предположим, что если приложение не имеет подходящего полномочия для доступа к локальному диску (

FileIOPermission
), кнопка будет помечаться как недоступная (серым цветом).

В следующем коде представлен конструктор формы, который создает объект

FileIOPermission
, вызывает его метод
Demand
и затем обрабатывают результат:

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

using System.Security;

using System.Security.Permissions;

namespace SecurityApp4 {

 public class Form1 : System.Windows.Forms.Form {

private System.Windows.Forms.Button button1;

Поделиться:
Популярные книги

Черный дембель. Часть 4

Федин Андрей Анатольевич
4. Черный дембель
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Черный дембель. Часть 4

Граф Суворов 8

Шаман Иван
8. Граф Суворов
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Граф Суворов 8

Имперец. Том 1 и Том 2

Романов Михаил Яковлевич
1. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Имперец. Том 1 и Том 2

Чехов

Гоблин (MeXXanik)
1. Адвокат Чехов
Фантастика:
фэнтези
боевая фантастика
альтернативная история
5.00
рейтинг книги
Чехов

Путь молодого бога

Рус Дмитрий
8. Играть, чтобы жить
Фантастика:
фэнтези
7.70
рейтинг книги
Путь молодого бога

Хозяин Теней 3

Петров Максим Николаевич
3. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Хозяин Теней 3

Князь Мещерский

Дроздов Анатолий Федорович
3. Зауряд-врач
Фантастика:
альтернативная история
8.35
рейтинг книги
Князь Мещерский

Венецианский купец

Распопов Дмитрий Викторович
1. Венецианский купец
Фантастика:
фэнтези
героическая фантастика
альтернативная история
7.31
рейтинг книги
Венецианский купец

Начальник милиции. Книга 3

Дамиров Рафаэль
3. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции. Книга 3

Аристократ из прошлого тысячелетия

Еслер Андрей
3. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Аристократ из прошлого тысячелетия

Взводный

Берг Александр Анатольевич
5. Антиблицкриг
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Взводный

Проданная невеста

Wolf Lita
Любовные романы:
любовно-фантастические романы
5.80
рейтинг книги
Проданная невеста

Адаптация

Уленгов Юрий
2. Гардемарин ее величества
Фантастика:
городское фэнтези
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Адаптация

Я — Легион

Злобин Михаил
3. О чем молчат могилы
Фантастика:
боевая фантастика
7.88
рейтинг книги
Я — Легион