none
IIS7 + приложение ASP.NET Dynamic Data + MS SQL Server 2000 - Аудит действий пользователей с использованием триггеров. RRS feed

  • Вопрос

  • Здравствуйте.

    Дано:
    IIS7 on Windows 2008 Server R2 EE 
    MS SQL SERVER 2000 on Windows 2003 Server R2 EE
    Приложение ASP.NET

    Вопрос.
    Приложение на ASP.NET Dynamic Data разработано без учета аудита пользовательских действий(большое внимание уделялось лишь приведению базы к 3НФ). Хотелось бы записывать в отдельную таблицу что и какой пользователь добавил или отредактировал. Этот аппарат хотелось бы организовать за счет использования триггеров. 

    В данной архитектуре с использованием windows аутентификации или basic аутентификации плюс Integrated Connection=True в ConnectionString все действия(insert,update,delete) происходят от учетной записи компьютера с IIS 7(смотрел в EM в процессах). Мне бы хотелось вести аудит именно тех действий и пользователей, которые изменяют данные.

    Я перепробовал уже все. В том числе, если включить ASP.NET Impersonation + Windows Authentication + настроить делегирование в Active Directory - в результате ошибка - login failed for user (null).

    Как в таком случае поступить с аудитом?

    Заранее спасибо.

     

     

    Impersonation/Delegation

    To impersonate the original caller in ASP.NET, the simplest approach is to use Windows authentication to authenticate callers and for you to setimpersonate="true" on the <identity> element in Web.config as shown here.

    <configuration>
     <system.web>
     <authentication mode="Windows"/>
     <identity impersonate="true"/>
     ...
     </system.web>
    </configuration>
     

    If your database is on a remote server, you must also configure the relevant accounts in Active Directory for delegation. For example, you must ensure that your application's service account is marked as Trusted for delegation and that end user accounts are not marked as sensitive, which means that they cannot be delegated.

    Последнее не понял. У меня есть сам контент(папка, где расположены запускаемые файлы). Далее этот контент находится под управлением приложения DefaultAppPool. DefaultAppPool запускается от имени ApplicationPoolIdentity. Судя по msdn мне нужно запустить приложение от, например, доменного пользователя, и в свойствах этого пользователя должно быть установлено доверие.

    Делаю все по msdn. default.aspx открывается. Далее открываю таблицу. 

    Ошибка.  Login failed for user '(null)'. Reason: Not associated with a trusted SQL Server connection.

    На SQL Server - Mixed Authen.

    4 февраля 2011 г. 16:59

Ответы

  • Если организация аудита изменений записей БД должна лечь на плечи прикрученных к табличкам триггеров с использованием контекста безопасности подключенного к БД пользователя, то в приложении аутентификация Windows + заимствование прав ASP.NET, имхо, самый лучший и быстрый вариант.

    login failed for user (null) говорит о том, что SQL Server не получает информации об аутентифицируемом пользователе, и скорее всего, не срабатывает именно делегирование. Не обязательно настраивать пул IIS под доменную учетку, если оно не надо вашему приложению, - делегировать можно и компьютерные аккаунты + имеет значение в каком контексте безопасности работает сам SQL Server.

    Почитайте http://msdn.microsoft.com/en-us/library/ms998355.aspx там детально описана настройка делегирования и протоколов для разных типов аутентификации в приложении ASP.NET


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.
    16 февраля 2011 г. 11:12
    Модератор

Все ответы

  • Если организация аудита изменений записей БД должна лечь на плечи прикрученных к табличкам триггеров с использованием контекста безопасности подключенного к БД пользователя, то в приложении аутентификация Windows + заимствование прав ASP.NET, имхо, самый лучший и быстрый вариант.

    login failed for user (null) говорит о том, что SQL Server не получает информации об аутентифицируемом пользователе, и скорее всего, не срабатывает именно делегирование. Не обязательно настраивать пул IIS под доменную учетку, если оно не надо вашему приложению, - делегировать можно и компьютерные аккаунты + имеет значение в каком контексте безопасности работает сам SQL Server.

    Почитайте http://msdn.microsoft.com/en-us/library/ms998355.aspx там детально описана настройка делегирования и протоколов для разных типов аутентификации в приложении ASP.NET


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.
    16 февраля 2011 г. 11:12
    Модератор
  • Все получилось. Действительно не срабатывало делегирование. Следовал инструкциям в соответствии с документом по указанной ссылки. Все работает. Большое спасибо.
    20 апреля 2011 г. 3:52