Мне нужны советы по отладке некоторых моих предикатов безопасности на уровне строк в базе данных Oracle.Эти предикаты используют несколько понятий, чтобы определить, может ли текущий пользователь видеть запись:
- имя пользователя Oracle текущего пользователя
- роли Oracle, назначенные текущему пользователю
- принадлежность текущего пользователяс записью в одной или нескольких таблицах
У меня проблемы с отладкой такого рода вещей на реальных данных, потому что я не могу придумать хороший способ имитации реального наблюдения того, что может видеть конкретный пользователь,Итак, я ищу советы.Есть ли хорошая базовая структура для такого рода вещей?
Вот пример одного из моих предикатов:
predicate := 'project_id in (' ||
'(select upr.projectid project_id ' ||
'from chemreg.usergroups_projects_vu upr, ' ||
' chemreg.usergroups_personnel_vu upe, ' ||
' chemreg.personnel pe ' ||
'where upr.usergroupid = upe.usergroup_id ' ||
' and upe.personnel_id = pe.person_id ' ||
' and upper(pe.username) = USER) ' ||
'union ' ||
'(select project_id from chemreg.project ' ||
'where active = ''Y'' and private = ''N'' ) )';