Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Обеспечение безопасности в Oracle  [new]
alteksa
Member

Откуда:
Сообщений: 15
Всем привет!
Объясню суть темы вкратце - как лучше спроектировать схему для правильного и надежного взаимодействия всех её объектов с пользователем?

Разрабатывается пока что только десктопное приложение, которое работает с Oracle-ом для автоматизации рабочих процессов на предприятии. Пока разрабатывается для личных нужд, но в последствии хочется им поделиться :)
Если предоставлять доступ к своей БД, как лучше организовать регистрацию новых предприятий, а потом и их сотрудников?

Что уже было сделано:
1. Чтобы избежать всякого рода пакости, создана backend-схема, на которой находятся все объекты.
2. создана frontend-схема, на которой находятся синонимы объектов из первой и привилегии только для оперирования с данными
Далее навесили after create on schema trigger, который в джобе вызывает процедуру для создания синонима объекта на frontend и дачи ему необходимой привилегии. Пока всё работает. Создали всё необходимое для работы программы(работает с frontend) - чтобы ограничить возможности подчиненных использовали sys_context с разделением на роли. Получается, список сотрудников и их роли вбивались прямо в таблицу Developer-ом.

Наброски:
Сейчас же планируется добавлять другие предприятия - на фронтовой схеме, не создавать новую схему для каждого предприятия так как число компаний пока неизвестно, но ясно, что каждая будет работать преимущественно с несколькими таблицами.
Для этого случая лучше использовать policy(RLS)? Создать поле типа dep на каждой таблице и передавать в предикат id_dep?

P.S. Не подумайте, что мне нужно все преподнести на блюдечке с каёмочкой, просто интересно спросить у людей, которые сталкивались с подобной ситуацией. Заранее благодарю за любые ответы!
3 фев 16, 06:03    [18765115]     Ответить | Цитировать Сообщить модератору
 Re: Обеспечение безопасности в Oracle  [new]
alteksa
Member

Откуда:
Сообщений: 15
Как я вижу процедуру регистрации нового предприятия - в форме вбиваются все данные нового предприятия, ему присваивается какой-то dep и создаётся сотрудник с высшей ролью(admin_user) в разрезе своей компании.
Он же может всё просматривать и создавать других пользователей в своей компании с разными ролями.
Логин и пароль сотрудника используются для идентификации, также имя и пароль схемы и алиас сервера.
3 фев 16, 06:19    [18765121]     Ответить | Цитировать Сообщить модератору
 Re: Обеспечение безопасности в Oracle  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
alteksa
создана frontend-схема, на которой находятся синонимы объектов из первой и привилегии только для оперирования с данными

Как бы вам это странно не казалось, но привилегии то будут выданы на объекты backend-схемы, frontend-схема здесь даже не сбоку бантик.
Непонятно, чего вы хотели добиться, делая частные синонимы в frontend-схеме. Чем вам не подошла backend-схема или pulic синонимы?
3 фев 16, 10:03    [18765518]     Ответить | Цитировать Сообщить модератору
 Re: Обеспечение безопасности в Oracle  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
Viewer
... pulic синонимы?

public
3 фев 16, 10:05    [18765524]     Ответить | Цитировать Сообщить модератору
 Re: Обеспечение безопасности в Oracle  [new]
PPA
Member

Откуда: Караганда -> Липецк
Сообщений: 812
alteksa,

Куча схем с приватными синонимами - это жуть по-моему.
Почему не используете простого юзера без объектов + ALTER SESSION SET CURRENT_SCHEMA ?
3 фев 16, 12:17    [18766364]     Ответить | Цитировать Сообщить модератору
 Re: Обеспечение безопасности в Oracle  [new]
Elic
Member

Откуда:
Сообщений: 29990
PPA
Куча схем с приватными синонимами - это жуть по-моему.
В этом нет ничего страшного, если подходить с умом.
3 фев 16, 12:23    [18766400]     Ответить | Цитировать Сообщить модератору
 Re: Обеспечение безопасности в Oracle  [new]
alteksa
Member

Откуда:
Сообщений: 15
Viewer,

привилегии будут выданы для работы с данными, то есть если таблица или вьюха на select, insert, update, delete. Чтобы пользователь, зная схему и её пароль видел одни синонимы у себя на объекты в бэк - схеме. Удалить их или изменить структуру, тем самым нарушив работоспособность всего приложения он не должен.

Да, согласен, что с синонимами выглядит не очень, но как ещё пользователю ограничить права на свои же объекты? При этом нам работать на схеме конечно придётся.
3 фев 16, 12:36    [18766505]     Ответить | Цитировать Сообщить модератору
 Re: Обеспечение безопасности в Oracle  [new]
Elic
Member

Откуда:
Сообщений: 29990
alteksa
с синонимами выглядит не очень, но как ещё пользователю ограничить права на свои же объекты?
Права не регулируются синонимами.
3 фев 16, 13:06    [18766778]     Ответить | Цитировать Сообщить модератору
 Re: Обеспечение безопасности в Oracle  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
Viewer
привилегии то будут выданы на объекты backend-схемы, frontend-схема здесь даже не сбоку бантик

Привилегии будут выданы не на объекты backend схемы, а на frontend синонимы.
И вообще-то разграничение доступа таким образом (back/front-end) - для многих нормальная практика.
3 фев 16, 13:17    [18766922]     Ответить | Цитировать Сообщить модератору
 Re: Обеспечение безопасности в Oracle  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
