powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Авторизация пользователей в корп.сист. Как?
25 сообщений из 43, страница 1 из 2
Авторизация пользователей в корп.сист. Как?
    #34883922
Хочется сделать так чтоб хоть было похоже на грамотное решение.
Исходные данные для задачи такие:
- На основе паролей только.
- Программа в общем случае представляет набор форм которые работают к таблицами БД (MSSQL2к).
- Собственно разрешение на запуск формы и лимитирует пользователей в правах.

Предполагаю, что хранить имена, пароли, права в отдельной таблице нужно. Но в таблицу нужно зайти как-то, т.е. использовать пароль к серверу?, но какой (только для этой таблицы а в ней перечислять другие пароли к серверу? Глупость какаято получается.)
Даже не знаю откуда подступится к этой проблеме.
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34884346
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему бы пользователям честно не логониться в SQL сервер?
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34884420
Т.е. назначать права на каждую таблицу для каждой учетной записи? Вроде таблиц много будет.(хотя если подумать... ...нет ничего сверхсложного!)
Или сделать всех пользователей админами как В 1С 7.7 и ограничивать пользователя только скрывая функции интерфейса? Но мне кажется что это не очено корректно.
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34884462
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для Net есть готовое решение в исходниках с неплохим фукционалом .NET SQL Authorization Manager
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34884543
Mainframe_старый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давно пора в вузах ввести курс - управления правами доступа.
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34886325
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно сделать так:
есть таблица с пользователями, и функциями, к которым они могут получить доступ
на основании этой таблицы создаются пользователи БД с соответствующими ролями


есть отдельный пользователь userx который может прочитать список пользователей
(только ФИО и user_name через вьюху) никакие другие таблицы ему недоступны

При запуске программы, запускается форма, которая в выпадающий список загружает
ФИО пользователей (используя пользователя userx)... юзер выбирает себя, и вводит пароль...
далее входит под своей учётной записью
С одной стороны выбрать ФИО проще чем помнить свой логин...
с другой в БД есть таблица пользователей, и удобно не только разделять доступ к "объектам" БД с помощью ролей, но и разделять доступ к самим данным
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34886491
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mainframe_старыйДавно пора в вузах ввести курс - управления правами доступа.
Хм. Неужели изложение мысли "не изобретай велосипед" должно занимать целый семестр? Имхо тех, для кого оно так, лучше сразу пристрелить, дабы других не мучали....
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34886560
Mainframe_старый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Mainframe_старыйДавно пора в вузах ввести курс - управления правами доступа.
Хм. Неужели изложение мысли "не изобретай велосипед" должно занимать целый семестр? Имхо тех, для кого оно так, лучше сразу пристрелить, дабы других не мучали....

Мысль , она и больше может занять :) Но вообще-то тема довольно широкая, если туда подключить не только модели RBAC, но и различные модификации, усугубить архитектурными изысками и проблемами реализаций. Во всяком случае в рамках хоть какого-то курса у ИТ-специальностей модель RBAC надо обсуждать. у нас было почти по классике с изробретением велосипеодов - изобрели свой RBAC, не читая книг во время. Получилось неплохо, местами даже лучше, чем в классике, но возможно за это время мы могли бы сделать еще кое-что полезное.
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34886991
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разделять доступ к данным в полной мере не получится, т.к. далеко не вся логика укладывается в права чтения/записи определенной таблицы.
Всё равно неизбежно использование мер безопасности на клиенте.

Как запретить пользователю менять данные в док-те с определенным статусом ?
Как запретить менять(видеть) конкретное поле ?
Как запретить ставить определенные значения ?
Как запретить менять(видеть) определенные записи ?

Единственный выход для хорошей безопасности - всё делать через хранимые процедуры. Но там появится масса других проблем.
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34887289
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Авторизатор
>Хочется сделать так ...

Рассмотри такой вариант.
В систему дополнительно вводишь сервер приложений.
Именно он коннектируется к базе данных c информацией по аутентификации клиента. Где располагается эта база данных клиентскому приложению абсолютно ничего не известно. В общей ли базе данных, в другой базе данных данного сервера или в каком-то другом сервере данных на другом компьютере. Ничего о login и password доступа к этой базе. Это известно только серверу приложения.
Клиентское приложение посылает запрос серверу приложений на аутентификацию. В ответ принимается или идентификатор формы или идентификатор ошибки.
Детали можешь посмотреть здесь: http://www.gotdotnet.ru/Forums/Design/488948.aspx

С уважением, Владимир.
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34887462
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mainframe_старыйПолучилось неплохо, местами даже лучше, чем в классике, но возможно за это время мы могли бы сделать еще кое-что полезное.
Делать именно RBAC или нечто очень похожее имхо неоправданно - согласен, лучше потратить это время на что-нибудь полезное. Имхо свою безопасность имеет смысл делать ради какой-то другой либо другой идеологии защиты, той же мандатной. Скажем, я имел дело с одной интересной собственной системой безопасности; там идеология была кардинально расширена за счет следующих моментов:

