Наша текущая интранет-среда немного устарела. Текущий стек имеет приложения ASP.NET 1.1 / 2.0, которые выполняют запросы к базе данных SQL 2000.
Для обеспечения безопасности ролей на серверах есть группы пользователей, в которые добавляются пользователи (поэтому необходимо добавить их в группу на тестовом и производственном компьютере). Эти группы пользователей синхронизируются в роли пользователя на самом SQL 2000. Роли получают разрешения на выполнение хранимых процедур по мере необходимости для предотвращения любых нарушений доступа.
На уровне веб-приложений мы используем базовую аутентификацию (которая аутентифицируется в нашей Active Directory) и включаем олицетворение личности. Строка подключения к базе данных использует встроенную безопасность. Это создает среду, в которой веб-приложение подключается к базе данных при входе пользователя в систему, что обеспечивает безопасность базы данных при вызове хранимых процедур. Это также позволяет нам использовать типичный метод User.IsInRole () для выполнения авторизации внутри самого приложения.
Есть несколько проблем с этим. Во-первых, только наши администраторы сервера имеют доступ к группам пользователей на компьютере, поэтому обновление безопасности ролей или добавление дополнительных пользователей не в руках администраторов приложений. Кроме того, единственный способ получить роль - это вызвать процедуру SQL под названием «xp_logininfo», которая заблокирована в SQL 2005. Хотя я не знаю всех подробностей, наш администратор БД говорит, что эта общая модель не играет хорошо с SQL 2005, учитывая характер схем в более новой версии.
Мы находимся сейчас в точке, когда мы готовы обновить нашу среду. Мы пишем приложения .NET 3.5 для более эффективного использования AJAX, а SQL Server 2005 является основной средой для нашей базы данных. Мы также стремимся обновить модель безопасности, чтобы сделать ее более гибкой для администраторов приложений и потенциально использовать больше Active Directory.
Одна из проблем, с которыми мы сталкиваемся, заключается в том, что данный пользователь, скорее всего, будет иметь доступ к нескольким приложениям, поэтому наличие какого-либо централизованного решения является оптимальным, поэтому мы можем легко удалять пользователей при необходимости.
Что считается наилучшей практикой для поддержания безопасности ролей в такой среде?