CftClub.ru
Клуб специалистов ЦФТ-Банк

Смена группы доступа программным путем
На страницу Пред.  1, 2
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Администрирование доступа и журналирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
molokov
Участник со стажем


Вступление в Клуб: 28.09.2007
СообщениеПт Ноя 30, 2012 06:21    Ответить с цитатой
Полезность: Нет оценки
Не правда все это, что только для IBS, работает.
Наверно вы плохо капаете.

Gobur пишет:

по комментам спецов по ядру - в SECADMINE зашита проверка на то кто запускает, т.е. токо IBS может - так что даже если дать права - не прокатывает. Вроде как доп.защита от таких копателей)
Gobur
Профи


Вступление в Клуб: 06.11.2012
СообщениеВт Янв 22, 2013 20:35    Ответить с цитатой
Полезность: Нет оценки
molokov пишет:
Не правда все это, что только для IBS, работает.
Наверно вы плохо капаете.

Gobur пишет:

по комментам спецов по ядру - в SECADMINE зашита проверка на то кто запускает, т.е. токо IBS может - так что даже если дать права - не прокатывает. Вроде как доп.защита от таких копателей)

может плохо - но когда под юзером запускаем операции SECADMIN вываливается ошибка, под IBS то же самое работает на ура. Придумали пока временный вариант запускать sql-plus в клиент- ксрипте, в котором под IBS все делается - промаргивает быстро, пока всех устраивает. Если раскопаем, переделаем - пока не понятно куда копнуть, будем благодаарны за наводку )
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеСр Янв 23, 2013 05:55    Ответить с цитатой
Полезность: 1
Gobur пишет:

по комментам спецов по ядру - в SECADMINE зашита проверка на то кто запускает, т.е. токо IBS может - так что даже если дать права - не прокатывает. Вроде как доп.защита от таких копателей)

Могу предположить, что там проверка на присутствие в группах ADMIN и PICK.
То есть можно дать права группы "продвинутых" пользователей, но на сам АРМ прав не давать, должно всё получиться.

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

Ну или можно из-под пользователя запускать JOB от имени IBS и выполнять его немедленно.
Gobur
Профи


Вступление в Клуб: 06.11.2012
СообщениеСр Янв 23, 2013 12:32    Ответить с цитатой
Полезность: Нет оценки
Random пишет:
Gobur пишет:

по комментам спецов по ядру - в SECADMINE зашита проверка на то кто запускает, т.е. токо IBS может - так что даже если дать права - не прокатывает. Вроде как доп.защита от таких копателей)

Могу предположить, что там проверка на присутствие в группах ADMIN и PICK.
То есть можно дать права группы "продвинутых" пользователей, но на сам АРМ прав не давать, должно всё получиться.

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

Ну или можно из-под пользователя запускать JOB от имени IBS и выполнять его немедленно.


последний вариант больше нравится..Но не совсем понятно как это сделать - нет опыта. Спасибо

Есть ли примеры запуска джоба из операции, который потом останавл. Что будет если несколько пользователей одновременно попытаются его запустить (в нем каждый раз должен исполняться меняющийся скрипт - меняется имя пользователя)?
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеПн Янв 28, 2013 16:56    Ответить с цитатой
Полезность: Нет оценки
Gobur пишет:
Random пишет:

Ну или можно из-под пользователя запускать JOB от имени IBS и выполнять его немедленно.


последний вариант больше нравится..Но не совсем понятно как это сделать - нет опыта. Спасибо

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


Вот тут идёт похожее обсуждение: http://cftclub.ru/viewtopic.php?t=1366

Однако как job запустить от имени другого пользователя Oracle не объясняется.
Должно быть, я вообще поспешил с такого рода идеей, не ознакомившись с функционалом dbms_job.

Однако попробую реабилитироваться:
Предположим, что имеется табличка, состоящая из команд, которые необходимо выполнить из-под пользователя IBS.
Предположим, есть задание, запущенное из-под пользователя IBS, которое 1 раз в несколько секунд смотрит в эту табличку и если что-то находит, то выполняет (из-под себя, то есть из-под IBS), а из таблички удаляет.

