Опубликован: 27.12.2011 | Доступ: свободный | Студентов: 1334 / 35 | Оценка: 4.44 / 4.44 | Длительность: 12:31:00
Лекция 9:

Обеспечение безопасности в бизнес-приложений, созданных с помощью Lightswitch 2011

Аннотация: Рассматриваются вопросы обеспечения безопасности в бизнес-приложениях LightSwitch. Описаны ключевые понятия системы безопасности для интернет приложения: аутентификация, авторизация, права доступа и другие. Рассмотрены принципы формирования эффективной системы безопасности описан порядок настройки системы безопасности с использованием имеющихся в LightSwitch средств.

Цель лекции: изучить основные принципы обеспечения безопасности в бизнес-приложениях и ознакомиться с методами технологий подключения и настройки служб обеспечения аутентификации и авторизации в LightSwitch.

Бизнес приложения используют механизмы идентификации пользователей для обеспечения их доступа только к тем данным и функциям, к которым они имеют доступ в соответствии со своей должностью, обязанностями и функциями в организации. Многие компании обладают информацией, доступ к которой должны иметь только ограниченное количество сотрудников и если такая информация будет украдена, то это может серьезно повлиять как на бизнес, так и на репутацию компании. Поэтому возможности обеспечения секретности доступа и механизмы разграничения доступа играют важное значение в разработке реальных бизнес-приложений. Разработка системы безопасности с нуля требует высокой квалификации и специфических знаний от программистов, в LightSwitch имеются специальные инструменты, которые позволяю на базовом уровне интегрировать в приложение необходимые возможности по управлению безопасностью.

Создание безопасной архитектуры требует хорошего понимания программной среды в которой будет использоваться приложение. Наиболее важными факторами для создания безопасной архитектуры программной системы являются точки входа, потенциальные угрозы возможных для атаки и пользователи.

Моделирование угроз становится важным этапом в процессе разработки программного обеспечения. Моделирование угроз представляет собой структурированный способ анализа среды приложения с точки зрения возможных опасностей, классификации угроз и выработке решений относительно механизмов их смягчения. При таком подходе решения относительно технологий безопасности (таких как аутентификация и шифрование) всегда имеет действительное основание — потенциальную угрозу.

Оригинальной особенностью в LightSwitch является то, что добавление возможностей по обеспечению секретности возможно на любом этапе разработки приложения LightSwitch, что обеспечивается его эффективной архитектурой. Часто в рамках других технологий ошибки на этапе планирования приложения и недостаточный учет требований по безопасности либо существенно снижают защищенность приложения, либо требуют существенных изменений его архитектуры

В приложениях LightSwitch стандартным подходом является первоначальная разработка приложения для всех сценариев его использования со всеми необходимыми экранами и запросами, а затем определение различных групп пользователей, определение доступных им возможностей и назначение необходимых прав доступа.

Однако, даже несмотря на особенности LightSwitch планирование безопасности должно выполняться на как можно более раннем этапе, так как это важная часть архитектуры приложения. Можно рекомендовать следующую последовательность действий по разработке приложений LightSwitch с учетом обеспечения безопасности доступа.

Необходимо определить и описать те роли, которые будут доступны в приложении.

  • определить экраны, которые будут доступны для каждой роли;
  • определить объекты, различные действия с которыми будут доступны для той или иной роли;
  • определить механизмы хранений лог файлов аудита для приложения;
  • определить критерии доступности данных, если необходимо обеспечить доступ только к определённым записям, или для различных ролей доступны различные группы записей.

Рассмотрим пример возможного распределения ролей для реализации управления оценками Студентов приведен в таблице 18.1 .

Таблица 18.1. Пример определения прав доступа для ролей
Вид роли Права доступа
Администратор Имеет доступ ко всей информации размещенной в проекте, может создавать, удалять и изменять любые объекты и информацию в любых таблицах.
Преподаватель Может просматривать информацию по дисциплинам и вносить и изменять информацию об оценках.
Студент Может просматривать информацию, которая относится только к нему. Никакую информацию не может изменять или дополнять, вся информация предоставляется только для чтения

Контроль доступа является одним из важных элементов защиты приложения. Сложность механизмов контроля доступа должна быть в паритете с ценностью информации, то есть чем более важной или ценной информация является, тем более сложным нужны механизмы контроля доступа.

Для эффективной реализации указанных механизмов безопасности необходимо использовать правильную терминологию, принятую в информационных системах. Рассмотрим основные термины и их использование в Light Switch.

Для бизнес-приложений основные задачи по защите имеют общий характер. На первом этапе необходимо аутентифицировать пользователей. Механизм аутентификации позволяет определить, кто будет использовать приложение. Затем, когда известно, кто работает с приложением, понадобится решить, какие операции данный пользователь может выполнять и к каким ресурсам он имеет право обращаться. Это обеспечивает авторизация. Когда пользователь работает с приложением, необходимо гарантировать, что никто другой не сможет видеть важные данные, которые он обрабатывает. Возникает, необходимость шифровать канал между клиентом и сервером. Данные возможности обеспечивают механизмы конфиденциальности. И последнее, необходимо гарантировать, что данные, передаваемые между клиентом и сервером, не изменяются в результате неавторизованного вмешательства и данные в базе сохраняют свою целостность.

Рассмотрим более подробно данные механизмы.

