oracle - belirli tablolara erişimi olan kullanıcıları listeler


28

Bunun daha önce sorulduğundan eminim, ancak aşağıdakilerle ilgili ayrıntıları bulamıyorum.

Aşağıdakileri yanıtlayabilecek bir tür önceden hazırlanmış masa var mı (dba_tab_privs kullandım ancak sınırlıdır ve tüm ihtiyaçlarımı karşılamıyor), eğer kimsenin aşağıdakileri yanıtlamak için bazı soruları yoksa?

  1. Belirli bir rol atanmış olan tüm kullanıcıları listele?
  2. Bir kullanıcıya verilen tüm rolleri listele?
  3. Bir kullanıcıya verilen tüm ayrıcalıkların listesi?
  4. Hangi tabloların belirli bir rol için SELECT erişimi sağladığını listele
  5. Bir kullanıcının SELECT olabileceği tüm tabloları listele?
  6. Belirli bir masada SEÇENEBİLEN tüm kullanıcıları listele Bu sorgunun sonucu aynı zamanda kullanıcının bu erişim hakkına sahip olduğu rolü veya doğrudan bir hibe olup olmadığını göstermelidir.

Yanıtlar:


33

Belirli bir rol atanmış tüm kullanıcıları listele

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

Bir kullanıcıya verilen tüm rolleri listele

-- Change 'PHIL@ to the required user
select * from dba_role_privs where grantee = 'PHIL';

Bir kullanıcıya verilen tüm ayrıcalıkları listele

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;

Not: http://www.adp-gmbh.ch/ora/misc/recursively_list_privilege.html adresinden alınmıştır.

Hangi tabloların belirli bir rol için SELECT erişimi sağladığını listele

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

Bir kullanıcının SELECT olabileceği tüm tabloları listele?

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

Belirli bir masada SEÇENEBİLEN tüm kullanıcıları listele Bu sorgunun sonucu aynı zamanda kullanıcının bu erişim hakkına sahip olduğu rolü veya doğrudan bir hibe olup olmadığını göstermelidir.

-- 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' ;

Bu iyi bir başlangıçtır, ancak # 3 nesne ayrıcalıklarını içermez, # 5 SELECTbir rol nedeniyle kullanılabilecek ayrıcalıkları içermez ve # 6 eksik.
Leigh Riffel

Opps, biraz CONNECT BY gerek .. # 6 PRIOR
Philᵀᴹ

5 numaralı cevabınız, kullanıcının atadıkları bir rolle seçebilecekleri tablolar içeriyor mu?
dgf

Kullanıcı başka bir rol verilen bir rolden ayrıcalık alırsa bu işe yarar mı?
jpmc26

2

Kullanmak istediğiniz bilgiyi almanın birçok yolu vardır:

veri sözlüğü görünümleri

kehanette mevcut.

Yalnızca görünümleri sorgulayabilir ve ayrıntıları alabilirsiniz: Örneğin:

DBA_COL_PRIVS arasından * seçimini yapın;

ALL_COL_PRIVS arasından * seçimini yapın;

USER_COL_PRIVS arasından * seçiniz;

Bu size söyler:

DBA görünümü, veritabanındaki tüm sütun nesnesi hibelerini açıklar. ALL görünümü, geçerli kullanıcının veya PUBLIC'in nesne sahibi, öğütücü veya alıcı olan tüm sütun nesnesi hibelerini açıklar. KULLANICI görünümü, geçerli kullanıcının nesne sahibi, büyük sahibi veya yetki vereni olduğu sütun nesnesi hibelerini açıklar.

Daha fazla bilgi için bunu kontrol edin

Bu yardımcı olur umarım.


1
Bu soruya cevap vermiyor gibi görünüyor: bir DBA belirli bir keyfi kullanıcının neye erişebileceğini nasıl öğrenebilir?
Tüm İşlemlerden Jon,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.