|
|
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
Стоит задача проектирования достаточно большой системы. Идея в том что вся бизнес-логика будет на сервере. СУБД - Oracle; Двузвенная архитектура; Пользователй системы будет достаточно много ~2000 Мои мысли пока сводяться к следующему: - пользователи оформлены как Системные пользователи Оракла с минимальными привилегиями. т.е. Connect, Execute Procedure, Select from View - когда пользователь захочет вставить данные - он делает exec Procedure (которые конешно в пакеджах будут забиты). Затем система обработает пользователя - посмотрит его уровень доступа из служебной таблицы - и если всё ок - вставит данные в систему.. Единственное что пока смущает так это большое количество Системных пользователей. Может есть ещё какиелибо варианты? Или ссылки на статьи по данной теме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 10:15 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
забыл добавить.. Требуеться полная персонализация пользователей системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 10:15 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
Если есть разделение только по функциональности, то можно использовать ограничение на клиенте, т.е. подгружать только те менюшки, кот. доступны данному пользователю. Можно еще расмотреть вариант 3ех звенной архитектуры и эту функцию отдать СП. Ваш вариант тяжел в соправождении, т.е. если Вы хотите поправить инсерт н-р, то прийдется компелять пекаджи, а это сами знаете к чему приводит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 10:26 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
Вроде в Оракле есть позаписный уровень доступа к информации, почему бы стандартными группами и пользователями не воспользоваться, чем изобретать свой велосипед ? Если чем то не устраивает, то IMHO лучше сделать проверки на доступ не в ХП, а триггерах, тогда не нужно будет на каждый чих изменения информации свою ХП писать. Для просмотра информации достаточно будет обновляемые представления, а на них и раздавать права. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 10:44 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
basЕсли есть разделение только по функциональности, то можно использовать ограничение на клиенте, т.е. подгружать только те менюшки, кот. доступны данному пользователю. Вариант не очень подходит.. А если пользователь подгрузиться к СУБД через SQL*PLUS и сможет спокойно наделить себе большей функциональностью. К томуже клиента делаем не толстым, т.к. возможно в будущем откажемся от платформы Windows, тогда нам останеться лишь перерисовать окошки на другой платформе. С перекомпиляцией PACKAGE возможно трудностей и не возникнет. У системы регламент работы не 24\7 а 8\5 поэтому перекомпиляцию можно осуществлять в нерабочее время. Больше интересует вопрос про хранение пользователей - и подходов организации разделения доступа.. Детальный контроль доступа в данном случае кажеться слишком громоздким.. т.к. пользователю в нашем случае будут даны GRANTs на пакеты, соответсвующие его роли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 10:44 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
ASCRUSВроде в Оракле есть позаписный уровень доступа к информации, почему бы стандартными группами и пользователями не воспользоваться, чем изобретать свой велосипед ? Если чем то не устраивает, то IMHO лучше сделать проверки на доступ не в ХП, а триггерах, тогда не нужно будет на каждый чих изменения информации свою ХП писать. Для просмотра информации достаточно будет обновляемые представления, а на них и раздавать права. Как раз это и интересует, это нормальная практика организации несколько тысяч пользователей Стандартными средствами СУБД? Тогда можно было бы просто раздавать GRANTs на Пакеты и Вьюхи - определенным ролям.. и создавать пользоватей наделяя их этими ролями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 10:50 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
Я полагаю что автору топика следует раздавать права не на объекты базы данных, а на права на прведение бизнес-транзакций. Мягко говоря - это не одно и то же. В этом случае система безопасности должна быть реализована самостоятельно, отдельно от системы безопасности БД. Any comments? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 10:59 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
gardenmanЯ полагаю что автору топика следует раздавать права не на объекты базы данных, а на права на прведение бизнес-транзакций. Мягко говоря - это не одно и то же. В этом случае система безопасности должна быть реализована самостоятельно, отдельно от системы безопасности БД. Any comments? Ну у меня так и сделано, все описывается бизнес-режимами, триггера вызывают специальную ХП, которая проверяет наличие прав пользователя по его группам, права раздаются еще и по узлам, что актуально для распределенных БД, где юзер имея права на работу с информацией узла, может работать с ней что в консолидированной, что в удаленной БД. Все это конечно реализуемо, но вроде автор нажимает на то, что у него много пользователей, хотя понятие группы легко решает эти проблемы. Я лично порекомендовал бы впервую очередь ему детально рассмотреть, что имеется на борту Оракла, а потом дописать недостающий функционал на базе существующей системы безопасности, а не реализовывать все с нуля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 11:08 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
gardenmanследует раздавать права не на объекты базы данных, а на права на прведение бизнес-транзакций. В этом случае система безопасности должна быть реализована самостоятельно, отдельно от системы безопасности БД. да, правильно. 1. доступ к функциям системы 2. доступ к определенной информации для выполнения доступных функций но для этого надо иметь некую информационную модель -набор объектов к которым дается доступ. А СУБД можно использовать для авторизации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 11:55 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
мод 1. доступ к функциям системы 2. доступ к определенной информации для выполнения доступных функций но для этого надо иметь некую информационную модель -набор объектов к которым дается доступ. А СУБД можно использовать для авторизации. Допустим у меня в системе есть функция "Регистрация покупателя" реализована она в PACKAGE - "Работа с покупателями" Есть роль - "Менеджер по общению с клиентами" с грантом на "Работа с покупателями" И вот у меня на предприятии есть некий менеджер Вася П. - я его регистирую в системе ("Vasya") и назначаю ему роль - "Менеджер по общению с клиентами", теперь он сможет инициировать выполнение функции "регистрация покупателей" и просматривать вьюху "Покупатели".. Это прально? Проблемы начинаються далее, допустим нужно отредактировать данные о покупателе, но менеджер Vasya не может редактировать тех, кого внес не он.. и Вот тут начинаеться трабла... Можно конешно использовать подход по разграничению доступа на уровне строк, т.е. добавлять в табличку OWNER - и юзать пакет DBMS_RLS.... но это ИМХО достаточно громоздко.. Интересно узнать типовые подходы - о том как обычно хранят пользователей.. Возможно создаеться табличка с пользователями и их уровнем доступа.. или ещё как-нибудь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 12:13 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
Для управления большим числом пользователей мы делали систему управления правами - поверх доступа к СУБД. А к СУБД - два варианта или по одному пользователю, или каждому - создается аналог в СУБД (или используется доступ по аутентфиикации службы каталогов). Внутри СУБД можно делать разными способами - в зависимости от вертикального или горизонтального (т.е. по функциям или областям видимости). Можно определять роли (доступность к объектам) и добавлять описания доступа к записям с определенными полями. Или все же делать доступ к базе по одному пользователю, а все управления выносить выше (мы выбарли последнее). Но у нас пользователей - 17 тыс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 12:49 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
iAndrewИ вот у меня на предприятии есть некий менеджер Вася П. - я его регистирую в системе ("Vasya") и назначаю ему роль - "Менеджер по общению с клиентами", теперь он сможет инициировать выполнение функции "регистрация покупателей" и просматривать вьюху "Покупатели".. Это прально? Проблемы начинаються далее, допустим нужно отредактировать данные о покупателе, но менеджер Vasya не может редактировать тех, кого внес не он.. и Вот тут начинаеться трабла... 1.это правильно и никаких траблов, причем д.б. функции: редактировать только свои редактировать и чужие + ограничения по наборам данных 2. лучше всего хранить бооольшую индексированную таблицу пользователь - функция или набор данных если есть запись - то есть доступ тогда определение доступа за одно чтение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 13:42 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
2 iAndrew То, что вы предложили чуть выше, как раз самое то. Ну а права на конкретное действие с какими-то условиями - например Вася не может редактировать не свои записи - это проверяйте в ХП, которая правит эту запись, либо в триггере после правки таблицы. Я лично делаю все через ХП, проблем ни с чем не испытываю. -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 14:51 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
В любом случае Вам понадобится своя база с описанием прав, в т.ч. пользователей. Вполне разумно "Ваших" пользователей отождествлять с Оракловыми. С какой-то степенью огрубления часть защиты реализуется грантами. Однако тонкая механика - в процедурах. Т.е процедуры сверяются с базой прав. Можно реализовать такие понятия как данные своей организации, данные за последнее время и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 15:51 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
мы хотели реализовать такое понятия как группа.. в итоге добавляеться один столбец в таблицы - "ID группы" Соответсвенно операции по изменению данных в строке может производить тот кто находиться в этой группе. При INSERT'e же этот столбец заполняеться ID'шником группы, посредством ХП. Возникает такая засада!.. Есть такие люди которые входят сразу в несколько групп - соответсвенно, могут редактировать строки этих групп.. НО вот к примеру нужно добавить ещё одну группу (что редко.. но может быть) и нужно тонко синхронизировать то что этот МЕГо-пользователь должен войти в новь созданную группу. Как эту проблему решать? В организации таких пользователей будет не малое количество. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 16:22 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
> мы хотели реализовать такое понятия как группа Да, это стандартное решение. > Возникает такая засада Никакой засады. Пользователь входит в группу с определенными правами или статусом или ролью - называйте как хотите. > Как эту проблему решать? ModelR Вам все уже рассказал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 16:35 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
авторВозникает такая засада!.. Есть такие люди которые входят сразу в несколько групп - соответсвенно, могут редактировать строки этих групп.. А если юзер в нескольких группах, как определите, какой ID туда пихать? :)) Будут ли несколько групп иметь доступ к одной и той же записи? авторНО вот к примеру нужно добавить ещё одну группу (что редко.. но может быть) и нужно тонко синхронизировать то что этот МЕГо-пользователь должен войти в новь созданную группу. А какие тут проблемы? Вы в группу пользователя не собираетесь включать чтоли? Чего тонкого вы нашли? :) -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 17:41 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
iAndrew НО вот к примеру нужно добавить ещё одну группу (что редко.. но может быть) и нужно тонко синхронизировать то что этот МЕГо-пользователь должен войти в новь созданную группу. Как эту проблему решать? В организации таких пользователей будет не малое количество. В ж. Информационные технологии 2006 №2, выйдет наша статья с подробным описанием модели управления пользователями в больших организациях. Может быть Вам поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 03:34 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
вот обдумав вчера вечером родилась вот такая концепция: оцените плиз будут также созданы пакеты для работы .. в которых будут прописаны ID-шники "возможностей" И если например пользователь с LoginName SCOTT захочит сделать MEGA_PKG.INSERT(Client_Name, Client_Surname) будет произведено следующее: 1) Создание курсора по данному пользователю из таблицы Права Пользователя (Возможно на этапе входа лучше такой курсор делать) 2) пробегаем по курсору и смотрим.. есть ли у данного пользователя права на операцию по деланью INSERT в таблицу Клиентов.. если есть то делать Инсерт.. и в таблицу клиентов проставлять Имя пользователя - сделавшего INSERT.. если нету прав - то генерить эксцепшен и ничего не делать.. 3) Если нужно отредактировать другим пользователем. то добавлятьеться ещё одна проверка.. т.е. Этот пользователь помима прав на изменение в таблице клиентов.. должен ещё и быть в тойже группе что и автор INSERT-а.. Вот такие вот идеи.. жду критики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 09:24 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
еще прилагаю концептуальную модель всего этого.. забыл прикрепить к предыдущему посту ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 09:25 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
Еще хорошо бы предусмотреть возможность "Регистрации клиент" по отдельному виду товара (условно говоря, или по отдельнмоу подразделению и т.п.). Кроме того, не мешает управлять автоматически Васями на основе его работы в том подразделении , к которому олн имеет право приписывать клиентов (ну и удалить автоматически Васю, если он уволится). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 10:42 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
Модифицировали модель.. чтобы 1) Определить потенциальные возможности каждой группы 2) Небыло такой вещи как - Если пользователи входят в разные группы. и один пользователь добавляет запись.. поидее другой не должен изменять запись первого. и он по старой модели и не сделает это.. НО если вдруг они войдут ещё в одну группу вместе - то пермиссии на изменения у второго появяться.. Новая модель вроде эту проблему решает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 10:43 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
Вам группы тогда зачем, если вы на пользователя все права вешаете? И кстати, курсором то вы внутри MEGA_PKG.INSERT будете бежать? И почему курсором? Есть гораздо лучшая конструкция - exists(select ...) автор3) Если нужно отредактировать другим пользователем. то добавлятьеться ещё одна проверка.. т.е. Этот пользователь помима прав на изменение в таблице клиентов.. должен ещё и быть в тойже группе что и автор INSERT-а.. А если он в нескольких группах? А если нужно вообще левой группе дать права? -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 11:53 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
iAndrew - пользователи оформлены как Системные пользователи Оракла с минимальными привилегиями. Правильно. iAndrew - когда пользователь захочет вставить данные - он делает exec Procedure (которые конешно в пакеджах будут забиты). Допустимо. Хотя если в тупом варианте типа "процедура insert с параметрами, соответствующими вставляемым полям" - дурная лишняя работа. iAndrewЗатем система обработает пользователя - посмотрит его уровень доступа из служебной таблицы - и если всё ок - вставит данные в систему.. Хреново. Очередной "велосипед своими руками". Ссылки на статьи.... собственно, в документации Oracle большая книга посвящена именно настройке безопасности. Кратко: - Нормальным образом настраиваются роли и гранты пользователей. - Настройка прав на бизнес-функции в простом случае делается через роли. При действительно большом количестве нуждающихся в тонкой настройке бизнес-функций, когда администратор рискует утонуть в ролях, делается соответствующая собственная настройка: таблица бизнес-функций и описанным ниже способом настройка "кому что можно". Клиент либо считывает эту таблицу с наложенными на нее ограничениями, и тем получает полный список возможностей, либо по необходимости запрашивает наличие возможности и соответственно строит интерфейс. - Настройка прав на строки таблиц делается предпочтительно через VPD (Virtual Private Database). Менее удачный, но допустимый вариант - updateable view, скрывающие реальные таблицы. В обоих случаях нужен какой-то набор настроек - собственных таблиц, которые определяют "кому что можно". В любом случае, пользователь имеет именно тот набор данных, которыми он может оперировать. - Если есть проверки, которые нежелательно вносить в политики доступа (например, из-за долгого времени проверки), они делаются на триггерах. - Бизнес-логика, то есть хранимки, сосредоточена на сути задачи - на ее функционале и максимально избавлена от технического кода, в том числе от проверок прав. Нужно стремиться к тому, чтобы одним взглядом на основную процедуру можно было понять ее суть и алгоритм. Неизбежно громоздкие вещи, например сложные проверки параметров, можно вынести во вспомогательные подпрограммы. - Хранимый код по необходимости следует делать выполняющимся с правами вызывающего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 11:55 |
|
||
|
Пользователи системы - как организовать?
|
|||
|---|---|---|---|
|
#18+
softwarer При действительно большом количестве нуждающихся в тонкой настройке бизнес-функций, когда администратор рискует утонуть в ролях, делается соответствующая собственная настройка: таблица бизнес-функций и описанным ниже способом настройка "кому что можно". Можно какойнить небольшой примерчик таблички бизнес-функций?.. softwarer - Настройка прав на строки таблиц делается предпочтительно через VPD (Virtual Private Database). VPD = FGA? Если так, то на эту технологию нужны какиенить дополнительные лицензии? softwarer Менее удачный, но допустимый вариант - updateable view, скрывающие реальные таблицы. В обоих случаях нужен какой-то набор настроек - собственных таблиц, которые определяют "кому что можно". Опять же, можно какойнить примерчик про такие таблички.. P.S. Спасибо что откликнулись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 12:57 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33619033&tid=1545354]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
140ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 228ms |
| total: | 470ms |

| 0 / 0 |
