Oracle データベースで行レベルのセキュリティ述語をデバッグする際のヒントを探しています。これらの述語は、いくつかの概念を使用して、現在のユーザーがレコードを表示できるかどうかを判断します。
- 現在のユーザーの Oracle ユーザー名
- 現在のユーザーに割り当てられた Oracle ロール
- 1 つ以上のテーブル内のレコードに対する現在のユーザーの所属
特定のユーザーが見ることができるものを実際に見ることをシミュレートする良い方法がわからないため、実際のデータでこの種のものをデバッグするのに問題があります。ということで、ヒント募集中です。この種のもののための良い基本的なフレームワークはありますか?
以下は、私の述語の 1 つの例です。
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'' ) )';