Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Пользователи системы - как организовать? / 25 сообщений из 32, страница 1 из 2
22.03.2006, 10:15
    #33616226
iAndrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
Стоит задача проектирования достаточно большой системы.
Идея в том что вся бизнес-логика будет на сервере. СУБД - Oracle; Двузвенная архитектура;
Пользователй системы будет достаточно много ~2000

Мои мысли пока сводяться к следующему:
- пользователи оформлены как Системные пользователи Оракла с минимальными привилегиями. т.е. Connect, Execute Procedure, Select from View
- когда пользователь захочет вставить данные - он делает exec Procedure (которые конешно в пакеджах будут забиты). Затем система обработает пользователя - посмотрит его уровень доступа из служебной таблицы - и если всё ок - вставит данные в систему.. Единственное что пока смущает так это большое количество Системных пользователей.

Может есть ещё какиелибо варианты? Или ссылки на статьи по данной теме
...
Рейтинг: 0 / 0
22.03.2006, 10:15
    #33616229
iAndrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
забыл добавить.. Требуеться полная персонализация пользователей системы.
...
Рейтинг: 0 / 0
22.03.2006, 10:26
    #33616274
bas
bas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
Если есть разделение только по функциональности, то можно использовать ограничение на клиенте, т.е. подгружать только те менюшки, кот. доступны данному пользователю.

Можно еще расмотреть вариант 3ех звенной архитектуры и эту функцию отдать СП.

Ваш вариант тяжел в соправождении, т.е. если Вы хотите поправить инсерт н-р, то прийдется компелять пекаджи, а это сами знаете к чему приводит...
...
Рейтинг: 0 / 0
22.03.2006, 10:44
    #33616350
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
Вроде в Оракле есть позаписный уровень доступа к информации, почему бы стандартными группами и пользователями не воспользоваться, чем изобретать свой велосипед ?

Если чем то не устраивает, то IMHO лучше сделать проверки на доступ не в ХП, а триггерах, тогда не нужно будет на каждый чих изменения информации свою ХП писать. Для просмотра информации достаточно будет обновляемые представления, а на них и раздавать права.
...
Рейтинг: 0 / 0
22.03.2006, 10:44
    #33616353
iAndrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
basЕсли есть разделение только по функциональности, то можно использовать ограничение на клиенте, т.е. подгружать только те менюшки, кот. доступны данному пользователю.

Вариант не очень подходит..
А если пользователь подгрузиться к СУБД через SQL*PLUS и сможет спокойно наделить себе большей функциональностью.
К томуже клиента делаем не толстым, т.к. возможно в будущем откажемся от платформы Windows, тогда нам останеться лишь перерисовать окошки на другой платформе.

С перекомпиляцией PACKAGE возможно трудностей и не возникнет. У системы регламент работы не 24\7 а 8\5 поэтому перекомпиляцию можно осуществлять в нерабочее время.

Больше интересует вопрос про хранение пользователей - и подходов организации разделения доступа..
Детальный контроль доступа в данном случае кажеться слишком громоздким.. т.к. пользователю в нашем случае будут даны GRANTs на пакеты, соответсвующие его роли.
...
Рейтинг: 0 / 0
22.03.2006, 10:50
    #33616373
iAndrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
ASCRUSВроде в Оракле есть позаписный уровень доступа к информации, почему бы стандартными группами и пользователями не воспользоваться, чем изобретать свой велосипед ?

Если чем то не устраивает, то IMHO лучше сделать проверки на доступ не в ХП, а триггерах, тогда не нужно будет на каждый чих изменения информации свою ХП писать. Для просмотра информации достаточно будет обновляемые представления, а на них и раздавать права.

Как раз это и интересует, это нормальная практика организации несколько тысяч пользователей Стандартными средствами СУБД?

