Я ищу хороший способ поддерживать разрешения на то, кто может добавлять данные в базу данных в приложении C# и SQL Server 2005.Разрешения SQL для добавления данных и как их проверить?
Мне нужно объяснить, хотя это ясно. Итак, давайте возьмем пример:
У меня есть два пользователя Bob
и Jim
, оба они добавлены в разрешения SQL, чтобы они имели доступ на запись в базу данных. Теперь весь доступ основан на учетных записях пользователей домена. Все остальные пользователи имеют доступ только для чтения.
Теперь у меня есть несколько таблиц, таких как:
- пользователей
- UserPermissions
- Книги
- BookPublishers
Так UserPermissions
содержит список пользователей и BookPublishers. Так, например: Bob
имеет разрешение на размещение книг на номера MS Press
и у Jim
есть разрешение на публикацию книг для O'Reilly
.
Теперь мне нужно проверить эту информацию и ограничить то, что они могут добавить.
Так сказать Jim
использует мое приложение из командной строки, и он пишет что-то вроде:
Addbook.exe "C# 3.0 in a Nutshell" "O'Reilly"
Инструмент должен идти вперед и добавить книгу в книжном столе.
Теперь скажите Bob
пытается выполнить ту же команду, инструмент должен быть ошибкой, так как у него нет разрешения на добавление книг на O'Reilly
.
Прямо сейчас мне нужно знать, как сделать пару вещей.
- Убедитесь, что пользователь сначала разрешение на запись в SQL Server
- Убедитесь, что пользователь имеет право на запись, чтобы добавить
books
конкретным издателем - Кроме того, мне нужно, чтобы убедиться, что это верно до инструмент на самом деле пытается добавить данные, т. е. мне нужно проверить обратную связь, прежде чем инструмент продолжит
Теперь я не на 100% обеспокоен тем, что пользователь вводит вредоносные данные, хотя было бы неплохо остановить это, но это внутренний инструмент, и я uess Я могу доверять пользователям ... (возможно)
В любом случае я не знаю, с чего начать, мои SQL-навыки очень не хватает.
Akk, последнее, что я не хочу добавлять данные, используя процедуры хранения.
Вам необходимо напрямую запросить метаданные разрешений SQL Server. Есть несколько хранимых процедур, которые вы можете вызвать, которые будут делать это, но я, кажется, помню, что это не тривиальная задача. –