2009-02-05 3 views
0

Для моего сайта asp.net с проверкой подлинности форм я буду использовать встроенную защиту Windows для доступа к базе данных sql. Я дам разрешения БД для службы ASPNET или NETWORK. В каких обстоятельствах я бы использовал проверку подлинности SQL?sql authentication или Windows auth

ответ

3

Используйте SQL Auth, если вам нужны компьютеры, отличные от Windows, для создания соединения с БД.

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

+0

На самом деле это не совсем правильно, вы можете использовать проверку подлинности Windows, если вы пересекаете домены, это требует немного дополнительной настройки. – kemiller2002

+0

Вы правы. Благодарю. –

4

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

+0

, если на его окнах размещен веб-сайт, который обращается к базе данных, которая не имеет значения? – zsharp

+0

Этого недостаточно. Интернет-провайдер также должен будет разрешить проверку подлинности Windows по отношению к базе данных, и во многих случаях они этого не делают, а это значит, что вам все равно придется использовать проверку подлинности SQL, даже если ваш сайт размещен в Windows. –

+0

с VPS? Я считаю, что вы можете использовать интегрированную суматоху. – zsharp

2

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

Также, как сказал Корбин, если клиенты не работают с ОС Windows, вы не можете использовать проверку подлинности Windows (очевидно).

3

Действительно, вы используете аутентификацию SQL, если вы не можете использовать проверку подлинности Windows. По-моему, это единственный раз. Аутентификация Windows более безопасна и может централизованно управляться в местах, где используется Active Directory. Если у вас есть люди, которые действительно знают, как управлять Active Directory, и вы находитесь в среде Windows, нет веских оснований для использования аутентификации sql.

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

У вас есть дополнительные шаги по защите информации о строках соединения, поскольку пароли и т. Д. Должны быть зашифрованы при сохранении в файлах конфигурации. Во всем мире есть намного больше шагов, которые можно эффективно и безопасно использовать с помощью аутентификации Sql Server, а не Windows Authentication. Это особенно верно, если одни и те же учетные данные сервера sql используются для доступа к нескольким базам данных на нескольких серверах.

+1

Я согласен с этим сообщением 99%, но думаю, что есть еще одна ситуация, когда аутентификация SQL имеет смысл. При использовании сайтов с высоким трафиком один вход в SQL-приложение использует более эффективный пул соединений. Однако, как отмечено, он, как правило, менее безопасен. – JohnFx

+0

Да, но я уверен, что вы можете использовать пул соединений с учетной записью с аутентификацией Windows, если вы используете учетную запись процесса asp.net, а не отдельный пользователь, прошедший проверку подлинности. – kemiller2002

1

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

1

Это зависит. Если вы разрабатываете домашнее веб-приложение и сетевые ИТ-специалисты находятся по коридору, используйте проверку подлинности Windows. Если вы развертываете свое приложение для клиентов и не имеете контроля над своей сетевой инфраструктурой, я бы использовал проверку подлинности SQL.

1

Если у вас нет контроля над Active Directory (как в размещенной ситуации) или есть пользователи с операционных систем, отличных от Windows, у вас нет выбора.

Нужно ли создавать учетные записи пользователей на лету с помощью какого-то скрипта? Это проще сделать для пользователя sql, чем Active Directory (возможно, это невозможно).

1

Помимо всего вышесказанного, рассмотрим случай, как это:

Счет вы должны использовать от домена А. База данных на домен B. домена A и B домена не имеют отношения доверия ,

Для этой ситуации вам понадобится аутентификация SQL. Надеюсь, это поможет.

(Чтобы добавить дополнительную ясность): база данных НЕ зарегистрирована в активном каталоге. Тогда не стоит использовать проверку подлинности Windows.