SQL Server, Internet Information Server и механизм ASP.NET предоставляют надежные модели безопасности, которые хорошо работают вместе. Чтобы обеспечить безопасность пользовательских данных и приложений, Microsoft также устанавливает для параметров по умолчанию для каждой службы довольно низкие значения.
Проблема, с которой сталкивается большинство разработчиков, заключается в том, как использовать SQL Server, IIS и ASP.NET для установки соответствующего уровня доверия между приложениями и данными, не оставляя брешей в безопасности, которые могут быть легко скомпрометированы другими. Поскольку задействованы три типа служб (SQL Server, IIS и ASP.NET), необходимо предпринять три ключевых шага для обеспечения безопасности решения. В этом разделе обсуждается один из наиболее распространенных (и надежных) методов установки адекватных разрешений и уровней доверия для веб-приложений.
Определите пользовательскую учетную запись пользователя IIS DotNetKB
Самый безопасный способ защитить ваше веб-приложение — определить специального пользователя с ограниченными разрешениями, а затем настроить IIS для запуска от имени пользовательского пользователя при выполнении вашего веб-приложения. Это довольно легко реализовать, и это гарантирует, что каждый посетитель вашего веб-приложения будет иметь только те разрешения, которые вы ему хотите.
Первым шагом является создание нового пользователя Windows (в данном примере называемого DotNetKB), установка для него надежного пароля, а затем добавление его в гостевую группу Windows (гостевую группу Windows). Кроме того, убедитесь, что установлены флажки «Пароль никогда не истекает» и «Пользователь не может изменить пароль». Это создаст пользователя с ограниченными привилегиями, которого вы сможете использовать в качестве удостоверения при запуске вашего веб-приложения в IIS (см. рис. 1).
Затем позвоните администратору Internet Information Server и выберите веб-приложение, в котором размещены эти страницы. В этом примере вы можете выбрать веб-приложение (DotNetKB_WebSite), на котором размещена созданная ранее тестовая страница. Щелкните правой кнопкой мыши веб-приложение в древовидном представлении и выберите «Свойства...» в контекстно-зависимом меню. Затем выберите «Безопасность каталога» и нажмите кнопку «Изменить» в разделе «Анонимный доступ и контроль аутентификации» диалогового окна. Наконец, введите собственное имя пользователя (DotNetKB), снимите флажок «Разрешить IIS управлять паролем» и введите пароль для пользовательской учетной записи пользователя. После завершения всей этой работы нажмите кнопку ОК, чтобы сохранить эти изменения в базе данных конфигурации IIS (см. рис. 2).
[Вырезанная страница]
На этом этапе IIS будет работать под пользовательской учетной записью с ограниченными разрешениями. Любой посетитель, посещающий веб-страницы вашего приложения, будет работать как этот настраиваемый пользователь и будет иметь разрешения на аутентификацию только для этого настраиваемого пользователя.
Авторизуйте учетную запись пользователя DotNetKB для доступа к SQL Server.
Затем вам необходимо предоставить пользовательскому пользователю соответствующие разрешения на доступ к базе данных (DotNetKB). Для этого вы можете использовать Microsoft SQL Server Enterprise Manager или написать собственный сценарий для создания такого пользователя и предоставления ему доступа к определенным объектам. В этой статье описывается, как это сделать с помощью SQL Server Enterprise Manager.
Примечание. Хотя Visual Studio .NET 2003 имеет множество мощных интегрированных функций, совместимых с SQL Server, она не обеспечивает простого управления пользователями и разрешениями пользователей из Visual Studio .NET 2003. В крупных организациях и группах эти сложные задачи обычно выполняются администраторами баз данных. Таким образом, после запуска SQL Server Enterprise Manager вы можете выполнить следующие шаги, чтобы добавить в базу данных пользовательского пользователя (DotNetKB).
· В древовидном представлении слева разверните узел, чтобы отобразить базу данных DotNetKB. На моем компьютере древовидное представление имеет следующую структуру: Корневая группа SQL-серверов консоли (LOCAL) (Windows NT) Базы данных DotNetKB.
·Затем щелкните правой кнопкой мыши узел «Пользователи» под базой данных и выберите «Новый пользователь базы данных…» (Новый пользователь базы данных…). Когда появится диалоговое окно «Свойства пользователя базы данных — Новый пользователь», выберите (<Новый>) в раскрывающемся списке Имя для входа.
· Когда появится диалоговое окно «Свойства входа в систему SQL Server — Новое имя входа», выберите вкладку «Общие» и введите DotNetKB в поле ввода «Имя». Убедитесь, что выбран переключатель «Аутентификация Windows», и выберите имя компьютера, на котором находится пользовательская учетная запись, в раскрывающемся списке «Домен». Затем выберите DotNetKB в раскрывающемся списке «База данных».
·Теперь выберите вкладку «Базы данных», найдите базу данных DotNetKB в списке вверху диалогового окна и выберите ее. Затем убедитесь, что в списке внизу диалогового окна выбрана общедоступная роль. Наконец, нажмите кнопку «ОК» в нижней части диалогового окна, чтобы сохранить изменения.
Затем вам необходимо добавить разрешения на выполнение для всех хранимых процедур и пользовательских функций в базе данных DotNetKB. Для этого вам нужно всего лишь предоставить разрешения публичной роли. Вы можете предоставить разрешения пользователям DotNetKB, что облегчит будущие входы в систему (когда эти пользователи получат доступ к DotNetKB) для выполнения хранимых процедур без необходимости добавлять новые разрешения для каждого пользователя.
Ниже приведены шаги по предоставлению разрешений на выполнение хранимым процедурам и функциям в базе данных DotNetKB:
·Выделите узел «Пользователи» в базе данных DotNetKB в древовидном представлении, чтобы отобразить список пользователей этой базы данных. Найдите пользователя DotNetKB и дважды щелкните его, чтобы открыть диалоговое окно «Свойства пользователей базы данных».
· Выделив общедоступную роль, нажмите кнопку «Свойства...», чтобы открыть диалоговое окно «Свойства роли базы данных». Затем нажмите кнопку «Разрешения...», чтобы отобразить список объектов базы данных и настроек разрешений.
Выбрав общедоступную роль в раскрывающемся списке Роль базы данных в верхней части диалогового окна, найдите все хранимые процедуры и пользовательские функции, определенные для этой базы данных (возможно, вам придется развернуть диалоговое окно, чтобы увидеть полные имена), и убедитесь, что Установите флажок ВЫПОЛНИТЬ рядом с каждым элементом. Вы можете обнаружить, что на некоторых системных объектах установлены другие флажки, не меняйте эти параметры.
· Наконец, после установки всех разрешений EXECUTE, нажмите кнопку «ОК», чтобы сохранить изменения и закрыть диалоговое окно. Нажимайте кнопку «ОК» один за другим, пока все диалоговые окна не закроются.
На этом этапе вы создали специального пользователя для IIS и установили соответствующие разрешения пользователя в SQL Server. Теперь вам необходимо внести изменения в конфигурацию веб-проекта ASP.NET, чтобы гарантировать, что ASP.NET использует одну и ту же учетную запись пользователя для всех вызовов SQL Server.
Настройте приложение ASP.NET для олицетворения пользователей DotNetKB
Последним шагом в создании надежной конфигурации веб-приложения ASP.NET, работающего под управлением IIS, является настройка веб-приложения ASP.NET так, чтобы оно могло принимать идентификатор пользователя Windows из IIS и использоваться для доступа к другим ресурсам операционной системы. . Для этого вам нужно всего лишь ввести строку кода в корневой файл web.config.
Измененный файл web.config выглядит следующим образом:
<конфигурация>
<система.веб>
...другие элементы...
<identity impersonate="true"/> <!-- Предполагается идентификатор пользователя IIS -->
...другие элементы...
</система.веб>
</конфигурация>
Обратите внимание, что вы просто добавляете элемент и устанавливаете для атрибута макета значение true. Вам не нужно вводить учетную запись пользователя или пароль, поскольку эту информацию предоставит IIS. То есть, даже если другие люди смогут прочитать ваш файл конфигурации, они не смогут определить, какие учетные данные используются для выполнения вашего веб-приложения.
На этом этапе вы создали пользовательского пользователя и установили для него соответствующие разрешения на доступ к SQL Server и IIS.
На этом этапе IIS будет работать под пользовательской учетной записью с ограниченными разрешениями. Любой посетитель, посещающий веб-страницы вашего приложения, будет работать как этот настраиваемый пользователь и будет иметь разрешения на аутентификацию только для этого настраиваемого пользователя.
Авторизуйте учетную запись пользователя DotNetKB для доступа к SQL Server.
Затем вам необходимо предоставить пользовательскому пользователю соответствующие разрешения на доступ к базе данных (DotNetKB). Для этого вы можете использовать Microsoft SQL Server Enterprise Manager или написать собственный сценарий для создания такого пользователя и предоставления ему доступа к определенным объектам. В этой статье описывается, как это сделать с помощью SQL Server Enterprise Manager.
Примечание. Хотя Visual Studio .NET 2003 имеет множество мощных интегрированных функций, совместимых с SQL Server, она не обеспечивает простого управления пользователями и разрешениями пользователей из Visual Studio .NET 2003. В крупных организациях и группах эти сложные задачи обычно выполняются администраторами баз данных. Таким образом, после запуска SQL Server Enterprise Manager вы можете выполнить следующие шаги, чтобы добавить в базу данных пользовательского пользователя (DotNetKB).
· В древовидном представлении слева разверните узел, чтобы отобразить базу данных DotNetKB. На моем компьютере древовидное представление имеет следующую структуру: Корневая группа SQL-серверов консоли (LOCAL) (Windows NT) Базы данных DotNetKB.
·Затем щелкните правой кнопкой мыши узел «Пользователи» под базой данных и выберите «Новый пользователь базы данных…» (Новый пользователь базы данных…). Когда появится диалоговое окно «Свойства пользователя базы данных — Новый пользователь», выберите (<Новый>) в раскрывающемся списке Имя для входа.
· Когда появится диалоговое окно «Свойства входа в систему SQL Server — Новое имя входа», выберите вкладку «Общие» и введите DotNetKB в поле ввода «Имя». Убедитесь, что выбран переключатель «Аутентификация Windows», и выберите имя компьютера, на котором находится пользовательская учетная запись, в раскрывающемся списке «Домен». Затем выберите DotNetKB в раскрывающемся списке «База данных».
·Теперь выберите вкладку «Базы данных», найдите базу данных DotNetKB в списке вверху диалогового окна и выберите ее. Затем убедитесь, что в списке внизу диалогового окна выбрана общедоступная роль. Наконец, нажмите кнопку «ОК» в нижней части диалогового окна, чтобы сохранить изменения.
Затем вам необходимо добавить разрешения на выполнение для всех хранимых процедур и пользовательских функций в базе данных DotNetKB. Для этого вам нужно всего лишь предоставить разрешения публичной роли. Вы можете предоставить разрешения пользователям DotNetKB, что облегчит будущие входы в систему (когда эти пользователи получат доступ к DotNetKB) для выполнения хранимых процедур без необходимости добавлять новые разрешения для каждого пользователя.
Ниже приведены шаги по предоставлению разрешений на выполнение хранимым процедурам и функциям в базе данных DotNetKB:
·Выделите узел «Пользователи» в базе данных DotNetKB в древовидном представлении, чтобы отобразить список пользователей этой базы данных. Найдите пользователя DotNetKB и дважды щелкните его, чтобы открыть диалоговое окно «Свойства пользователей базы данных».
· Выделив общедоступную роль, нажмите кнопку «Свойства...», чтобы открыть диалоговое окно «Свойства роли базы данных». Затем нажмите кнопку «Разрешения...», чтобы отобразить список объектов базы данных и настроек разрешений.
Выбрав общедоступную роль в раскрывающемся списке Роль базы данных в верхней части диалогового окна, найдите все хранимые процедуры и пользовательские функции, определенные для этой базы данных (возможно, вам придется развернуть диалоговое окно, чтобы увидеть полные имена), и убедитесь, что Установите флажок ВЫПОЛНИТЬ рядом с каждым элементом. Вы можете обнаружить, что на некоторых системных объектах установлены другие флажки, не меняйте эти параметры.
· Наконец, после установки всех разрешений EXECUTE, нажмите кнопку «ОК», чтобы сохранить изменения и закрыть диалоговое окно. Нажимайте кнопку «ОК» один за другим, пока все диалоговые окна не закроются.
На этом этапе вы создали специального пользователя для IIS и установили соответствующие разрешения пользователя в SQL Server. Теперь вам необходимо внести изменения в конфигурацию веб-проекта ASP.NET, чтобы гарантировать, что ASP.NET использует одну и ту же учетную запись пользователя для всех вызовов SQL Server.
Настройте приложение ASP.NET для олицетворения пользователей DotNetKB
Последним шагом в создании надежной конфигурации веб-приложения ASP.NET, работающего под управлением IIS, является настройка веб-приложения ASP.NET так, чтобы оно могло принимать идентификатор пользователя Windows из IIS и использоваться для доступа к другим ресурсам операционной системы. . Для этого вам нужно всего лишь ввести строку кода в корневой файл web.config.
Измененный файл web.config выглядит следующим образом:
<конфигурация>
<система.веб>
...другие элементы...
<identity impersonate="true"/> <!-- Предполагается идентификатор пользователя IIS -->
...другие элементы...
</система.веб>
</конфигурация>
Обратите внимание, что вы просто добавляете элемент и устанавливаете для атрибута макета значение true. Вам не нужно вводить учетную запись пользователя или пароль, поскольку эту информацию предоставит IIS. То есть, даже если другие люди смогут прочитать ваш файл конфигурации, они не смогут определить, какие учетные данные используются для выполнения вашего веб-приложения.
На этом этапе вы создали пользовательского пользователя и установили для него соответствующие разрешения на доступ к SQL Server и IIS.