alteksa, FYI:

12c Release 1: Can Grant Roles to PL/SQL Packages and Standalone Subprograms
3 фев 16, 13:30    [18767080]     Ответить | Цитировать Сообщить модератору
 Re: Обеспечение безопасности в Oracle  [new]
Elic
Member

Откуда:
Сообщений: 29990
--Eugene--
Привилегии будут выданы не на объекты backend схемы, а на frontend синонимы.
Ты заблуждаешься. Синоним - это всего лишь альтернативное имя, которое разрешается в объект при сохранении привилегии.
3 фев 16, 13:52    [18767245]     Ответить | Цитировать Сообщить модератору
 Re: Обеспечение безопасности в Oracle  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
Elic
Ты заблуждаешься
прошу прощения, ступил
3 фев 16, 14:03    [18767322]     Ответить | Цитировать Сообщить модератору
 Re: Обеспечение безопасности в Oracle  [new]
dba123
Member

Откуда:
Сообщений: 1054
alteksa
Как я вижу процедуру регистрации нового предприятия - в форме вбиваются все данные нового предприятия, ему присваивается какой-то dep и создаётся сотрудник с высшей ролью(admin_user) в разрезе своей компании.
Он же может всё просматривать и создавать других пользователей в своей компании с разными ролями.
Логин и пароль сотрудника используются для идентификации, также имя и пароль схемы и алиас сервера.
Разрабатывайте сразу с прицелом на контейнерные ДБ (12С)
Стараюсь придерживаться такой схемы(ЕЕ):

- отдельное предприятие = отдельная схема(1-2шт.) с префиксом ADATA, ASECURE, BDATA, BSECURE
(удобно сопровождать, импорт/экспорт, расширять: функционал м.б. разным у предприятий)

- RLS необходим, но на общие таблицы, связанные больше с правами доступа администраторов и параметрами приложений

- Создаю пакеты для сопровождения пользователей
(аутентификация по предпочтительности: оракловая - ДБ, OS athentication-externally/LDAP-globally)
пароли пользователей в таблицах не держу

- пакет для аудита, журнал учета времени исполнения типовых операций
- логон-триггер, init_context, client_identifier
- secure application roles (устанавливают текущую схему и роли)
- profiles
- verify_function
3 фев 16, 15:15    [18767873]     Ответить | Цитировать Сообщить модератору
 Re: Обеспечение безопасности в Oracle  [new]
alteksa
Member

Откуда:
Сообщений: 15
dba123
- отдельное предприятие = отдельная схема


Спасибо за рекомендации, но а как быть, если предприятий будет неопределенное количество и каждое предприятие должно иметь возможность зарегистрировать себя, и спокойно работать во время пробного периода?
Как автоматизировать добавление нового предприятия из под программы - создания новых схем(в данном случае двух) посредством скриптов и батника с impdp?
У меня просто всегда есть что-то инвалидное после импорта и без ручного вмешательства не обходится.

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

Пароли в чистом виде не хранятся, только хеш от них, используя SH1 из dbms_crypto.

Поэтому, показалось, что предпочтительнее было хранить данные в одной схеме, отображая их в разрезе предприятия. Правда, в этом случае, настораживает необходимость практически во всех таблицах использовать RLS.
3 фев 16, 16:47    [18768612]     Ответить | Цитировать Сообщить модератору
 Re: Обеспечение безопасности в Oracle  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
alteksa
просто интересно спросить у людей, которые сталкивались с подобной ситуацией
Либо
а) самодельный велосипед с правами. делать в базе таблички с описанием кто что может делать в разрезе логина приложения.
мниус, что этот самый логин приложения надо передавать в хранимки (или обертки) чтоб проверить права.
б) для каждого предприятия выдается логин Оракла (схема). кроме этого создается proxy API схема из которой потом грантуется что надо соответствующим схемам. Эта proxy API нужна потому что иногда невозможно грантовать, например весь пакет, а надо только определенные профедуры/функции.
минус очевидно, что число схем может сильно разростаться, хоть создание базовой схемы и элементарно автоматизируется.
При грамотной реализации оба подхода вполне себе решение.

RLS лепить не рекомендуется. Он имеет больше смысла когда нет процедурного API а вместо этого идут прямые обращения к таблицам.
3 фев 16, 17:05    [18768820]     Ответить | Цитировать Сообщить модератору
 Re: Обеспечение безопасности в Oracle  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10051
alteksa,


Для начала: есть database users и еcть application users. Соответственно есть database security и application security. Создавать database user для каждого application user в большинстве случаев плохой дизайн.

SY.
3 фев 16, 17:29    [18769036]     Ответить | Цитировать Сообщить модератору
 Re: Обеспечение безопасности в Oracle  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
SY,

чем плохой? (если, в общем случае, каждому Пользователю Приложения предназначен свой [ограниченный] набор Ресурсов БД)
3 фев 16, 17:38    [18769109]     Ответить | Цитировать Сообщить модератору
 Re: Обеспечение безопасности в Oracle  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
точнее, "каждому Приложению"
3 фев 16, 17:39    [18769120]     Ответить | Цитировать Сообщить модератору
 Re: Обеспечение безопасности в Oracle  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
--Eugene--,

Бывают приложения со 100500 application users.
Представь что весомая часть из них активно работает.
Дальше продолжать?
3 фев 16, 17:49    [18769188]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить