powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Можно ли создать тригер на системную таблицу
25 сообщений из 36, страница 1 из 2
Можно ли создать тригер на системную таблицу
    #39992804
Anton_bg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здраствуйте,
Пользую Firebird 2.5
Я хочу сделать вот такой тригер на таблицу RDB$USER_PRIVILEGES

Код: 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.
CREATE trigger rdb$user_privileges_aiud0 for rdb$user_privileges
active after insert or update or delete position 0
AS
begin
  /* Запис изменений в другой таблице */
  if (Inserting) then begin
    insert into "Priv_changes"
     ("DateAndTime", "Operation", "User", "Relation", "Privilege", "FieldName", "Grantor")
    values
     (current_timestamp, "Inserting",new.RDB$USER, new.RDB$RELATION_NAME, new.rdb$user, new.RDB$FIELD_NAME, new.RDB$GRANTOR);
  end
  if (Updating) then begin
    insert into "Priv_changes"
     ("DateAndTime", "Operation", "User", "Relation", "Privilege", "FieldName", "Grantor")
    values
     (current_timestamp, "Updating",new.RDB$USER, new.RDB$RELATION_NAME, new.rdb$user, new.RDB$FIELD_NAME, new.RDB$GRANTOR);
  end
  if (Deleting) then begin
    insert into "Priv_changes"
     ("DateAndTime", "Operation", "User", "Relation", "Privilege", "FieldName", "Grantor")
    values
     (current_timestamp, "Deleting",old.RDB$USER, old.RDB$RELATION_NAME, old.rdb$user, old.RDB$FIELD_NAME, old.RDB$GRANTOR);
  end

end



Прошу ваше мнение допустимо ли сделать ето?

Извините за плохой русскии
Антон
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #39992812
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton_bg,

1. Такой триггер проживёт до первого backup/restore
2. Как по мне для логирования действий администратора в 2.5 есть более инструмент Аудит
3. Не уверен что Updating хоть когда нибудь срабатывает. По идее правильней было логировать операции с привилегиями как GRANT/REVOKE
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #39992820
Anton_bg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис
Anton_bg,

1. Такой триггер проживёт до первого backup/restore
2. Как по мне для логирования действий администратора в 2.5 есть более инструмент Аудит
3. Не уверен что Updating хоть когда нибудь срабатывает. По идее правильней было логировать операции с привилегиями как GRANT/REVOKE


Я хочу сделать етот тригер для того что бы потребитель смог сделать проверку операции с привилегиями за заданный период времени с таблицы "Priv_changes", в которую тригер будет записыват изменения в привилегий.

А существует ли другой способо логировать операции с привилегиями как GRANT/REVOKE кроме Аудит?
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #39992841
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
1. Такой триггер проживёт до первого backup/restore
мой склероз нашептывает, что это правилось.
зуб не дам, но обсуждение помню.
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #39992850
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

обсуждалось. Но вот делалось ли хз, не могу найти. Помню для 3.0 разрешили индексы на системные таблицы создавать
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #39992853
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не правилось и ИМХО никогда не будет
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #39992862
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

а вот специальные триггеры на GRANT/REVOKE хотелось бы, потому что эти операции нет DDL триггеров
Я даже тикет CORE-4358 делал, но Адриано сказал, что это нельзя сделать в рамках DDL триггера. Ну пусть это будет не DDL триггер, а отдельный вид триггера
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #39992863
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr
не правилось и ИМХО никогда не будет
злые вы...
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #39992865
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

триггеры на системные таблицы это хак. Надо нормальное решение вроде специального вида триггеров.
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #39992867
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда злые, Мимопроходящий, а когда - п(р)одумавшие ...
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #39992869
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> Адриано сказал, что это нельзя сделать в рамках DDL триггера

Не наговаривай, он совсем не так сказал.
Не выиграл, а проиграл, и не машину, а 100 рублей.

МП> злые вы...

Да ладно. Все, кому надо, уже знают как с этим жить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #39992870
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
триггеры на системные таблицы это хак.
не нужно сужать горизонт глобуса до вырождения в точку
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #39992909
Anton_bg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис

триггеры на системные таблицы это хак. Надо нормальное решение вроде специального вида триггеров.


