1

Я развертываю базу данных ASP.NET и базу данных SQL Server (2008) на сервере в реальном времени (производства). Физический сервер работает как с SQL Server 2008, так и с IIS 7 - он предоставляется хостинговой компанией и составляет , но не является частью нашей внутренней сети.ASP.NET Application Connection String и безопасность и разрешения SQL Server

У меня есть пара вопросов, касающихся безопасности базы данных и строки подключения для приложения ASP.NET.

Раньше я хотел бы создать пользователь базы данных и указать т.д. разрешения SELECT/INSERT для каждой таблицы - но проблема в том, что есть 50+ таблицы в этой базе данных, таким образом это займет много времени ,

Для каждого приложения требуется приложение SELECT/INSERT/DELETE/UPDATE.

  • Есть ли лучший способ, чем с указанием прав доступа для каждой таблицы индивидуально?
  • Есть ли эквивалент встроенной безопасности для веб-сервера в реальном времени - каковы недостатки?
  • Или есть способ повышения прав доступа для конкретного пользователя для полного доступа к конкретной базе данных

Кроме того, как бы изменение строки соединения?

Я просто искал какой-то эксперт советы, просто кто-то мне точку в правильном направлении и ссылку на какой-документации о том, как достичь лучшего способа сделать это.

Большое спасибо.

ответ

1

У вас есть по существу три несвязанных вопроса в вашем списке пули, а не один.

  • Первый вариант лучше подходит для ServerFault.com, так как он имеет дело с SQL Server, не обязательно вопрос программирования.
  • Для второго, Integrated Security, да, есть способ использования интегрированной безопасности с ASP.NET. См. Эту статью: http://msdn.microsoft.com/en-us/library/bsz5788z.aspx
    • Самый большой недостаток заключается в том, что его больше настроить. это нестандартная (но поддерживаемая) конфигурация, поэтому программисты по обслуживанию, возможно, раньше не видели настройки.
    • Также, если вы это делаете, могут возникнуть проблемы с безопасностью, если вы используете учетную запись с разрешениями в другом месте. Обязательно соблюдайте принцип наименьших привилегий.Лучше всего создать учетную запись домена специально для каждого веб-сайта, поэтому, если вы станете жертвой компрометации, она ограничит ущерб, который может быть нанесен. Вы знаете, что ваши проблемы безопасности лучше, чем я, поэтому это может быть или не быть релевантным советом, но это нужно учитывать.
    • Наконец, (и это, вероятно, слишком очевидно, чтобы указать) было бы глупо использовать UserId реального человека. Если этот человек покинет компанию и их учетная запись будет удалена, веб-сайт, очевидно, сломается.
  • Теперь, когда я нашел ответ на первый вопрос, третий становится спорным.
+0

http://msdn.microsoft.com/en-us/library/bsz5788z.aspx - Если ваше приложение работает в интрасети на базе Windows - это для веб-сайтов интрасети? –

+0

Да. что было бы необходимо для Windows Integrated security *** IF *** сервер SQL находится на другом сервере. Вам нужен источник разрешения, которым доверяют БД и веб-сайт. Если SQL Server находится на том же компьютере, что и веб-сервер, вы можете использовать локальную учетную запись, настроенную на компьютере. Большинство сайтов имеют БД на другом сервере, хотя для производительности, если ничего больше – David

+0

Спасибо за вашу помощь, в моем случае IIS и SQL Server работают на одном компьютере - возможно установить интегрированную защиту для этого ASP. NET на этом сервере? Это внешний/общедоступный веб-сервер. Насколько это сложно? Вы говорите, что для этого требуется создать заблокированную учетную запись пользователя на сервере? –

1

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

См http://msdn.microsoft.com/en-us/library/ms189121%28v=sql.105%29.aspx

Эта статья также связана с тем, как вы могли бы поднять разрешения пользователя.

Integrated security будет работать - он просто требует, чтобы логин, используемый на компьютере, который делает соединение, распознавался сервером базы данных (в том же или в доверяющем домене Windows).

+0

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

+0

В типичных ситуациях вы правы. См. Http://stackoverflow.com/questions/651531/windows-authentication-for-intranet-internet для получения дополнительной информации о нестандартных конфигурациях, которые могут позволить работать даже в интернет-сценарии. – Shawn