Тогда можно было бы просто раздавать GRANTs на Пакеты и Вьюхи - определенным ролям.. и создавать пользоватей наделяя их этими ролями.
...
Рейтинг: 0 / 0
22.03.2006, 10:59
    #33616414
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
Я полагаю что автору топика следует раздавать права не на объекты базы данных, а на права на прведение бизнес-транзакций. Мягко говоря - это не одно и то же. В этом случае система безопасности должна быть реализована самостоятельно, отдельно от системы безопасности БД.
Any comments?
...
Рейтинг: 0 / 0
22.03.2006, 11:08
    #33616448
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
gardenmanЯ полагаю что автору топика следует раздавать права не на объекты базы данных, а на права на прведение бизнес-транзакций. Мягко говоря - это не одно и то же. В этом случае система безопасности должна быть реализована самостоятельно, отдельно от системы безопасности БД.
Any comments?
Ну у меня так и сделано, все описывается бизнес-режимами, триггера вызывают специальную ХП, которая проверяет наличие прав пользователя по его группам, права раздаются еще и по узлам, что актуально для распределенных БД, где юзер имея права на работу с информацией узла, может работать с ней что в консолидированной, что в удаленной БД. Все это конечно реализуемо, но вроде автор нажимает на то, что у него много пользователей, хотя понятие группы легко решает эти проблемы. Я лично порекомендовал бы впервую очередь ему детально рассмотреть, что имеется на борту Оракла, а потом дописать недостающий функционал на базе существующей системы безопасности, а не реализовывать все с нуля.
...
Рейтинг: 0 / 0
22.03.2006, 11:55
    #33616658
мод
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
gardenmanследует раздавать права не на объекты базы данных, а на права на прведение бизнес-транзакций. В этом случае система безопасности должна быть реализована самостоятельно, отдельно от системы безопасности БД.

да, правильно.
1. доступ к функциям системы
2. доступ к определенной информации для выполнения доступных функций
но для этого надо иметь некую информационную модель -набор объектов к которым дается доступ.
А СУБД можно использовать для авторизации.
...
Рейтинг: 0 / 0
22.03.2006, 12:13
    #33616768
iAndrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
мод
1. доступ к функциям системы
2. доступ к определенной информации для выполнения доступных функций
но для этого надо иметь некую информационную модель -набор объектов к которым дается доступ.
А СУБД можно использовать для авторизации.

Допустим у меня в системе есть функция "Регистрация покупателя"
реализована она в PACKAGE - "Работа с покупателями"

Есть роль - "Менеджер по общению с клиентами" с грантом на "Работа с покупателями"

И вот у меня на предприятии есть некий менеджер Вася П. - я его регистирую в системе ("Vasya") и назначаю ему роль - "Менеджер по общению с клиентами", теперь он сможет инициировать выполнение функции "регистрация покупателей"
и просматривать вьюху "Покупатели"..
Это прально?

Проблемы начинаються далее, допустим нужно отредактировать данные о покупателе, но менеджер Vasya не может редактировать тех, кого внес не он..
и Вот тут начинаеться трабла...

Можно конешно использовать подход по разграничению доступа на уровне строк, т.е. добавлять в табличку OWNER - и юзать пакет DBMS_RLS.... но это ИМХО достаточно громоздко..

Интересно узнать типовые подходы - о том как обычно хранят пользователей.. Возможно создаеться табличка с пользователями и их уровнем доступа.. или ещё как-нибудь.
...
Рейтинг: 0 / 0
22.03.2006, 12:49
    #33616968
Mainframe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
Для управления большим числом пользователей мы делали систему управления правами - поверх доступа к СУБД. А к СУБД - два варианта или по одному пользователю, или каждому - создается аналог в СУБД (или используется доступ по аутентфиикации службы каталогов). Внутри СУБД можно делать разными способами - в зависимости от вертикального или горизонтального (т.е. по функциям или областям видимости). Можно определять роли (доступность к объектам) и добавлять описания доступа к записям с определенными полями. Или все же делать доступ к базе по одному пользователю, а все управления выносить выше (мы выбарли последнее). Но у нас пользователей - 17 тыс.
...
Рейтинг: 0 / 0
22.03.2006, 13:42
    #33617202
мод
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
iAndrewИ вот у меня на предприятии есть некий менеджер Вася П. - я его регистирую в системе ("Vasya") и назначаю ему роль - "Менеджер по общению с клиентами", теперь он сможет инициировать выполнение функции "регистрация покупателей"
и просматривать вьюху "Покупатели"..
Это прально?

Проблемы начинаються далее, допустим нужно отредактировать данные о покупателе, но менеджер Vasya не может редактировать тех, кого внес не он..
и Вот тут начинаеться трабла...

1.это правильно и никаких траблов, причем д.б. функции:
редактировать только свои
редактировать и чужие
+ ограничения по наборам данных
2. лучше всего хранить бооольшую индексированную таблицу
пользователь - функция или набор данных
если есть запись - то есть доступ
тогда определение доступа за одно чтение
...
Рейтинг: 0 / 0
22.03.2006, 14:51
    #33617492
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
2 iAndrew
То, что вы предложили чуть выше, как раз самое то.

