Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / triiger after log on / 18 сообщений из 18, страница 1 из 1
18.08.2016, 12:30:56
    #39293840
Cydia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
triiger after log on
собсна нарисовал триггер, который должен ругаться, но увы, raise не хочет работать,где допустил ошибку?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create or replace trigger logon
  after logon on colvir.database
declare
  p_session_user varchar2(10);
  p_ip_address varchar2(15);
begin
  p_session_user := upper(sys_context('userenv', 'session_user'));
  if p_session_user = 'USR_TEST' then
    raise_application_error(-20002, 'LOGON ERROR', true);
  end if;
end;
...
Рейтинг: 0 / 0
18.08.2016, 12:38:48
    #39293849
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
triiger after log on
Cydiaдолжен ругаться, но увы, raise не хочет работатьRTFM/STFF privilege ADMINISTER DATABASE TRIGGER
...
Рейтинг: 0 / 0
18.08.2016, 12:40:06
    #39293851
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
triiger after log on
А чем схема от юзера отличается, знаете?

У вас триггер на логон в схему colvir.database
а проверяете юзера 'USR_TEST'
...
Рейтинг: 0 / 0
18.08.2016, 12:43:56
    #39293852
Cydia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
triiger after log on
Fogel,

ничем, этот юзер в этой схеме есть.
...
Рейтинг: 0 / 0
18.08.2016, 12:45:59
    #39293855
Cydia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
triiger after log on
Elic,

Код: plsql
1.
grant administer database trigger to USR_TEST;


не помогло
...
Рейтинг: 0 / 0
18.08.2016, 13:16:10
    #39293878
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
triiger after log on
Cydia этот юзер в этой схеме есть.
...
Рейтинг: 0 / 0
18.08.2016, 13:37:04
    #39293890
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
triiger after log on
CydiaFogel,

ничем, этот юзер в этой схеме есть.

...
Рейтинг: 0 / 0
18.08.2016, 13:50:42
    #39293903
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
triiger after log on
а в чём разница между схемой, экземпляром БД и юзером тоже знаете?
а триггер логон вешается на старт БД или на коннект к схеме, тоже знаете?
...
Рейтинг: 0 / 0
18.08.2016, 14:37:31
    #39293961
Cydia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
triiger after log on
Fogel,

триггер логон вешается на коннект к схеме,т.е. моя задача отсечь определенный круг пользователей.
подскажите, что не так сделано в моем тригере?
...
Рейтинг: 0 / 0
18.08.2016, 14:45:36
    #39293969
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
triiger after log on
Cydiaмоя задача отсечь определенный круг пользователей.

Код: plsql
1.
revoke create session from USR_TEST
...
Рейтинг: 0 / 0
18.08.2016, 14:46:05
    #39293970
trace.log
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
triiger after log on
...
Рейтинг: 0 / 0
18.08.2016, 14:50:44
    #39293975
Cydia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
triiger after log on
Fogel,
не все так просто, забыл еще добавить, что с определенных IP машин доступ разрешен., поэтому raise полюбому тут нужен
...
Рейтинг: 0 / 0
18.08.2016, 15:11:52
    #39293996
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
triiger after log on
CydiaElic,

Код: plsql
1.
grant administer database trigger to USR_TEST;


не помогло

Ты бы доку покурил перед тем как сo скал прыгать. С точностью до наоборот. Elic намекнул на то что тот у кого есть administer database trigger - тот прoходит без пропуска.

SY.
...
Рейтинг: 0 / 0
18.08.2016, 15:23:44
    #39294003
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
triiger after log on
CydiaFogel,
не все так просто, забыл еще добавить, что с определенных IP машин доступ разрешен., поэтому raise полюбому тут нужен
а зачем в таком случае райз?!
вам же надо знать, кто пытается пробраться? ну а вдруг злоумышленники/недобросовестные ддосить начнут? чтобы знать, кто и когда и связать причину со следствием.
я бы реализовал следующим образом: при логоне сохранял необходимые данные из syscontext в табличку аудита, сверял HOST с разрешёнными и делал принудительный disconnect сессии, кому нельзя.
...
Рейтинг: 0 / 0
19.08.2016, 13:06:24
    #39294540
