|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
Хочется сделать так чтоб хоть было похоже на грамотное решение. Исходные данные для задачи такие: - На основе паролей только. - Программа в общем случае представляет набор форм которые работают к таблицами БД (MSSQL2к). - Собственно разрешение на запуск формы и лимитирует пользователей в правах. Предполагаю, что хранить имена, пароли, права в отдельной таблице нужно. Но в таблицу нужно зайти как-то, т.е. использовать пароль к серверу?, но какой (только для этой таблицы а в ней перечислять другие пароли к серверу? Глупость какаято получается.) Даже не знаю откуда подступится к этой проблеме. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2007, 10:17 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
А почему бы пользователям честно не логониться в SQL сервер? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2007, 12:11 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
Т.е. назначать права на каждую таблицу для каждой учетной записи? Вроде таблиц много будет.(хотя если подумать... ...нет ничего сверхсложного!) Или сделать всех пользователей админами как В 1С 7.7 и ограничивать пользователя только скрывая функции интерфейса? Но мне кажется что это не очено корректно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2007, 12:30 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
Для Net есть готовое решение в исходниках с неплохим фукционалом .NET SQL Authorization Manager ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2007, 12:41 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
Давно пора в вузах ввести курс - управления правами доступа. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2007, 12:58 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
можно сделать так: есть таблица с пользователями, и функциями, к которым они могут получить доступ на основании этой таблицы создаются пользователи БД с соответствующими ролями есть отдельный пользователь userx который может прочитать список пользователей (только ФИО и user_name через вьюху) никакие другие таблицы ему недоступны При запуске программы, запускается форма, которая в выпадающий список загружает ФИО пользователей (используя пользователя userx)... юзер выбирает себя, и вводит пароль... далее входит под своей учётной записью С одной стороны выбрать ФИО проще чем помнить свой логин... с другой в БД есть таблица пользователей, и удобно не только разделять доступ к "объектам" БД с помощью ролей, но и разделять доступ к самим данным ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2007, 21:41 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
Mainframe_старыйДавно пора в вузах ввести курс - управления правами доступа. Хм. Неужели изложение мысли "не изобретай велосипед" должно занимать целый семестр? Имхо тех, для кого оно так, лучше сразу пристрелить, дабы других не мучали.... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2007, 00:18 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
softwarer Mainframe_старыйДавно пора в вузах ввести курс - управления правами доступа. Хм. Неужели изложение мысли "не изобретай велосипед" должно занимать целый семестр? Имхо тех, для кого оно так, лучше сразу пристрелить, дабы других не мучали.... Мысль , она и больше может занять :) Но вообще-то тема довольно широкая, если туда подключить не только модели RBAC, но и различные модификации, усугубить архитектурными изысками и проблемами реализаций. Во всяком случае в рамках хоть какого-то курса у ИТ-специальностей модель RBAC надо обсуждать. у нас было почти по классике с изробретением велосипеодов - изобрели свой RBAC, не читая книг во время. Получилось неплохо, местами даже лучше, чем в классике, но возможно за это время мы могли бы сделать еще кое-что полезное. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2007, 02:33 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
Разделять доступ к данным в полной мере не получится, т.к. далеко не вся логика укладывается в права чтения/записи определенной таблицы. Всё равно неизбежно использование мер безопасности на клиенте. Как запретить пользователю менять данные в док-те с определенным статусом ? Как запретить менять(видеть) конкретное поле ? Как запретить ставить определенные значения ? Как запретить менять(видеть) определенные записи ? Единственный выход для хорошей безопасности - всё делать через хранимые процедуры. Но там появится масса других проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2007, 10:52 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
>Авторизатор >Хочется сделать так ... Рассмотри такой вариант. В систему дополнительно вводишь сервер приложений. Именно он коннектируется к базе данных c информацией по аутентификации клиента. Где располагается эта база данных клиентскому приложению абсолютно ничего не известно. В общей ли базе данных, в другой базе данных данного сервера или в каком-то другом сервере данных на другом компьютере. Ничего о login и password доступа к этой базе. Это известно только серверу приложения. Клиентское приложение посылает запрос серверу приложений на аутентификацию. В ответ принимается или идентификатор формы или идентификатор ошибки. Детали можешь посмотреть здесь: http://www.gotdotnet.ru/Forums/Design/488948.aspx С уважением, Владимир. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2007, 12:09 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
Mainframe_старыйПолучилось неплохо, местами даже лучше, чем в классике, но возможно за это время мы могли бы сделать еще кое-что полезное. Делать именно RBAC или нечто очень похожее имхо неоправданно - согласен, лучше потратить это время на что-нибудь полезное. Имхо свою безопасность имеет смысл делать ради какой-то другой либо другой идеологии защиты, той же мандатной. Скажем, я имел дело с одной интересной собственной системой безопасности; там идеология была кардинально расширена за счет следующих моментов: 1. Набор допустимых результатов был шире, нежели "пустить/отказать". Кроме этого было кажется три варианта, объединенных смыслом "запросить разрешение на операцию" - то есть, "ответственному" уезжал скриншот и информация вида "пользователь такой-то просит разрешения сделать то-то", ответственный давал добро, и после этого операция выполнялась (один из вариантов - пользователь повторно выполнял то же действие, и на этот раз безопасность его пускала). 2. Permission-ы были параметризованными. То есть, например, операция "выписать подарок клиенту". Для продавца лимит цены подарка установлен в 20 у.е., для ведущего продавца - в 100 у.е. Соответственно, подарки в пределах лимита сотрудник выписывает под собственную ответственность; при превышении лимита запрашивается разрешение начальника отдела. LSVРазделять доступ к данным в полной мере не получится, т.к. далеко не вся логика укладывается в права чтения/записи определенной таблицы. Всё равно неизбежно использование мер безопасности на клиенте. Хм. Странное утверждение. 1. Меры безопасности на клиенте - это моветон, заведомая "защита только от неграмотного пользователя". Клиент должен поддерживать меры безопасности сервера - скажем, прятать от пользователя пункты меню, вызывающие те операции, на которые у пользователя нет прав. Прятать колонки, значения которых безопасность все равно забивает null-ами. И так далее. 2. Насчет "неизбежно".... Вы имхо очень преувеличили. Я бы сказал, большинство приложений таки избегают. Как запретить пользователю менять данные в док-те с определенным статусом ? Триггер. Как запретить менять(видеть) конкретное поле ? Триггер (view). Как запретить ставить определенные значения ? Триггер. Как запретить менять(видеть) определенные записи ? Триггер (view). Единственный выход для хорошей безопасности - всё делать через хранимые процедуры. Но там появится масса других проблем. И это тоже вариант. В MSSQL, кстати, в этом плане хороша концепция inline table function (хотя я и продолжаю считать, что их следовало бы назвать параметризованными view). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2007, 12:40 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
softwarer Mainframe_старыйДавно пора в вузах ввести курс - управления правами доступа. Хм. Неужели изложение мысли "не изобретай велосипед" должно занимать целый семестр? Имхо тех, для кого оно так, лучше сразу пристрелить, дабы других не мучали.... а он кем-то уже изобретен разве? хм... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2007, 12:43 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
Авторизатор- Программа в общем случае представляет набор форм которые работают к таблицами БД (MSSQL2к). - Собственно разрешение на запуск формы и лимитирует пользователей в правах. Этого как правило недостаточно - как правило, требуется выдавать права на отдельные операции на форме (точнее - оказывается слишком неудобным делать свою форму под каждую операцию, нуждающуюся в автономной выдаче прав). Даже если сейчас это устраивает, серьезно подумайте, сохранится ли такая ситуация в будущем. Ну а теперь: исходя из этого, получаем следующее: 1. В БД создается набор ролей, соответствующий формам (либо роль для каждой формы, либо объединенные роли для нескольких форм с заведомо одинаковыми правами) 2. Права на объекты, используемые формой, грантуются этой роли. При необходимости создаются объекты-прокладки (скажем, если форма должна смотреть записи из таблицы только за последний месяц, делается view, и роли грантуется это view; если должна вызывать ХП с параметром А обязательно равным 1, создается промежуточная ХП с меньшим количеством параметров, и грантуется она) 3. Форма знает свою роль и так или иначе отказывается вызываться, если у пользователя роли нет. Вот и все. Дешево, просто и без извратов получаем неплохо защищенную систему; администратору остается только вовремя применять патчи безопасности сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2007, 12:52 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
Самое неприятное и плохо формализуемое - описание прав на выполнение определенных действий над определенными данными. Пример: прием заказов (действие) только от клиентов - магазинов (данные). Такой вот велосипед. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2007, 11:03 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
модСамое неприятное и плохо формализуемое - описание прав на выполнение определенных действий над определенными данными. Пример: прием заказов (действие) только от клиентов - магазинов (данные). Такой вот велосипед. не пойму что неприятного в обычном условии запроса данных? Или Вы о чем-то другом? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2007, 11:20 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
гораздо более неприятно всовывать управление доступом к объектам не являющимися объектами СУБД в базу данных. Впрочем это распространенный прием (разложить интерфейс по косточкам, запихнуть в таблицы, обложить вьюхами, засыпать грантами и т.п.), но,как говорится "на безрыбье и рак - рыба". ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2007, 11:26 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
softwarerСкажем, я имел дело с одной интересной собственной системой безопасности; там идеология была кардинально расширена за счет следующих моментов: 1. Набор допустимых результатов был шире, нежели "пустить/отказать". Кроме этого было кажется три варианта, объединенных смыслом "запросить разрешение на операцию" - то есть, "ответственному" уезжал скриншот и информация вида "пользователь такой-то просит разрешения сделать то-то", ответственный давал добро, и после этого операция выполнялась (один из вариантов - пользователь повторно выполнял то же действие, и на этот раз безопасность его пускала). 2. Permission-ы были параметризованными. То есть, например, операция "выписать подарок клиенту". Для продавца лимит цены подарка установлен в 20 у.е., для ведущего продавца - в 100 у.е. Соответственно, подарки в пределах лимита сотрудник выписывает под собственную ответственность; при превышении лимита запрашивается разрешение начальника отдела. А не пробовали делать Пермишины на максимальное в единый момент времени число пользователей ? меня в веб-приложениях это сильно смущает, не уверена, что стоит ломать копья. Лучше на организационном уровне договариваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2007, 12:39 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
iscrafmне пойму что неприятного в обычном условии запроса данных? Условие то надо как-то сформировать. Сложность в том, что функции перемножаются на данные, над которыми эти функции выполняются. Т.е. недосточно дать права отдельно на функции и отдельно на данные, надо обязательно на их связку. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2007, 12:40 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
моднедосточно дать права отдельно на функции и отдельно на данные, надо обязательно на их связку. согласен с Вами. В качестве простого примера картинка ниже. Как видно из нее, права даются на интерфейс (функцию,сервис,...), а уже внутри нее на данные, с которыми этот интерфейс работает. Конечно разорвать эту связку нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2007, 13:43 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
Mainframe_старыйА не пробовали делать Пермишины на максимальное в единый момент времени число пользователей ? меня в веб-приложениях это сильно смущает, не уверена, что стоит ломать копья. Лучше на организационном уровне договариваться. Делал когда-то ограничение на максимальное количество сессий одного пользователя. Но такие лимиты сейчас как правило спокойно поддерживаются серверным софтом, на уровне приложения вроде ни к чему. Кроме того, я не очень понимаю смысл конкретно указанного ограничения. Я понимаю, что можно лимитировать разделяемые ресурсы - скажем, ширину канала или там максимальное количество запросов в секунду. Но какая разница, сколько человек и в каких браузерах сидят? Разве что какое-то странно-кривое лицензирование.... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2007, 14:02 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
To software: позволю себе заступиться за LSV. ОН имел ввиду,под тем,что СУБД не может проконтроолировать права именно на уровне декларативных ограничений целостности. Никаким грантом Вы не пропасете сумму. А в триггере-это уже что-то писать надо. Разговор шел именно об этом! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2007, 12:08 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
Shtock Никаким грантом Вы не пропасете сумму. А в триггере-это уже что-то писать надо. Разговор шел именно об этом! Не совсем так, или даже совсем не так. Говоря формально, LSV выдвинул утверждение, состоящее из верной посылки (I), ложной посылки (II), доказательства и вывода. Я подбросил ему примеров, показывающих ложность посылки II и соответственно вывода. Вы же пытаетесь объяснить мне, что посылка I истинна, и "разговор шел именно об этом". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2007, 19:02 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
1. для работы нужно использовать SQL-аутентификацию 2. нужно иметь таблицу пользователей. в которой хранить SQL-логин пользователя, NT-логин, и пароль. пароль нужно хранить зашифрованный. 3. при старте приложения, используя windows-аутентификацию пользователь коннектится к БД. на сервере заведена группа Domain users которая не имеет никаких прав кроме запуска единственной процедуры, которая по system_user тянет SQL-логин пользователя и зашифрованный пароль пользователя. 4.приложение расшифровывает пароль пользователя и производит коннект к бд используя SQL-аутентификацию (получение логина и пароля описано в пунктах 1-3) 5. для упрощения все SQL-логины имеют одинаковые права (дба-давать не стоит, но те которые нужны выдать) 6. создание SQL-логина происходит из самописной системы-авторизации. в нее заводится новый пользователь. ему создается логин. пароль шифруется и записывается в таблицу пользователей. 7. вся авторизация происходит на уровне приложения 8. коннект от SQL-пользователя к БД возможно осуществить только из приложения (так как никто кроме него не умеет расшифровывать пароль). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2007, 17:24 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
Bibber8. коннект от SQL-пользователя к БД возможно осуществить только из приложения (так как никто кроме него не умеет расшифровывать пароль). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2007, 17:32 |
|
Авторизация пользователей в корп.сист. Как?
|
|||
---|---|---|---|
#18+
softwarer Bibber8. коннект от SQL-пользователя к БД возможно осуществить только из приложения (так как никто кроме него не умеет расшифровывать пароль). вы сомневаетесь в том, что программными средствами возможно зашифровать пароль так, что не зная ключа его будет трудно расшифровать за короткий срок? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2007, 17:41 |
|
|
start [/forum/topic.php?fid=33&fpage=49&tid=1548957]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 177ms |
0 / 0 |