Ну а права на конкретное действие с какими-то условиями - например Вася не может редактировать не свои записи - это проверяйте в ХП, которая правит эту запись, либо в триггере после правки таблицы.

Я лично делаю все через ХП, проблем ни с чем не испытываю.


-- Tygra's --
...
Рейтинг: 0 / 0
22.03.2006, 15:51
    #33617704
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
В любом случае Вам понадобится своя база с описанием прав, в т.ч. пользователей. Вполне разумно "Ваших" пользователей отождествлять с Оракловыми. С какой-то степенью огрубления часть защиты реализуется грантами. Однако тонкая механика - в процедурах. Т.е процедуры сверяются с базой прав. Можно реализовать такие понятия как данные своей организации, данные за последнее время и т.д.
...
Рейтинг: 0 / 0
22.03.2006, 16:22
    #33617808
iAndrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
мы хотели реализовать такое понятия как группа..
в итоге добавляеться один столбец в таблицы - "ID группы"
Соответсвенно операции по изменению данных в строке может производить тот кто находиться в этой группе. При INSERT'e же этот столбец заполняеться ID'шником группы, посредством ХП.

Возникает такая засада!.. Есть такие люди которые входят сразу в несколько групп - соответсвенно, могут редактировать строки этих групп..

НО вот к примеру нужно добавить ещё одну группу (что редко.. но может быть) и нужно тонко синхронизировать то что этот МЕГо-пользователь должен войти в новь созданную группу.

Как эту проблему решать? В организации таких пользователей будет не малое количество.
...
Рейтинг: 0 / 0
22.03.2006, 16:35
    #33617851
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
> мы хотели реализовать такое понятия как группа

Да, это стандартное решение.

> Возникает такая засада

Никакой засады. Пользователь входит в группу с определенными правами или статусом или ролью - называйте как хотите.

> Как эту проблему решать?

ModelR Вам все уже рассказал.
...
Рейтинг: 0 / 0
22.03.2006, 17:41
    #33618101
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
авторВозникает такая засада!.. Есть такие люди которые входят сразу в несколько групп - соответсвенно, могут редактировать строки этих групп..

А если юзер в нескольких группах, как определите, какой ID туда пихать? :))
Будут ли несколько групп иметь доступ к одной и той же записи?

авторНО вот к примеру нужно добавить ещё одну группу (что редко.. но может быть) и нужно тонко синхронизировать то что этот МЕГо-пользователь должен войти в новь созданную группу.
А какие тут проблемы? Вы в группу пользователя не собираетесь включать чтоли? Чего тонкого вы нашли? :)


-- Tygra's --
...
Рейтинг: 0 / 0
23.03.2006, 03:34
    #33618802
Mainframe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
iAndrew
НО вот к примеру нужно добавить ещё одну группу (что редко.. но может быть) и нужно тонко синхронизировать то что этот МЕГо-пользователь должен войти в новь созданную группу.

Как эту проблему решать? В организации таких пользователей будет не малое количество.
В ж. Информационные технологии 2006 №2, выйдет наша статья с подробным описанием модели управления пользователями в больших организациях. Может быть Вам поможет.
...
Рейтинг: 0 / 0
23.03.2006, 09:24
    #33619033
iAndrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
вот обдумав вчера вечером родилась вот такая концепция:

оцените плиз


будут также созданы пакеты для работы ..
в которых будут прописаны ID-шники "возможностей"

И если например пользователь с LoginName SCOTT захочит сделать
MEGA_PKG.INSERT(Client_Name, Client_Surname)
будет произведено следующее:

1) Создание курсора по данному пользователю из таблицы Права Пользователя
(Возможно на этапе входа лучше такой курсор делать)
2) пробегаем по курсору и смотрим.. есть ли у данного пользователя права на операцию по деланью INSERT в таблицу Клиентов.. если есть то делать Инсерт.. и в таблицу клиентов проставлять Имя пользователя - сделавшего INSERT..
если нету прав - то генерить эксцепшен и ничего не делать..

3) Если нужно отредактировать другим пользователем. то добавлятьеться ещё одна проверка.. т.е. Этот пользователь помима прав на изменение в таблице клиентов.. должен ещё и быть в тойже группе что и автор INSERT-а..

Вот такие вот идеи.. жду критики
...
Рейтинг: 0 / 0
23.03.2006, 09:25
    #33619035
iAndrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
еще прилагаю концептуальную модель всего этого..
забыл прикрепить к предыдущему посту
...
Рейтинг: 0 / 0
23.03.2006, 10:42
    #33619272