1. Набор допустимых результатов был шире, нежели "пустить/отказать". Кроме этого было кажется три варианта, объединенных смыслом "запросить разрешение на операцию" - то есть, "ответственному" уезжал скриншот и информация вида "пользователь такой-то просит разрешения сделать то-то", ответственный давал добро, и после этого операция выполнялась (один из вариантов - пользователь повторно выполнял то же действие, и на этот раз безопасность его пускала).

2. Permission-ы были параметризованными. То есть, например, операция "выписать подарок клиенту". Для продавца лимит цены подарка установлен в 20 у.е., для ведущего продавца - в 100 у.е. Соответственно, подарки в пределах лимита сотрудник выписывает под собственную ответственность; при превышении лимита запрашивается разрешение начальника отдела.

LSVРазделять доступ к данным в полной мере не получится, т.к. далеко не вся логика укладывается в права чтения/записи определенной таблицы. Всё равно неизбежно использование мер безопасности на клиенте.
Хм. Странное утверждение.

1. Меры безопасности на клиенте - это моветон, заведомая "защита только от неграмотного пользователя". Клиент должен поддерживать меры безопасности сервера - скажем, прятать от пользователя пункты меню, вызывающие те операции, на которые у пользователя нет прав. Прятать колонки, значения которых безопасность все равно забивает null-ами. И так далее.

2. Насчет "неизбежно".... Вы имхо очень преувеличили. Я бы сказал, большинство приложений таки избегают.

Как запретить пользователю менять данные в док-те с определенным статусом ?
Триггер.

Как запретить менять(видеть) конкретное поле ?
Триггер (view).

Как запретить ставить определенные значения ?
Триггер.

Как запретить менять(видеть) определенные записи ?
Триггер (view).

Единственный выход для хорошей безопасности - всё делать через хранимые процедуры.
Но там появится масса других проблем.
И это тоже вариант. В MSSQL, кстати, в этом плане хороша концепция inline table function (хотя я и продолжаю считать, что их следовало бы назвать параметризованными view).
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34887472
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Mainframe_старыйДавно пора в вузах ввести курс - управления правами доступа.
Хм. Неужели изложение мысли "не изобретай велосипед" должно занимать целый семестр? Имхо тех, для кого оно так, лучше сразу пристрелить, дабы других не мучали....
а он кем-то уже изобретен разве? хм...
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34887522
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Авторизатор- Программа в общем случае представляет набор форм которые работают к таблицами БД (MSSQL2к).
- Собственно разрешение на запуск формы и лимитирует пользователей в правах.
Этого как правило недостаточно - как правило, требуется выдавать права на отдельные операции на форме (точнее - оказывается слишком неудобным делать свою форму под каждую операцию, нуждающуюся в автономной выдаче прав). Даже если сейчас это устраивает, серьезно подумайте, сохранится ли такая ситуация в будущем.

Ну а теперь: исходя из этого, получаем следующее:

1. В БД создается набор ролей, соответствующий формам (либо роль для каждой формы, либо объединенные роли для нескольких форм с заведомо одинаковыми правами)

2. Права на объекты, используемые формой, грантуются этой роли. При необходимости создаются объекты-прокладки (скажем, если форма должна смотреть записи из таблицы только за последний месяц, делается view, и роли грантуется это view; если должна вызывать ХП с параметром А обязательно равным 1, создается промежуточная ХП с меньшим количеством параметров, и грантуется она)

3. Форма знает свою роль и так или иначе отказывается вызываться, если у пользователя роли нет.

Вот и все. Дешево, просто и без извратов получаем неплохо защищенную систему; администратору остается только вовремя применять патчи безопасности сервера.
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34890282
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое неприятное и плохо формализуемое - описание прав на выполнение определенных действий над определенными данными. Пример: прием заказов (действие) только от клиентов - магазинов (данные). Такой вот велосипед.
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34890342
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
модСамое неприятное и плохо формализуемое - описание прав на выполнение определенных действий над определенными данными. Пример: прием заказов (действие) только от клиентов - магазинов (данные). Такой вот велосипед.
не пойму что неприятного в обычном условии запроса данных? Или Вы о чем-то другом?
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34890365
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гораздо более неприятно всовывать управление доступом к объектам не являющимися объектами СУБД в базу данных. Впрочем это распространенный прием (разложить интерфейс по косточкам, запихнуть в таблицы, обложить вьюхами, засыпать грантами и т.п.), но,как говорится "на безрыбье и рак - рыба".
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34890795
Mainframe_старый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerСкажем, я имел дело с одной интересной собственной системой безопасности; там идеология была кардинально расширена за счет следующих моментов:

