
Find Oracle Table And User Grants
Oracle Veritabanında bir kullanıcının bir tabloya ilişkin yetkilerini sorgulayabilmesi için öncelikle dba_XX olan tablolara select hakkının olması gerekmektedir. SYS.DBA_TAB_PRIVS view içerisinde yetkiler ile ilgili bilgiler buylunmaktadır, bu view içerisindeki kolonlar GRANTEE, OWNER, TABLE_NAME, GRANTOR ve PRIVILEGE kolonlalrıdır, aşağıda bir tablo için yetkiler sorgulanmıştır.
SELECT
*
FROM
SYS.DBA_TAB_PRIVS
WHERE
TABLE_NAME = '<TABLE_NAME>'
; Ayrıca User üzerinden hangi tablolara yetkisi var şeklinde de sorgulama yapabiliriz.
SELECT
*
FROM
SYS.DBA_TAB_PRIVS
WHERE
GRANTEE = '<USER_NAME>' Ayrıca aşağıdaki Sql ile kim kime hangi yetkiyi vermiş kimin hangi tablo üüzerinden ne yetkisi var bir matrix oklarak görebilirsiniz.
select
owner,
table_name,
grantee,
grantor,
max(case when privilege = 'SELECT' then 'X' end) sel,
max(case when privilege = 'INSERT' then 'X' end) ins,
max(case when privilege = 'UPDATE' then 'X' end) upd,
max(case when privilege = 'DELETE' then 'X' end) del,
max(case when privilege = 'ALTER' then 'X' end) alt,
max(case when privilege = 'READ' then 'X' end) rea,
max(case when privilege = 'QUERY REWRITE' then 'X' end) qrr,
max(case when privilege = 'DEBUG' then 'X' end) dbg,
max(case when privilege = 'ON COMMIT REFRESH' then 'X' end) ocr,
max(case when privilege = 'FLASHBACK' then 'X' end) flb
from
dba_tab_privs
where
owner not in ('SYS', 'SYSTEM', 'DBSNMP', 'XDB', 'WMSYS')
group by
owner,
table_name,
grantee,
grantor
order by
owner,
table_name,
grantee,
grantor;
Bir yanıt yazın