Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.23;
Скачать: CL | DM;

Вниз

Разграничение полномочий в приложении, работающем с БД   Найти похожие ветки 

 
BlackCat   (2007-10-05 16:27) [0]

Доброго времени суток всем!
Пише приложение, работающее с БД на MS SQL.
Работать с ним будут несоклько человек, у которых разные права должны быть. При разработки структуры БД пришел к выводу, что буду использовать логины SQL-сервера.
Можно конечно оставить свойство Login Prompt включеным, чтобы запрашивался имя и пароль, но это как-то некрасиво будет. Хочу свое окно, чтобы там вводить имя и пароль, а вот как их проверить и пускать или не пускать пользователя, что-то дойти не могу. Может кто уже делал чего подобного, помогите, или просто поделитесь мыслями, потому что просто не представляю, как это всё сделать...


 
clickmaker ©   (2007-10-05 16:35) [1]


> вот как их проверить и пускать или не пускать пользователя

так если логины сервера, то это его задача будет


 
BlackCat   (2007-10-05 16:42) [2]

не, это понятно, что это задача сервера, и он проверит.

Просто если к примеру ADOConnection1->LoginPrompt = true;, то это понятно.
ADOConnection1->ConnectionString = ".........."; - это тоже понятно.

Поставлю вопрос по другому:

Если у меня есть форма для вода имени пользователя и пароля
(не ЛогинПромпт = тру!!!!!), то каков будет механизм для проверки???
Это какой-то запрос к БД на проверку имени пользователя и пароля??? В это случае с каким имененм и паролем коннектиться к базе, чтобы проверить введенные пользователем данные??? Из-под sa будет как-то "неправильно" (c).


 
Ega23 ©   (2007-10-05 16:48) [3]


> Это какой-то запрос к БД на проверку имени пользователя
> и пароля???


Нет, это попытка создать коннект.
try
 ADOConnection.Connected := True;
except
 // Анализируем ситуацыйу
end;


 
sniknik ©   (2007-10-05 17:34) [4]

> В это случае с каким имененм и паролем коннектиться к базе, чтобы проверить введенные пользователем данные???
что значит с какими? именно с введенными ты и должен пробовать коннектиться, и обрабатывать если не получилось.

или ты в базе в свою табличку юзеров/паролей забил? тогда не морочь мозги людям, это не логины сервера с ними не подконектишся.


 
stone ©   (2007-10-05 17:34) [5]

У TADOConnection есть два метода
procedure Open; overload;
procedure Open(const UserID: WideString; const Password: WideString); overload


 
MOA ©   (2007-10-06 03:11) [6]

>свое окно, чтобы там вводить имя и пароль,
И будете прокляты сопровождаюшими.
Да и на самом деле - какого рожна Вам впилось делать свою кривую (по любому - кривую) системы "типа безопасности"? Механизмов MSSQL для ваших офигительных секретов не хватает?
Тогда уходите с MSSQL на "Вася пупкин и Ко" -ну уж Вася то - по любому круче, чем MS, который, есно масдай - не чета Пупкину.
Блин, Вам чё - интегрированной системы не хватает? А на чём у вас клиенты - на оголимом досе/униксе? Если так - перо вам в спину...


 
Jeer ©   (2007-10-08 10:32) [7]

MOA ©   (06.10.07 03:11) [6]

Ты не прав и не прав кардинально.
Системы безопасности сервера может и хватает, но не хватает системы управления доступом к бизнес-процессам, если часть их или даже все находятся на клиенте. А такое тоже бывает и не так редко.


 
Ega23 ©   (2007-10-08 12:18) [8]


> Системы безопасности сервера может и хватает, но не хватает
> системы управления доступом к бизнес-процессам, если часть
> их или даже все находятся на клиенте. А такое тоже бывает
> и не так редко.


+1


 
Lamer666   (2007-10-18 00:41) [9]

Ну так к чему сошлись то?


 
Reindeer Moss Eater ©   (2007-10-18 09:31) [10]

Хочу свое окно, чтобы там вводить имя и пароль, а вот как их проверить

Это эабота сервера, а не твоя.


 
Jeer ©   (2007-10-18 11:40) [11]


> Хочу свое окно, чтобы там вводить имя и пароль, а вот как
> их проверить


Используй режим windows autotentification, тогда вход в компьютер и будет логином к MS SQL


 
Lamer666   (2007-10-18 12:59) [12]

Короче вижу никто этим никогда не занимался, простой набор предположений  у всех...


 
Reindeer Moss Eater ©   (2007-10-18 13:03) [13]

