Я ищу наилучшую практику сквозной аутентификации для внутренних веб-приложений на уровне базы данных.
Самый распространенный сценарий, который я видел, - это использование одной учетной записи SQL с разрешениями, установленными для того, что требуется приложению. Эта учетная запись используется всеми вызовами приложения. Затем, когда людям требуется доступ к базе данных с помощью инструментов запросов или такая отдельная группа создается с доступом к запросу, и людям предоставляется доступ к этой группе.
Другой сценарий, который я видел, заключается в использовании полной сквозной аутентификации Windows. Таким образом, сами пользователи добавляются в группы, для которых установлены все разрешения, чтобы пользователь мог обновлять и изменять параметры приложения. Обычно это включает в себя обеспечение пользователей соответствующими хранимыми процедурами, чтобы они не обновляли таблицы напрямую.
Первый сценарий, кажется, относительно легко поддерживать, но вызывает опасения, если в приложении есть дыра в безопасности, тогда вся база данных взломана.
Второй сценарий кажется более безопасным, но его противоположная задача заключается в том, чтобы использовать много бизнес-логики в хранимых процедурах в базе данных. Это, кажется, ограничивает использование некоторых действительно крутых технологий, таких как Nhibernate и LINQ. Однако в наше время, когда люди могут использовать данные самыми разными способами, мы не предвидим, например, мэш-апы и т. д. это лучший подход.