Автоматическое назначение ролей при входе

Как защититься от хаков, спрятать БД и прочие премудрости и настройки

Модератор: kdv

Ответить
Zo
Сообщения: 6
Зарегистрирован: 06 май 2005, 13:29

Автоматическое назначение ролей при входе

Сообщение Zo » 06 май 2005, 13:48

в статье посвященной SQL-ROLES
http://www.ibase.ru/devinfo/sqlroles.htm
описано следующее:
Распространенная ошибка: Часто встречается неправильное представление о механизме ролей, что после того как пользователю назначили роль, он сразу же получает все привилегии, выданные этой роли. Это неверно. Чтобы пользователь приобрел все привилегии, назначенные роли, он должен указать эту роль при подключении к базе данных. Если же пользователь при подключении не указал имя роли, то ему не будут доступны ни одна из привилегий этой роли.

Отсюда следует,чтобы применить соответствующую роль для входа ее необходимо указать явно! Соответственно, если пользователь укажет, например, при регистрации роль full_access он получет полный доступ, а если какую-то другую, то - другую!

Таким образом, возникают следующие вопросы:
1. В соответствии с вышеказанным, любой человек может применить любую роль, если к этому пользователю добавлена эта роль?
2. Каките права получает только что зарегистрированный пользователь ( Наверняка никакие, так как, если не прописаны никакие триггеры при добавлении пользователя на изменения прав доступа, то он вообще доступа не получит ни к одному элементу базы данных! ) ... или пользователя зарегистрированного без роли (наверняка только те права которые, явно прописаны для данного пользоателя)? Это так?
3. Как бы это так сделать, чтобы для пользователя сразу же применялась та единственная роль, которая прописана для этого пользователя!
4. Как можно отобразить роли примененные для указанного пользователя!

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 06 май 2005, 14:05

1. В соответствии с вышеказанным, любой человек может применить любую роль, если к этому пользователю добавлена эта роль?
ну и вопрос. что значит "любой ... может применить любую роль"?
пользователь может указать при коннекте только ту роль, в которую он включен. Только в этом случае он получит права
public + права выданные ему + права выданные роли.
2. Каките права получает только что зарегистрированный пользователь ( Наверняка никакие, так как, если не прописаны никакие триггеры при добавлении пользователя на изменения прав доступа, то он вообще доступа не получит ни к одному элементу базы данных! ) ... или пользователя зарегистрированного без роли (наверняка только те права которые, явно прописаны для данного пользоателя)? Это так?
мнэээ... какие "триггеры на изменения прав"???
опять же, см. ту статью. пользователь имеет права:
выданные public
выданные этому пользователю
выданные роли, в которую этот пользователь включен, и если пользователь при коннекте указал эту роль.
3. Как бы это так сделать, чтобы для пользователя сразу же применялась та единственная роль, которая прописана для этого пользователя!
1. включить пользователя в роль X
2. при логине пользователя указать роль X.

я не пойму - статья на китайском, что-ли? :)
4. Как можно отобразить роли примененные для указанного пользователя!
нет "примененных" ролей. Есть роли, в которые пользователь ВКЛЮЧЕН. Все это есть в rdb$user_priviledges. включение в роль - M (membership).
"примененная" роль - это с которой пользователь вошел. ее значение в переменной CURRENT_ROLE.

Zo
Сообщения: 6
Зарегистрирован: 06 май 2005, 13:29

Сообщение Zo » 06 май 2005, 16:54

3.Вопрос в том, что конкретному пользователю определить одну конкретную роль и активировать права этой роли без его четкого определения!

Рассмотрим пример:
пускай существуют роли с четко организованными правами: admin, reader, writer!
необходимо определить для каждого пользователя одну роль!
В начале работы клиентского приложения, требует Логин и пароль!
При авторизации применяются права для роли, без ее указания!
Как это лучше всего осуществить(т.к. по умолчанию без указания роли они не применяются)?

4. В административном модуле необходимо указывать в табличке (Логин ФИО, роль)!
Где брать Эту самую роль?
в rdb$user_priviledges?
Как вы относитесь к тому, чтобы брать ччасть информации через TIBSecurityService а роли из rdb$user_priviledges?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 07 май 2005, 00:33

3.Вопрос в том, что конкретному пользователю определить одну конкретную роль и активировать права этой роли без его четкого определения!
НИКАК. В статье что, неясно написано, что при логине пользователь ОБЯЗАН указывать роль?
. В административном модуле необходимо указывать в табличке (Логин ФИО, роль)!
Где брать Эту самую роль?
в rdb$user_priviledges?
Как вы относитесь к тому, чтобы брать ччасть информации через TIBSecurityService а роли из rdb$user_priviledges?
я к этому никак не отношусь, потому что через TIBSecurityServices НЕЛЬЗЯ НИКАК получить данные из rdb$user_priviledges.
Из rdb$user_privileges можно получить данные путем банального селекта.

Если уж и до сих пор непонятно, то описываю по буквам:
1. пользователь логинится (логин и пароль)
2. приложение вычитывает его роль из rdb$privileges
3. приложение делает дисконнект, и повторный коннект
с именем пользователя, паролем, и полученной ролью

Еще что-нибудь надо объяснить? :)

Zo
Сообщения: 6
Зарегистрирован: 06 май 2005, 13:29

Сообщение Zo » 07 май 2005, 02:21

В статье что, неясно написано, что при логине пользователь ОБЯЗАН указывать роль?
Да конечно понятно! ,) Просто я спрашивал, как это можно обойти. и как я понял строки:
1. пользователь логинится (логин и пароль)
2. приложение вычитывает его роль из rdb$privileges
3. приложение делает дисконнект, и повторный коннект
с именем пользователя, паролем, и полученной ролью
и есть ответ на мой вопрос! Спасибо![/quote][/i]

Ответить