тебе нужен сложный набор предложений?


 
Reindeer Moss Eater ©   (2007-10-18 13:05) [14]

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


 
Lamer666   (2007-10-18 13:08) [15]


> убирай логинпромпт и вставляй имя и пароль в строку подключения

Чьё имя то вставлять? Список позователей чей? Windows-а? Ms SQL-а?


 
Reindeer Moss Eater ©   (2007-10-18 13:10) [16]

Тормоз что-ли?
Ты свою форму ввода имени/пароля зачем рисовал?
не для того, что бы получить имя и пароль?


 
Reindeer Moss Eater ©   (2007-10-18 13:11) [17]

Список позователей чей?

При разработки структуры БД пришел к выводу, что буду использовать логины SQL-сервера.


 
Lamer666   (2007-10-18 13:13) [18]

Anatoly Podgoretsky ©   (17.10.07 20:42) [1]
MS SQL позволяет назначать любые права для конкретных пользователей.
Чем основано желание использовать Аккаутны MSSQL, учитывая, что Микрософт предупреждает, что в будущих версиях это может быть убрано совсем. Пока существует для совместимости с MS SQL 6.5

тут http://delphimaster.net/view/3-1192637656/


 
Reindeer Moss Eater ©   (2007-10-18 13:21) [19]

Ну значит никакой формы ввода пароля вообще не надо.
Ни своей ни дефолтной.


 
Lamer666   (2007-10-18 13:23) [20]

Классно! : ) Вот BlackCat обрадуеться!


 
Jeer ©   (2007-10-18 14:33) [21]

Lamer666   (18.10.07 13:13) [18]

> MS SQL позволяет назначать любые права


Полный бред.


 
zdm77   (2007-10-18 16:07) [22]

в СВОЕЙ форме в принципе всё хорошо... логин, полное имя(для отчетов где нибудть пригодится), пароль...вот тут засада, хранить его в "открытую" в БД? Дык любой лох вскроет.
Юзать логины самой БД-грамотно, но не во всем удобно


 
Sergey13 ©   (2007-10-18 16:12) [23]

> [22] zdm77   (18.10.07 16:07)

Какая связь между "своей формой" и "логинами БД" и что тут неудобно?


 
Jeer ©   (2007-10-18 16:33) [24]


> zdm77   (18.10.07 16:07) [22]


Шифруй пароль в базе + hash, чтоб не подменили.


 
zdm77   (2007-10-18 17:36) [25]


> Sergey13 ©   (18.10.07 16:12) [23]

Своя форма и ЛОгин БД-между ними было "или", не правильно видимо выразился


 
zdm77   (2007-10-18 17:38) [26]


> Jeer ©   (18.10.07 16:33) [24]

прошу прощения у автора, но тема интересная. А как шифровать пароли?


 
Jeer ©   (2007-10-18 18:29) [27]


> zdm77   (18.10.07 17:38) [26]


?
Шифровальщиком:))


 
Lamer666   (2007-10-18 19:15) [28]

И так кто нибудь конкретный прммер ВЫЛОЖИт что как делать?


 
Anatoly Podgoretsky ©   (2007-10-18 20:26) [29]

> Lamer666  (18.10.2007 19:15:28)  [28]

Зачем хранить пароли в базе, сервер это уже сделал.


 
Lamer666   (2007-10-18 22:05) [30]


> Anatoly Podgoretsky ©   (18.10.07 20:26) [29]

Правильно ли я понял!
Я создаю в MSSQL->Security->Logins пользователя из ДОМЕНА,даю ему права... а потом он логинется на какойнибудь машине в СЕТИ и идет в MS SQL. MS SQL его узнает и дает те права, которые мы ему дали, правильно?


 
Anatoly Podgoretsky ©   (2007-10-18 22:09) [31]

> Lamer666  (18.10.2007 22:05:30)  [30]

Права надо давать не логинам, а пользователям.


 
Lamer666   (2007-10-18 22:11) [32]

Ну так создовая ЛОГ мы ведь выбираем конкретного пользователя из ДОМЕНА...или это не то же самое?


 
Jeer ©   (2007-10-19 15:32) [33]

Я поясню, что имел в виду, говоря о дополнительной системе аудита пользователей.

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


 
MOA ©   (2007-10-20 14:06) [34]