таким образом, получается, что некий пользователь user может сделать вставку команды в табличку, после чего в цикле начинать из этой таблички читать, и как только результат чтения станет равным 0, операция пойдёт выполняться дальше.

PS: Только что накопал существование DBMS_IJOB, но ещё не работал с ней.
BoBr
Участник со стажем


Вступление в Клуб: 30.01.2013
СообщениеЧт Апр 04, 2013 10:29   Re: Смена группы доступа программным путем Ответить с цитатой
Полезность: Нет оценки
molokov пишет:
этого будеть достаточно чтобы самому организовать то что нужно.

SecAdmin.Insert_User_To_Group(логин пользователя,'короткое имя группы');

SecAdmin.Delete_User_From_Group(логин пользователя,'короткое имя группы');

узнать какие права есть у пользователя :
SELECT USERNAME R
FROM ibs.subj_equal su, ibs.users u
WHERE su.subj_id <> su.equal_id
AND su.subj_id = su.owner_id
AND su.equal_id = u.USERNAME
AND su.subj_id = 'имя пользователя'


Gobur пишет:
Возможно ли вообще такое? .


А у кого-нибудь получилось давать права через пакет Oracle ??
Беляш
Участник


Вступление в Клуб: 30.04.2014
СообщениеСр Апр 30, 2014 07:47    Ответить с цитатой
Полезность: Нет оценки
попробовал
SecAdmin.Insert_User_To_Group(логин пользователя,'короткое имя группы');
- работает.

и такой вопрос - как посмотреть какие группы есть у конкретного пользователя?
Ezhik
Участник со стажем


Вступление в Клуб: 17.04.2009
СообщениеСр Апр 30, 2014 08:52    Ответить с цитатой
Полезность: 1
Беляш пишет:
и такой вопрос - как посмотреть какие группы есть у конкретного пользователя?

Есть операция ::[USER].[OP_UA_USER]
Беляш
Участник


Вступление в Клуб: 30.04.2014
СообщениеСр Май 07, 2014 07:15    Ответить с цитатой
Полезность: Нет оценки
Подскажите, как можно перенести подразделение от одного пользователя к другому в Администраторе доступа? Команда:

this.[DEPART]:=P_USER.[DEPART];

переносит подразделение в Навигаторе, а в администраторе доступа оно остается прежним.
Ezhik
Участник со стажем


Вступление в Клуб: 17.04.2009
СообщениеСр Май 07, 2014 16:14    Ответить с цитатой
Полезность: Нет оценки
Беляш пишет:
Подскажите, как можно перенести подразделение от одного пользователя к другому в Администраторе доступа? Команда:

this.[DEPART]:=P_USER.[DEPART];

переносит подразделение в Навигаторе, а в администраторе доступа оно остается прежним.
Возможно поможет...
Из документации:
Цитата:
Синхронизация с прикладными подразделениями.
Т.к. в системе безопасности задается однозначное соответствие между подразделениями безопасности и прикладными подразделениями, необходимо синхронизировать принадлежность пользователя системы безопасности и прикладного пользователя соответствующим подразделениям.

Т.е. при перемещении пользователя между подразделениями безопасности из АРМ uadmin, нужно изменить также прикладное подразделение. Для этого служит настройка SET_USER_DEPART. И наоборот, если прикладная логика изменяет подразделение пользователя, то она должна оповестить об этом систему безопасности. Это делается через вызов SecAdmin.ChangeUserDomain.

Настройка SET_USER_DEPART содержит полностью квалифицированное pl\sql-имя операции для смены подразделения. У этой операции должно быть три параметра:
1. user_id number – идентификатор пользователя (ref [USER]).
2. src_dept_id varchar2 – идентификатор исходного подразделения (ref [DEPART]).
3. dst_dept_id varchar2 – идентификатор подразделения назначения (ref [DEPART]).

