Какой самый безопасный способ для приложения для подключения / проверки подлинности к SQL Server 2008 R2? - PullRequest
1 голос
/ 09 июня 2011

Предположим, что у нас есть развернутое в сети настольное приложение, написанное на .NET.Мы не хотим, чтобы какие-либо пользователи (кроме администраторов) могли манипулировать данными вне приложения.Например, обычные пользователи не должны иметь возможность использовать SQL Server Management Studio для изменения / чтения данных.

Я знаю 3 способа аутентификации на SQL Server, но какой из них будет наиболее безопасным в этой ситуации?

1) Аутентификация Windows (Trusted Connection) - аутентификация выполняется на основе учетной записи пользователя Windows, что означает, что мы не можем ограничить доступ только к приложению.SSMS может использоваться любым пользователем Windows, у которого есть права доступа к БД.

2) Аутентификация SQL Server (пользователь / пароль) - мы можем создать один логин для приложения, который не привязан к какому-либо конкретному пользователю, ноИмя пользователя / пароль должны храниться и использоваться приложением, что, насколько я понимаю, затрудняет (может быть, невозможно) их полную защиту.

3) Использование Approle - Имеет ту же проблему, что и # 2при этом пароль должен храниться приложением.

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

Ответы [ 3 ]

3 голосов
/ 09 июня 2011

# 1 - самый безопасный подход.

Преимущества и недостатки

1 голос
/ 06 марта 2013

Существует два основных способа управления безопасностью.Вы можете разрешить приложению выполнять определенные функции и использовать одного пользователя (домен, локальный компьютер, SQL) или роль приложения, с которой приложение связывается.Таким образом, отдельные пользователи вообще не имеют прав на SQL Server и не могут подключаться к SSMS.

Предполагается, что вы хотите подключить только приложение, а все функции управляются через приложение.

В качестве альтернативы, если вы хотите, чтобы указанные пользователи имели определенные разрешения, которые отличаются от всех других пользователей, то вы должны назначить отдельных пользователей (надеюсь, пользователей домена) ролям сервера sql и установить разрешения на основе ролей (вам, вероятно, не нужно административное бремяиндивидуального управления пользователями, поэтому роли SQL или группы доменов снимают административную нагрузку).Затем ваше приложение подключается с помощью проверки подлинности Windows (например, контекст пользователя, который использует приложение).Это дает вам возможность предоставлять отдельным пользователям различные права в базе данных.Тем не менее, это точно может быть достигнуто с помощью хорошо разработанного приложения.

Альтернативой использованию ролей SQL является то, что вы можете поместить пользователей домена в группу Windows AD (например, менеджеров по учету) и назначить эту группу домена роли SQL или предоставить ей определенные разрешения (средство чтения данных, средство записи,dbo и т. д.), и вы даже можете использовать это для определенных объектов базы данных (например, только менеджеры по учету могут выполнять хранимую процедуру «УДАЛИТЬ ВХОД»).Вы даже можете удалить все права на прямой доступ к таблице, чтобы, когда пользователь подключается к базе данных (например, через SSMS), он не мог удалить данные напрямую и ТОЛЬКО мог это сделать, выполнив хранимую процедуру «УДАЛИТЬ», если он находится в группе.у которого есть разрешения на выполнение этой хранимой процедуры.

Кроме того, если вы действительно хотите защитить свои данные от удаления, в таблице будет указан флаг, указывающий, что запись активна или неактивна, и вы действительно НЕ УДАЛИТЕзапись, даже во время так называемой операции удаления, скорее вы бы пометили ее как активную или неактивную

В любом случае, чтобы ответить на конкретный вопрос, чтобы запретить пользователю подключаться через SSMS и ТОЛЬКО через приложение, это может быть выполнено несколькими способами и никоим образом не является ограничением.

0 голосов
/ 09 июня 2011

Я второй Алекс возьми. Если вы хотите быть параноиком, вы можете дополнительно установить разрешения для пула приложений (в IIS) или для идентификатора приложения (windows / веб-приложения). Я думаю, что win auth достаточно хорош.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...