Прошу прощения за запальчивость... :(
Блин, ребята. Я вижу только одну (1) причину юзать механизм аутентификации SQL  - если предполагаются клиенты не-на Win. Тем более какой-то самопал.
Ну вот зачем заставлять юзеров помнить бесчисленные пароли к самопальным "типа секретным" АРМ-ам? Чтобы убедиться, что они будут их записывать на стикерах под монитором?
Ну ведь есть такие "роли". Ну ведь ими очень удобно пользоваться. Ну зачем, скажите бога ради, выдумывать своё - и думать, что выдумка круче чем разработка серъёзной фирмы (которая, конечно же маздай)?


 
MOA ©   (2007-10-20 14:21) [35]

2Jeer
>Как только мы вводим понятия "системный администратор" и "администратор системы" - становится понятным, что правами управлять чужими правами придется делится.
А GRANT - этого не позволяет?
>Для такого случая вводится понятие "администратор системы", который пользуясь дополнительной системой аудита управляет пользователями в указанном разрезе.
И опять - GRANT -а не хватает....
>Для того, чтобы системный администратор не мог "безнаказанно" менять установки и "узнавать" пароли на вход в программную систему, пароли шифруются и запись подписывается хэш-функцией.
В интегрированной модели эти вопросы не стоят выеденного яйца.


 
DeadMeat   (2007-10-21 10:24) [36]

Я конечно не телепат, но подозреваю, что автор не совсем правильно сформулировал вопрос.
ИМХО, он имел ввиду другое.
Как я понял, он хочет после Open(Login, Password) узнать, что юзер не прошел аутентификацию. Т.е. как получить именно этот ответ от сервера?
Т.е. по сути:

> [3] Ega23 ©   (05.10.07 16:48)

Показал как решить проблему, осталась видать другая. Как узнать, что именно логин/пассворд не правильные, а не другая какая-либо ошибка.
Автор... я прав?
Если прав, то по почте пожалуйста бутылку отменного.... кефира. 2,5%


 
Anatoly Podgoretsky ©   (2007-10-21 11:48) [37]


> Как я понял, он хочет после Open(Login, Password) узнать,
>  что юзер не прошел аутентификацию.

Будет исключение


 
DeadMeat   (2007-10-21 22:00) [38]

> [37] Anatoly Podgoretsky ©   (21.10.07 11:48)
>
> > Как я понял, он хочет после Open(Login, Password) узнать,
>
> >  что юзер не прошел аутентификацию.
>
> Будет исключение

Это понятно.
Пример:
создали новый логин с новой ролью с новыми правами. Чегото гдето забыли поставить (права на одну из процедур например) и в итоге при подключении просиходит исключение. Если его не обрабатывать, то получится, что при любой ошибке, программа будет считать, что не верные логин или пароль.
Я просто почему спрашиваю, у себя сделал так. Просто пишу общую фразу "ДОСТУП ЗАПРЕЩЕН". А если надо показать реальное сообщение, то при удержании клавиши Shift оно показывается. Но все таки хотелось бы узнать, как обработать именно ошибку, типа "не верный логин или пароль"?


 
Jeer ©   (2007-10-22 15:10) [39]


> MOA ©   (20.10.07 14:06) [34]


> MOA ©   (20.10.07 14:21) [35]


Значит ты еще мало каши кушал.

Во многих случаях, аудит  бизнес-процессов и сопровождение - отделенные вещи. GRANT не поможет в реализации ограничений на стороне клиента, тем более в ограничении пользовательского интерфейса.


 
Павел Калугин ©   (2007-10-31 14:02) [40]

> [34] MOA ©   (20.10.07 14:06)

Все понимаю.
Но как штатными средствами сервера задать следующее ограничение:
   Вася Пупкин может смотреть только те документы которые создал сам
   Петя Батарейкин - только то что создал Вася Пупкин и он сам
   Федя Курочкин - документы созданные всеми пользователями



Страницы: 1 2 вся ветка

Текущий архив: 2008.03.23;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.016 c
2-1203518107
dart_vaider
2008-02-20 17:35
2008.03.23
lookup combobox


15-1202490531
@!!ex
2008-02-08 20:08
2008.03.23
Проверка орфографии в OpenOffice


9-1168391727
Coll
2007-01-10 04:15
2008.03.23
Библиотеки проверки столкновений?


15-1202789867
Slider007
2008-02-12 07:17
2008.03.23
С днем рождения ! 12 февраля 2008 вторник


15-1202689997
Petr V. Abramov
2008-02-11 03:33
2008.03.23
Хочешь узнать, что произошло в декабре 2007-го года в России? :))