Аутентификация это процесс точной идентификации пользователя приложением. В более общем виде проверка принадлежности субъекту доступа предъявленного им идентификатора; подтверждение подлинности. Один из способов аутентификации в компьютерной системе состоит во вводе вашего пользовательского идентификатора, называемого "логином" и пароля — некой конфиденциальной информации.

Получив введенный пользователем логин и пароль, приложение сравнивает их со значением, которое хранится в специальной базе данных и, в случае совпадения, пропускает пользователя в систему. Тем самым подтверждается, что вошедший пользователь является обладателем данного логина и обеспечивается его аутентификация.

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

Также может быть использована расширенная или многофакторная аутентификация. Она построена на использовании нескольких компонент, таких как: информация, которую пользователь знает (пароль), использовании физических компонентов (например, идентификационные брелоки или смарт-карты), и технологии идентификации личности (биометрические данные).

В LightSwitch при создании нового проекта механизмы аутентификации по умолчанию отключены. Для их включения необходимо перейти в свойства проекта и на вкладке Контроль доступа выбрать один из возможных механизмов аутентификации.

После включения аутентификации при запуске приложения перед отображением первого экрана будет запрошен логин пользователя и пароль, что позволит приложению аутентифицировать пользователя. Результатом любого вида аутентификации является передача пользовательского токена, который является внутренним идентификатором пользователя для приложения. Этот токен содержит информацию об имени пользователя и системную информацию подтверждающую, что он получен легальным способом и программа может ему доверять.

Если в LightSwitch используется тип проверки подлинности Windows, то для аутентификации будет использоваться информация, которую пользователь вводил при входе в систему. При этом LightSwitch использует токен из учетной записи Windows и добавляет информации о роли и соответствующих роли разрешениях.

Если используется проверка подлинности с использованием форм, то вся информация о пользователях хранится в специальной базе данных приложения и при его запуске отображается окно регистрации. После входа в приложение создается токен, который и содержит информацию для контроля доступа.

Также можно использовать опцию Не включать проверку подлинности, в этом случае приложение запускается без необходимости авторизоваться и используется токен по умолчанию, который обеспечивает доступ ко всем операциям. В этом режиме возможно установить определенные ограничения на использование экранов или других объектов, но эти ограничения должны основываться на другой чем логин и пароль базе, например можно использовать временные интервалы, тогда в определенные часы доступ к определенным функциям будет невозможен.

Авторизация представляет собой процесс подтверждения и предоставления определенному лицу прав на выполнение некоторых действий. В бизнес-приложениях различные типы авторизации используются на разных уровнях приложения:

  • На самом верхнем уровне можно проверять идентичность пользователя и определять, может ли он продолжать работу с приложением.
  • На среднем уровне можно настроить LightSwitch так, чтобы запрещать доступ к определенным экранам для определенных пользователей или ролей.
  • На еще более низком уровне, когда приложение выполняет различные системные задачи, такие как подключение к базе данных, открытие файла, запись в журнал событий операционная система Windows проверяет права учетной записи, от имени которой выполняется данный код.

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

Шифрование используется для защиты коммуникаций (передачи данных через сеть). Например, если приложение оперирует с номерами кредитных карт или другой важной бизнес-информацией, то необходимо усилить безопасность хранения номеров кредитных карт, используемых в системе электронной коммерции. Стандартный подход к решению этой проблемы предусматривает применение SSL. Кроме того, SSL реализует цифровые подписи для обеспечения гарантии целостности. SSL не реализован ASP.NET, а является средством, предоставляемым IIS. Код веб-страницы (или веб-службы) не зависит от того, используется SSL или нет.

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

Разрешение это наименьшая единица действий, которая может быть доступна или запрещена пользователю. В LightSwitch объект разрешений имеет имя и всегда можно проверить, кто из пользователей имеет разрешение с указанным именем. Для пользователеля устанавливаются доступные ему разрешения при входе в приложение. Разрешение Security Administration является предустановленным и определяет, что текущий пользователь имеет доступ к экранам настройки администрирования. Остальные разрешения необходимо явно указывать, при этом для каждой сущности можно определить роли, из которых будут доступны определенные операции над этой сущностью.

Разрешения устанавливаются не для отдельных пользователей, а для ролей. Такой подход позволяет более эффективно управлять возможными разрешениями. Пользователи группируются в роли в соответствии с их функциями внутри системы. При этом возможны следующие виды действий:

  • Разрешения, необходимые для выполнения определенных задач, объединяются в одну роль. Каждая роль может либо не иметь никаких разрешений, либо иметь их одно или несколько.
  • Пользователь может относиться к одной или нескольким ролям. Общие разрешения пользователя получаются объединением всех разрешений для ролей к которым он относится.

На основе установленных разрешений определяются методы контроля доступа, которые подставляют собой обработчики событий. Они генерируют события когда LightSwitch пытается выполнить некоторую операцию и определяют возможность выполнения данной операции текущим пользователем.

По умолчанию, если в обработчике события нет кода, то считается, что действие доступно пользователю. Для реализации механизмов контроля необходимо записать пользовательский код в программу. В этом коде можно проверить имеющиеся у пользователя разрешения и на этой основе принять решение о возможности выполнения операции. Например, указанный код проверяет, что текущий пользователь имеет разрешения SecurityAdministration, если это так, что разрешается дальнейшее выполнение программы.

partial void ProjectAuditLog_CanRun(ref bool result)
{
result = User.HasPermission(Permissions.SecurityAdministration);
}