Вызов этой операции происходит так:
begin <SET_USER_DEPART>(:USER_ID, null, :DEPART_ID); rtl.lock_clear(true); end;
Т.е. src_dept_id всегда null, т.к.:
1. Его можно определить, зная user_id
2. В общем случае пользовательское подразделение в системе безопасности может не совпадать с реальным подразделением, в котором находится пользователь.
Эта операция не должна звать SecAdmin.ChangeUserDomain, чтобы избежать рекурсии (возможно бесконечной).

Для оповещения системы безопасности о смене подразделения пользователя, в прикладной логике нужно звать следующую процедуру из пакета SecAdmin:
procedure ChangeUserDomain(p_user varchar2, p_domain varchar2, p_exec_date date := null, p_change_dept varchar2 := '1');
В p_exec_date нужно передавать null, чтобы смена подразделения происходила немедленно. В p_change_dept нужно передавать ‘0’, чтобы избежать бесконечной рекурсии (этот параметр определяет, нужно ли вызывать операцию из SET_USER_DEPART). В p_user передавать реквизит [USER].[USERNAME], а в p_domain передавать значение, которое вернет для [USER].[DEPART] следующая функция пакета SecAdmin:
function AppIdToDomain(p_app_id varchar2) return varchar2;
Беляш
Участник


Вступление в Клуб: 30.04.2014
СообщениеПт Июн 27, 2014 13:13    Ответить с цитатой
Полезность: Нет оценки
подскажите пожалуйста - можно ли где нибудь в документации посмотреть синтаксис команды Secadmin (интересуют реквизиты и операции)
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеПт Июн 27, 2014 13:49    Ответить с цитатой
Полезность: Нет оценки
Беляш пишет:
подскажите пожалуйста - можно ли где нибудь в документации посмотреть синтаксис команды Secadmin (интересуют реквизиты и операции)

В поставке ТЯ есть папка Doc, в ней файл access.doc, там и находится описание пакета secadmin
Беляш
Участник


Вступление в Клуб: 30.04.2014
СообщениеСр Июл 02, 2014 12:25    Ответить с цитатой
Полезность: Нет оценки
devor пишет:
Беляш пишет:
подскажите пожалуйста - можно ли где нибудь в документации посмотреть синтаксис команды Secadmin (интересуют реквизиты и операции)

В поставке ТЯ есть папка Doc, в ней файл access.doc, там и находится описание пакета secadmin


увы, но там нету. Я уже смотрел. Хотелось бы такое сделать:
(цитата из того самого access.doc)
Цитата:
при перемещении пользователя между подразделениями безопасности из АРМ uadmin, нужно изменить также прикладное подразделение. Для этого служит настройка SET_USER_DEPART.


а чтоб это сделать надо сначала прочитать подразделение, которое в Администраторе доступа и записать его в Навигатор (обратная процедура, кстати, делается легко. А вот именно эта сторона вызывает затруднение).
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеЧт Июл 03, 2014 08:01    Ответить с цитатой
Полезность: Нет оценки
Беляш пишет:

а чтоб это сделать надо сначала прочитать подразделение, которое в Администраторе доступа


Код:

function SecAdmin.GETUSERDOMAIN(P_USER VARCHAR2);


или напрямую

Код:

select sde.DOMAIN_ID from SEC_DOMAIN_ENTRIES sde where sde.USER_ID = 'MyUserId'
Беляш
Участник


Вступление в Клуб: 30.04.2014
СообщениеЧт Июл 03, 2014 11:33    Ответить с цитатой
Полезность: Нет оценки
devor пишет:
Беляш пишет:

а чтоб это сделать надо сначала прочитать подразделение, которое в Администраторе доступа


Код:

function SecAdmin.GETUSERDOMAIN(P_USER VARCHAR2);


или напрямую

Код:

select sde.DOMAIN_ID from SEC_DOMAIN_ENTRIES sde where sde.USER_ID = 'MyUserId'


огромное спасибо, всё получилось
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Администрирование доступа и журналирование Часовой пояс: GMT + 3
На страницу Пред.  1, 2
Страница 2 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru