it-swarm.asia

oracle - daftar pengguna dengan akses ke tabel tertentu

Saya yakin ini telah ditanyakan sebelumnya, tetapi sepertinya saya tidak dapat menemukan detail yang relevan untuk yang berikut.

Apakah ada semacam tabel pre-built yang dapat melakukan hal berikut (Saya telah menggunakan dba_tab_privs tetapi terbatas dan tidak memenuhi semua kebutuhan saya), jika tidak ada yang punya pertanyaan untuk menjawab yang berikut?

  1. Daftar semua pengguna yang telah diberi peran tertentu?
  2. Daftar semua peran yang diberikan kepada pengguna?
  3. Daftar semua hak istimewa yang diberikan kepada pengguna?
  4. Daftar tabel mana peran tertentu memberikan akses SELECT?
  5. Sebutkan semua tabel yang dapat dipilih SELECT dari pengguna?
  6. Sebutkan semua pengguna yang dapat PILIH di atas meja tertentu (baik melalui diberi peran yang relevan atau melalui hibah langsung (yaitu, pilih hibah yang dapat diubah ke joe))? Hasil dari kueri ini juga harus menunjukkan melalui peran mana pengguna memiliki akses ini atau apakah itu hibah langsung.
29
dgf

Daftar semua pengguna yang telah diberi peran tertentu

-- Change 'DBA' to the required role
select * from dba_role_privs where granted_role = 'DBA'

Sebutkan semua peran yang diberikan kepada pengguna

-- Change '[email protected] to the required user
select * from dba_role_privs where grantee = 'PHIL';

Daftar semua hak istimewa yang diberikan kepada pengguna

select
  lpad(' ', 2*level) || granted_role "User, his roles and privileges"
from
  (
  /* THE USERS */
    select 
      null     grantee, 
      username granted_role
    from 
      dba_users
    where
      username like upper('%&enter_username%')
  /* THE ROLES TO ROLES RELATIONS */ 
  union
    select 
      grantee,
      granted_role
    from
      dba_role_privs
  /* THE ROLES TO PRIVILEGE RELATIONS */ 
  union
    select
      grantee,
      privilege
    from
      dba_sys_privs
  )
start with grantee is null
connect by grantee = prior granted_role;

Catatan: Diambil dari http://www.adp-gmbh.ch/ora/misc/recursively_list_privilege.html

Daftar tabel mana peran tertentu memberikan akses SELECT?

-- Change 'DBA' to the required role.
select * from role_tab_privs where role='DBA' and privilege = 'SELECT';

Sebutkan semua tabel yang dapat dipilih oleh pengguna dari?

--Change 'PHIL' to the required user
select * from dba_tab_privs where GRANTEE ='PHIL' and privilege = 'SELECT';

Sebutkan semua pengguna yang dapat PILIH di atas meja tertentu (baik melalui diberi peran yang relevan atau melalui hibah langsung (mis. Hibah pilih pada menu atable to joe))? Hasil dari kueri ini juga harus menunjukkan melalui peran mana pengguna memiliki akses ini atau apakah itu hibah langsung.

-- Change 'TABLENAME' below
select Grantee,'Granted Through Role' as Grant_Type, role, table_name
from role_tab_privs rtp, dba_role_privs drp
where rtp.role = drp.granted_role
and table_name = 'TABLENAME' 
union
select Grantee,'Direct Grant' as Grant_type, null as role, table_name
from dba_tab_privs
where table_name = 'TABLENAME' ;
35
Philᵀᴹ

Ada banyak cara untuk mendapatkan informasi yang ingin Anda gunakan:

tampilan kamus data

hadir di Oracle.

Anda bisa menanyakan tampilan dan mengambil detailnya: Misalnya:

pilih * dari DBA_COL_PRIVS;

pilih * dari ALL_COL_PRIVS;

pilih * dari USER_COL_PRIVS;

Ini memberitahu Anda:

Tampilan DBA menjelaskan semua objek hibah kolom dalam database. SEMUA tampilan menjelaskan semua objek hibah kolom yang pengguna saat ini atau PUBLIC adalah pemilik objek, pemberi, atau penerima. Tampilan USER menguraikan hibah objek kolom yang pengguna saat ini adalah pemilik objek, pemberi, atau penerima.

Untuk info lebih lanjut, lihat ini

Semoga ini membantu.

2
Vimalnath