Вход/Регистрация
C# для профессионалов. Том II
вернуться

Ватсон Карли

Шрифт:

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

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;

  • Читать дальше
  • 1
  • ...
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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