1. Набор допустимых результатов был шире, нежели "пустить/отказать". Кроме этого было кажется три варианта, объединенных смыслом "запросить разрешение на операцию" - то есть, "ответственному" уезжал скриншот и информация вида "пользователь такой-то просит разрешения сделать то-то", ответственный давал добро, и после этого операция выполнялась (один из вариантов - пользователь повторно выполнял то же действие, и на этот раз безопасность его пускала).

2. Permission-ы были параметризованными. То есть, например, операция "выписать подарок клиенту". Для продавца лимит цены подарка установлен в 20 у.е., для ведущего продавца - в 100 у.е. Соответственно, подарки в пределах лимита сотрудник выписывает под собственную ответственность; при превышении лимита запрашивается разрешение начальника отдела.


А не пробовали делать Пермишины на максимальное в единый момент времени число пользователей ? меня в веб-приложениях это сильно смущает, не уверена, что стоит ломать копья. Лучше на организационном уровне договариваться.
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34890799
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmне пойму что неприятного в обычном условии запроса данных?
Условие то надо как-то сформировать. Сложность в том, что функции перемножаются на данные, над которыми эти функции выполняются. Т.е. недосточно дать права отдельно на функции и отдельно на данные, надо обязательно на их связку.
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34891166
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
моднедосточно дать права отдельно на функции и отдельно на данные, надо обязательно на их связку.
согласен с Вами. В качестве простого примера картинка ниже. Как видно из нее, права даются на интерфейс (функцию,сервис,...), а уже внутри нее на данные, с которыми этот интерфейс работает. Конечно разорвать эту связку нельзя.
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34891257
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mainframe_старыйА не пробовали делать Пермишины на максимальное в единый момент времени число пользователей ? меня в веб-приложениях это сильно смущает, не уверена, что стоит ломать копья. Лучше на организационном уровне договариваться.
Делал когда-то ограничение на максимальное количество сессий одного пользователя. Но такие лимиты сейчас как правило спокойно поддерживаются серверным софтом, на уровне приложения вроде ни к чему.

Кроме того, я не очень понимаю смысл конкретно указанного ограничения. Я понимаю, что можно лимитировать разделяемые ресурсы - скажем, ширину канала или там максимальное количество запросов в секунду. Но какая разница, сколько человек и в каких браузерах сидят? Разве что какое-то странно-кривое лицензирование....
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34893826
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To software: позволю себе заступиться за LSV. ОН имел ввиду,под тем,что СУБД не может проконтроолировать права именно на уровне декларативных ограничений целостности. Никаким грантом Вы не пропасете сумму. А в триггере-это уже что-то писать надо. Разговор шел именно об этом!
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34895583
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shtock Никаким грантом Вы не пропасете сумму. А в триггере-это уже что-то писать надо. Разговор шел именно об этом!
Не совсем так, или даже совсем не так.

Говоря формально, LSV выдвинул утверждение, состоящее из верной посылки (I), ложной посылки (II), доказательства и вывода. Я подбросил ему примеров, показывающих ложность посылки II и соответственно вывода. Вы же пытаетесь объяснить мне, что посылка I истинна, и "разговор шел именно об этом".
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34914068
Bibber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. для работы нужно использовать SQL-аутентификацию

2. нужно иметь таблицу пользователей. в которой хранить SQL-логин пользователя, NT-логин, и пароль. пароль нужно хранить зашифрованный.

3. при старте приложения, используя windows-аутентификацию пользователь коннектится к БД. на сервере заведена группа Domain users которая не имеет никаких прав кроме запуска
единственной процедуры, которая по system_user тянет SQL-логин пользователя и зашифрованный пароль пользователя.

4.приложение расшифровывает пароль пользователя и производит коннект к бд используя SQL-аутентификацию (получение логина и пароля описано в пунктах 1-3)

5. для упрощения все SQL-логины имеют одинаковые права (дба-давать не стоит, но те которые нужны выдать)
6. создание SQL-логина происходит из самописной системы-авторизации. в нее заводится новый пользователь. ему создается логин. пароль шифруется и записывается в таблицу пользователей.
7. вся авторизация происходит на уровне приложения

8. коннект от SQL-пользователя к БД возможно осуществить только из приложения (так как никто кроме него не умеет расшифровывать пароль).
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34914107
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bibber8. коннект от SQL-пользователя к БД возможно осуществить только из приложения (так как никто кроме него не умеет расшифровывать пароль).
...
Рейтинг: 0 / 0
Авторизация пользователей в корп.сист. Как?
    #34914139
Bibber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer Bibber8. коннект от SQL-пользователя к БД возможно осуществить только из приложения (так как никто кроме него не умеет расшифровывать пароль).

вы сомневаетесь в том, что программными средствами возможно зашифровать пароль так, что не зная ключа его будет трудно расшифровать за короткий срок?
...
Рейтинг: 0 / 0
25 сообщений из 43, страница 1 из 2
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Авторизация пользователей в корп.сист. Как?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]