Как правильно управлять пользователями / разрешениями в среде web / PL / SQL? - PullRequest
0 голосов
/ 16 сентября 2011

Моя команда разработает внутреннее (известные пользователи) приложение, которое имеет архитектуру, основанную на Java в качестве внешнего интерфейса и PL / SQL в качестве внутреннего.Итак, в настоящее время мы думаем о лучшем решении для управления пользователем / разрешениями, и у нас есть два варианта:

  1. Каждый пользователь имеет свою собственную учетную запись базы данных, которой предоставляются разрешения.В настоящее время устаревшая система использует этот подход, и мне он не нравится, потому что он управляет разрешениями на основе гранулярности объектов базы данных.Так что я считаю плохим выбором иметь соединение с базой данных на пользователя.Можете ли вы увидеть больше минусов здесь?

  2. Создайте несколько таблиц в базе данных для хранения пользователей и их разрешений / профилей, а также создайте процедуру PL / SQL для входа в систему, создания токена и включения параметра для всех остальных PL /.SQL, чтобы проверить этот токен и затем разрешить (или нет) выполнение.

Итак, вы можете спросить меня: почему бы просто не управлять своими разрешениями в вашем веб-приложении?Ответ: Эти PL / SQL уже сделаны и используются всеми унаследованными системами, и это веб-приложение должно вести себя в соответствии с ним (т. Е. Пользовательские разрешения должны управляться PL / SQL и его гранулярность определяется на основе.)

Как вы поступите в этом случае?

1 Ответ

1 голос
/ 16 сентября 2011

Я думаю, что использование встроенного механизма базы данных всегда предпочтительнее, чем наш собственный.И это относится как к входу в систему пользователей, так и к чему-либо еще.

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

Чтобы ответить на ваше основное возражение, нам не нужно управлять привилегиями базы данных на уровне пользователя.Вот почему у нас есть роли.Для обычных пользователей роль предоставит достаточные привилегии.

Итак:

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

Узнать больше .

...