Mainframe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
Еще хорошо бы предусмотреть возможность "Регистрации клиент" по отдельному виду товара (условно говоря, или по отдельнмоу подразделению и т.п.). Кроме того, не мешает управлять автоматически Васями на основе его работы в том подразделении , к которому олн имеет право приписывать клиентов (ну и удалить автоматически Васю, если он уволится).
...
Рейтинг: 0 / 0
23.03.2006, 10:43
    #33619280
iAndrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
Модифицировали модель.. чтобы

1) Определить потенциальные возможности каждой группы
2) Небыло такой вещи как
- Если пользователи входят в разные группы. и один пользователь добавляет запись.. поидее другой не должен изменять запись первого. и он по старой модели и не сделает это.. НО если вдруг они войдут ещё в одну группу вместе - то пермиссии на изменения у второго появяться..
Новая модель вроде эту проблему решает
...
Рейтинг: 0 / 0
23.03.2006, 11:53
    #33619639
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
Вам группы тогда зачем, если вы на пользователя все права вешаете?

И кстати, курсором то вы внутри MEGA_PKG.INSERT будете бежать? И почему курсором? Есть гораздо лучшая конструкция - exists(select ...)

автор3) Если нужно отредактировать другим пользователем. то добавлятьеться ещё одна проверка.. т.е. Этот пользователь помима прав на изменение в таблице клиентов.. должен ещё и быть в тойже группе что и автор INSERT-а..
А если он в нескольких группах?
А если нужно вообще левой группе дать права?

-- Tygra's --
...
Рейтинг: 0 / 0
23.03.2006, 11:55
    #33619647
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
iAndrew - пользователи оформлены как Системные пользователи Оракла с минимальными привилегиями.
Правильно.

iAndrew - когда пользователь захочет вставить данные - он делает exec Procedure (которые конешно в пакеджах будут забиты).
Допустимо. Хотя если в тупом варианте типа "процедура insert с параметрами, соответствующими вставляемым полям" - дурная лишняя работа.

iAndrewЗатем система обработает пользователя - посмотрит его уровень доступа из служебной таблицы - и если всё ок - вставит данные в систему..
Хреново. Очередной "велосипед своими руками".

Ссылки на статьи.... собственно, в документации Oracle большая книга посвящена именно настройке безопасности.

Кратко:

- Нормальным образом настраиваются роли и гранты пользователей.

- Настройка прав на бизнес-функции в простом случае делается через роли. При действительно большом количестве нуждающихся в тонкой настройке бизнес-функций, когда администратор рискует утонуть в ролях, делается соответствующая собственная настройка: таблица бизнес-функций и описанным ниже способом настройка "кому что можно". Клиент либо считывает эту таблицу с наложенными на нее ограничениями, и тем получает полный список возможностей, либо по необходимости запрашивает наличие возможности и соответственно строит интерфейс.

- Настройка прав на строки таблиц делается предпочтительно через VPD (Virtual Private Database). Менее удачный, но допустимый вариант - updateable view, скрывающие реальные таблицы. В обоих случаях нужен какой-то набор настроек - собственных таблиц, которые определяют "кому что можно". В любом случае, пользователь имеет именно тот набор данных, которыми он может оперировать.

- Если есть проверки, которые нежелательно вносить в политики доступа (например, из-за долгого времени проверки), они делаются на триггерах.

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

- Хранимый код по необходимости следует делать выполняющимся с правами вызывающего.
...
Рейтинг: 0 / 0
23.03.2006, 12:57
    #33619974
iAndrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователи системы - как организовать?
softwarer При действительно большом количестве нуждающихся в тонкой настройке бизнес-функций, когда администратор рискует утонуть в ролях, делается соответствующая собственная настройка: таблица бизнес-функций и описанным ниже способом настройка "кому что можно".
Можно какойнить небольшой примерчик таблички бизнес-функций?..

softwarer
- Настройка прав на строки таблиц делается предпочтительно через VPD (Virtual Private Database).

VPD = FGA? Если так, то на эту технологию нужны какиенить дополнительные лицензии?

softwarer
Менее удачный, но допустимый вариант - updateable view, скрывающие реальные таблицы. В обоих случаях нужен какой-то набор настроек - собственных таблиц, которые определяют "кому что можно".
Опять же, можно какойнить примерчик про такие таблички..

P.S. Спасибо что откликнулись.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Пользователи системы - как организовать? / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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