Cydia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
triiger after log on
Fogel,
к сожалению, этот вариант не сработал

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CREATE OR REPLACE TRIGGER my_after_logon
AFTER LOGON ON DATABASE
DECLARE
   usernm VARCHAR2(50);
   sid    NUMBER;
   serial NUMBER;
   v_JobNum NUMBER;
   pragma autonomous_transaction;
BEGIN
 
   SELECT sid,serial# INTO sid,serial
      FROM v$session WHERE
audsid=SYS_CONTEXT('userenv','sessionid');
 
    IF usernm='USR_TEST' THEN
  dbms_job.submit(v_JobNum
        ,'begin
            execute immediate
             (''alter system kill session '''''||sid||''''''');
         end;'
     );
     commit;
 END; 
...
Рейтинг: 0 / 0
19.08.2016, 14:04:28
    #39294602
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
triiger after log on
CydiaFogel,
к сожалению, этот вариант не сработал

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CREATE OR REPLACE TRIGGER my_after_logon
AFTER LOGON ON DATABASE
DECLARE
   usernm VARCHAR2(50);
   sid    NUMBER;
   serial NUMBER;
   v_JobNum NUMBER;
   pragma autonomous_transaction;
BEGIN
 
   SELECT sid,serial# INTO sid,serial
      FROM v$session WHERE
audsid=SYS_CONTEXT('userenv','sessionid');
 
    IF usernm='USR_TEST' THEN
  dbms_job.submit(v_JobNum
        ,'begin
            execute immediate
             (''alter system kill session '''''||sid||''''''');
         end;'
     );
     commit;
 END; 


как-то страшно всё
serial потерял и вообще много лишнего
посмотри здесь или здесь или здесь
...
Рейтинг: 0 / 0
19.08.2016, 15:37:27
    #39294674
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
triiger after log on
CydiaFogel,
к сожалению, этот вариант не сработал


Последний совет - кури доку. Почитай про триггеры и в частности про Event Attribute Functions, Event Attribute Functions for Client Event Triggers, Event Attribute Functions for Database Event Triggers и только потом ваяй. Все прекрасно работает:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
SQL> create or replace
  2    trigger after_logon
  3      after logon
  4      on database
  5      begin
  6          if ora_login_user = 'USR_TEST'
  7            then
  8              raise_application_error(-20002, 'LOGON ERROR', true);
  9          end if;
 10  end;
 11  /

Trigger created.

SQL> create user u1 identified by u1
  2  /

User created.

SQL> grant create session to u1
  2  /

Grant succeeded.

SQL> create user usr_test identified by usr_test
  2  /

User created.

SQL> grant create session to usr_test
  2  /

Grant succeeded.

SQL> connect u1@pdb1sol12/u1
Connected.
SQL> connect usr_test@pdb1sol12/usr_test
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-20002: LOGON ERROR
ORA-06512: at line 4


Warning: You are no longer connected to ORACLE.
SQL> connect scott@pdb1sol12
Enter password: *****
Connected.
SQL> grant administer database trigger to usr_test
  2  /

Grant succeeded.

SQL> connect usr_test@pdb1sol12/usr_test
Connected.
SQL> 



SY.
...
Рейтинг: 0 / 0
19.08.2016, 16:03:25
    #39294690
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
triiger after log on
Fogelа зачем в таком случае райз?!
вам же надо знать, кто пытается пробраться? ну а вдруг злоумышленники/недобросовестные ддосить начнут? чтобы знать, кто и когда и связать причину со следствием.
я бы реализовал следующим образом: при логоне сохранял необходимые данные из syscontext в табличку аудита, сверял HOST с разрешёнными и делал принудительный disconnect сессии, кому нельзя.отлуп в триггере не противоречит аудиту.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / triiger after log on / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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