Я тоже считаю что нужно нормальное решение вроде специальных тригеров.
Аудит меня не устраивает по других причинах.
И как понимаю на этот момент другого решения кроме создание тригера на системной таблице у меня неть.
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #39992971
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Должна быть оттестирована процедура отключения этого триггера.
Бывают случаи что система "клином" становится после подобых вещей.
Да так что и DBA не может потом понять что происходит.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Можно ли создать тригер на системную таблицу
    #40135126
Anton_bg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anton_bg
Здраствуйте,
Пользую Firebird 2.5
Я хочу сделать вот такой тригер на таблицу RDB$USER_PRIVILEGES

Код: 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.
CREATE trigger rdb$user_privileges_aiud0 for rdb$user_privileges
active after insert or update or delete position 0
AS
begin
  /* Запис изменений в другой таблице */
  if (Inserting) then begin
    insert into "Priv_changes"
     ("DateAndTime", "Operation", "User", "Relation", "Privilege", "FieldName", "Grantor")
    values
     (current_timestamp, "Inserting",new.RDB$USER, new.RDB$RELATION_NAME, new.rdb$user, new.RDB$FIELD_NAME, new.RDB$GRANTOR);
  end
  if (Updating) then begin
    insert into "Priv_changes"
     ("DateAndTime", "Operation", "User", "Relation", "Privilege", "FieldName", "Grantor")
    values
     (current_timestamp, "Updating",new.RDB$USER, new.RDB$RELATION_NAME, new.rdb$user, new.RDB$FIELD_NAME, new.RDB$GRANTOR);
  end
  if (Deleting) then begin
    insert into "Priv_changes"
     ("DateAndTime", "Operation", "User", "Relation", "Privilege", "FieldName", "Grantor")
    values
     (current_timestamp, "Deleting",old.RDB$USER, old.RDB$RELATION_NAME, old.rdb$user, old.RDB$FIELD_NAME, old.RDB$GRANTOR);
  end

end



Прошу ваше мнение допустимо ли сделать ето?

Извините за плохой русскии
Антон


Тогда я работал с Firebird 2.5 и этот тригер работал.
Сейчас я пытаюс перейти на Firebird 4.0 и этот тригер невозможно создать.
Я коннектился через SYSDBA и попробовал создат этот тригер. Выходит сообщение:
no permission for ALTER access to TABLE RDB$USER_PRIVILEGES

Я не знаю как отслеживат изменения в прав потребителей
Прошу помоч. Извините за плохой рускии.
Антон
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #40135130
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton_bg,

аудитом не катит?
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #40135136
Anton_bg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

А где читать про аудит?
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #40135137
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton_bg,

в релизнотах 2.5
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #40135186
Anton_bg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,
Меня не устраивает аудит потому что он выдает много лишнего
Я сделал етот експеримент в Firebird 2.5.9
Я приготовил такой MyTrace.conf файл

<database "">
enabled true

include_filter (%)(GRANT|REVOKE)(%)
log_statement_start true
log_statement_finish true
</database>

С командное окно
fbtracemgr -se service_mgr -start -name "My trace" -u SYSDBA -p xxxxxx -config d:\temp\Mytrace.conf

и когда моя програма работает с потребителями и правами я вижу:
C:\Program Files\Firebird\Firebird_2_5\bin>fbtracemgr -se service_mgr -start -name "My trace" -u SYSDBA -p хххххх -config d:\temp\Mytrace.conf
Trace session ID 4 started
2022-02-18T15:08:29.0780 (3624:0000000003A199F0) TRACE_INIT
SESSION_4 My trace


2022-02-18T15:08:29.0780 (3624:0000000003A199F0) EXECUTE_STATEMENT_START
D:\FB_DB\PROTEUS.FDB (ATT_89, SYSDBA:NONE, WIN1251, TCPv4:127.0.0.1/49869)
D:\FBApplication\Programs\Accounting.exe:9884
(TRA_3435, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)

-------------------------------------------------------------------------------
grant ACCOUNTANT to "ANTON"; (отдана роля ACCOUNTANT потребителю ANTON)


2022-02-18T15:08:49.3260 (3624:0000000003A199F0) EXECUTE_STATEMENT_START
D:\FB_DB\PROTEUS.FDB (ATT_89, SYSDBA:NONE, WIN1251, TCPv4:127.0.0.1/49869)
D:\FBApplication\Programs\Accounting.exe:9884
(TRA_3436, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)

-------------------------------------------------------------------------------
revoke ACCOUNTANT from "ANTON"; (отдалена роля ACCOUNTANT с потребителя ANTON)

