создание нескольких пользователей для приложения ac # .net winform с использованием sql server express - PullRequest
2 голосов
/ 01 марта 2011

У меня есть одна база данных SQL в SQL Server Express.

У меня есть логин MAINLOGIN для этой базы данных.

Я хочу вставку данных в эту базу данных через нескольких пользователей, U1,U2, U3, каждый из которых имеет разные идентификаторы и пароли.

Эти пользователи будут созданы MAINLOGIN, вручную или через приложение winform.

Так что при создании MAINLOGIN я бы дал ему разрешение на дальнейшее создание логинов.

Для этогочто мне делать?

я не могу создать НЕСКОЛЬКИХ пользователей, потому что для одной базы данных под одним логином может быть создан только один пользователь.

поэтому я должен создать несколько логинов, L1, L2, L3затем сопоставьте им U1, U2, U3.

Или есть лучший способ сделать это?как роли приложений и т. д.

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

Ответы [ 2 ]

4 голосов
/ 01 марта 2011

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

Единственным исключением является возможность создания имени входа SQL Server для системы безопасности Windows , группа , например. MyAppUsers, а затем пользователь в вашей базе данных для этого логина. При этом любая учетная запись Windows, которая является членом этой группы безопасности (в Windows / AD), также будет иметь права на просмотр / использование вашей базы данных.

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

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

Обновление:

Создание имени входа для группы Windows AD:

CREATE LOGIN [DOMAIN\GroupName] FROM WINDOWS

Создать пользователя в вашей базе данных на основе этого логина:

USE (your database)

CREATE USER GroupNameUser 
FOR LOGIN [DOMAIN\GroupName]

Строка подключения для подключения к SQL Server:

server=(your server);database=(your database);integrated security=SSPI;

Что еще я могу вам сказать?

Обновление № 2: код не с использованием учетных записей Windows:

Создайте логин для каждого пользователя, которому необходимо использовать ваше приложение

CREATE LOGIN (some login name) WITH PASSWORD = 'Top$ecret'

Создайте пользователя в вашей базе данных на основе этого логина - снова, один раз для каждого пользователя вашего приложения:

USE (your database)

CREATE USER UserName
FOR LOGIN (some login name)

Строка подключения для подключения к SQL Server:

server=(your server);database=(your database);
  user id=UserName;Password=Top$ecret

Но опять же: для этого требуется один логин, включающий пароль и одного пользователя в каждой базе данных , который необходимо отслеживать и, возможно, выполнять такие вещи, как операции «сброса пароля» и т. Д. Из приложения базы данных. Много больше с точки зрения накладных расходов администратора!

2 голосов
/ 01 марта 2011

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

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