(лишний)
2022-02-18T15:08:54.4900 (3624:0000000003A199F0) TRACE_FINI
SESSION_4 My trace

(лишний)
2022-02-18T15:08:54.5060 (3624:0000000003A1AD10) TRACE_INIT
SESSION_4 My trace

(лишний)
2022-02-18T15:08:54.5060 (3624:0000000003A1AD10) TRACE_FINI
SESSION_4 My trace

(лишний, програма составляет перечень прав)
2022-02-18T15:09:13.6280 (3624:0000000003A1C508) EXECUTE_STATEMENT_START
D:\FB_DB\PROTEUS.FDB (ATT_90, ADMIN:NONE, WIN1251, TCPv4:127.0.0.1/49892)
D:\FBApplication\Programs\Accounting.exe:9884
(TRA_3440, READ_COMMITTED | REC_VERSION | NOWAIT | READ_ONLY)

Statement 148:
-------------------------------------------------------------------------------
SELECT u.RDB$USER, u.RDB$RELATION_NAME, u.RDB$GRANTOR from RDB$USER_PRIVILEGES u WHERE (u.RDB$RELATION_NAME = ? ) and (u.RDB$USER = Upper(? ))

param0 = varchar(31), "ACCOUNTANT"
param1 = varchar(31), "ANTON"

(лишний, програма составляет перечень прав)
2022-02-18T15:09:13.6280 (3624:0000000003A1C508) EXECUTE_STATEMENT_START
D:\FB_DB\PROTEUS.FDB (ATT_90, ADMIN:NONE, WIN1251, TCPv4:127.0.0.1/49892)
D:\FBApplication\Programs\Accounting.exe:9884
(TRA_3440, READ_COMMITTED | REC_VERSION | NOWAIT | READ_ONLY)

Statement 150:
-------------------------------------------------------------------------------
SELECT u.RDB$USER, u.RDB$RELATION_NAME, u.RDB$GRANTOR from RDB$USER_PRIVILEGES u WHERE (u.RDB$RELATION_NAME = ? ) and (u.RDB$USER = Upper(? ))


param0 = varchar(31), "ASSETSACCOUNTANT"
param1 = varchar(31), "ANTON"

И так далее много лишнего.

И по той причине аудит меня не устраивает
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #40135192
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton_bg,

1. Логирование событий старта и финиша трейса можно отключить
2. Фильтр настрой так чтобы он слово GRANTOR не хватал

остальное можно текстовыми процессорами обработать
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #40135193
Anton_bg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис
Anton_bg,

1. Логирование событий старта и финиша трейса можно отключить
2. Фильтр настрой так чтобы он слово GRANTOR не хватал

остальное можно текстовыми процессорами обработать


Помогите пожалуста
Как отключить логирование событий старта и финиша трейса
Как настроит фильтр так чтобы он слово GRANTOR не хватал
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #40135205
Anton_bg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис
Anton_bg,

1. Логирование событий старта и финиша трейса можно отключить
2. Фильтр настрой так чтобы он слово GRANTOR не хватал

остальное можно текстовыми процессорами обработать


Я настроил фильтр
exclude_filter %(GRANTOR)%

и так решил вторую задачу

Попытка настроит фильтр так
exclude_filter %(GRANTOR|TRACE_FINI|TRACE_INIT)%
не отключило событий старта и финиша трейса

И так я не знаю как отключить логирование событий старта и финиша трейса
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #40135207
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочитать fbtrace.conf и увидеть там
Код: plaintext
1.
	# Put trace session init and finish messages
	#log_initfini true
реально mission impossible?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #40135210
Anton_bg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Прочитать fbtrace.conf и увидеть там
Код: plaintext
1.
	# Put trace session init and finish messages
	#log_initfini true
реально mission impossible?..


Прости, не увидел

Спасибо
...
Рейтинг: 0 / 0
Можно ли создать тригер на системную таблицу
    #40135440
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton_bg,

когда речь шла про 2.5, было понятно.
Но в 3.0 и 4.0 есть DDL triggers. См.
http://www.ibase.ru/files/firebird/Firebird3_SQL_features.pdf
со страницы 60.
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Можно ли создать тригер на системную таблицу
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (38): Анонимы (36), Bing Bot 1 мин., Yandex Bot 2 мин.
x
x
Закрыть


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